diff --git a/.coverage b/.coverage new file mode 100644 index 00000000..76a6dc1b Binary files /dev/null and b/.coverage differ diff --git a/.coveragerc b/.coveragerc new file mode 100644 index 00000000..da8cb0fa --- /dev/null +++ b/.coveragerc @@ -0,0 +1,9 @@ +[run] +branch = True + +# skip coverage testing for external source files +omit = src/umfile_utils/_version.py + +[html] +title = Coverage report: umfile_utils +directory = coverage_html diff --git a/.github/workflows/ unit_testing_umfile_utils.yml b/.github/workflows/ unit_testing_umfile_utils.yml new file mode 100644 index 00000000..77405286 --- /dev/null +++ b/.github/workflows/ unit_testing_umfile_utils.yml @@ -0,0 +1,45 @@ +name: CI + +on: + push: + branches: main + pull_request: + branches: main + workflow_dispatch: + +jobs: + + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.10", "3.11", "3.12"] + + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Setup conda environment + uses: conda-incubator/setup-miniconda@v3 + with: + miniconda-version: "latest" + python-version: ${{ matrix.python-version }} + environment-file: environment-dev.yml + auto-activate-base: false + activate-environment: umfile-utils-dev + auto-update-conda: false + show-channel-urls: true + + - name: Install source + shell: bash -l {0} + run: python -m pip install --no-deps --no-build-isolation -e . + + - name: List installed packages + shell: bash -l {0} + run: conda list + + - name: Run tests + shell: bash -l {0} + run: python -m pytest --cov=src --cov-report=html -s tests + diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..5ee342de --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +**/__pycache__/ +*.pyc +.hypothesis/ +.*_cache/ +.vscode/ +.DS_Store +.idea +.coverage +*~ +*.egg-info +coverage_html +*.code-workspace diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..261eeb9e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/environment-dev.yml b/environment-dev.yml new file mode 100644 index 00000000..4f34cb7b --- /dev/null +++ b/environment-dev.yml @@ -0,0 +1,18 @@ +name: umfile-utils-dev +channels: + - accessnri + - conda-forge + - coecms + - nodefaults +dependencies: + - python >=3.10 + - pytest + - xarray + - mule + - numpy < 2 + - versioneer + - hypothesis + - ipykernel + - pytest-cov + - pip + diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..a59f7ece --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "umfile-utils" +dynamic = ["version"] +authors = [ + {name = "Martin Dix", email="martin.dix@anu.edu.au"}, + {name = "Lindsey Oberhelman", email="lindsey.oberhelman@anu.edu.au"}, + {name = "Davide Marchegiani", email="davide.marchegiani@anu.edu.au"}, +] +description = "Collection of tools for UM fieldsfiles." +license = { file = "LICENSE" } +keywords = ["UM", "UM utilities", "UM fields files", "umfile_utils"] +requires-python = ">=3.10" +dependencies = [ + "mule", + "numpy <2", + "versioneer", +] + +[project.urls] +Repository = "https://github.com/ACCESS-NRI/umfile_utils" + +[build-system] +build-backend = "setuptools.build_meta" +requires = [ + "setuptools>64", + "versioneer[toml]" +] + +[tool.setuptools.packages.find] +where = ["src"] +namespaces = false + +[tool.versioneer] +VCS = "git" +style = "pep440" +versionfile_source = "src/umfile_utils/_version.py" +versionfile_build = "umfile_utils/_version.py" +tag_prefix = "" +parentdir_prefix = "umfile-utils-" + +[tool.pytest.ini_options] +pythonpath = "src" +addopts = "--cov=src --cov-report=term-missing" \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 00000000..d14fa5b4 --- /dev/null +++ b/setup.py @@ -0,0 +1,7 @@ +import versioneer +from setuptools import setup + +setup( + version=versioneer.get_version(), + cmdclass=versioneer.get_cmdclass(), +) diff --git a/src/GLOBE30_patch_aus.py b/src/GLOBE30_patch_aus.py deleted file mode 100644 index 38b195f4..00000000 --- a/src/GLOBE30_patch_aus.py +++ /dev/null @@ -1,65 +0,0 @@ -# Replace the Australian part of the GLOBE30 data with data from -# aus_dem_9s (averaged to same 30 sec resolution) -# Note that this modifies the file in place - -# This file just has a single variable with code 0 - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * -import cdms2 -from cdms2 import MV2 - -ifile = "GLOBE30_aus.orog" -ncfile = "aus_dem_30s.nc" -ncvarname = "height" - -d = cdms2.open(ncfile) -ncvar = d.variables[ncvarname] - -f = umfile.UMFile(ifile, "r+") - -# Start of data -dstart = f.fixhd[FH_DataStart] - -# Orography uses zero over oceans rather than missing value -arr = MV2.array(ncvar[:]) -MV2.set_fill_value(arr,0) -arr = MV2.filled(arr) - -# GLOBE30 goes starts at 0E, 90N, resolution 1/120th -# aus_dem also N to S -lat = ncvar.getLatitude() -lon = ncvar.getLongitude() -lat0 = lat[0] -lon0 = lon[0] -ioff = int(round(lon[0]*120)) -joff = int(round((90-lat0)*120)) -j12s = int(round((90+12)*120)) -i128e = 128*120 -nlat = len(lat) -nlon = len(lon) - -print "JOFF", joff, j12s - -# Loop over all the fields -kout = 0 -kount = dstart-1 # dstart is index rather than offset -k = 0 # Single field -a = f.readfld(k) -print "SHAPES", a.shape, a[joff:joff+nlat,ioff:ioff+nlon].shape, arr.shape -# For first part of array, to 12 S, include only a region -# from 128 to 144E so only Australia gets changed -nregion = j12s - joff -lonstart = i128e - ioff -print "SHAPES", a[joff:j12s,i128e:i128e+1920].shape, arr[:nregion,lonstart:lonstart+1920].shape -a[joff:j12s,i128e:i128e+1920] = arr[:nregion,lonstart:lonstart+1920] -print "SHAPES", a[j12s:joff+nlat,ioff:ioff+nlon].shape, arr[nregion:].shape -a[j12s:joff+nlat,ioff:ioff+nlon] = arr[nregion:] - -f.writefld(a,k) - -f.close() diff --git a/src/access_landmask.py b/src/access_landmask.py deleted file mode 100644 index 8190b178..00000000 --- a/src/access_landmask.py +++ /dev/null @@ -1,65 +0,0 @@ -# Set up a land mask file for access -# Ancillary mask file qrparm.mask at appropriate resolution must already exist. -# Also qrparm.landfrac -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * -import cdms2 - -d = cdms2.open('um_n96_landseamask_gice2n96.nc') -ncvar = d('umland',squeeze=1).filled() -mask = np.where(ncvar<0.01,0,1).astype(np.int64) -frac = np.where(ncvar<0.01,0,ncvar).astype(np.float64) -print "MASK", mask.shape - -f = umfile.UMFile('qrparm.mask', "r+") -f.readheader() -f.readlookup() - -varcode = 30 - -# Loop over all the fields -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] == varcode: - print "Replacing", k, ilookup[ITEM_CODE] - f.wordseek(lbegin) - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - a = f.readfld(k) - a[:] = mask[:] - f.writefld(a,k) - -f.close() - -f = umfile.UMFile('qrparm.landfrac', "r+") -f.readheader() -f.readlookup() - -varcode = 505 - -# Loop over all the fields -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] == varcode: - print "Replacing", k, ilookup[ITEM_CODE] - # f.wordseek(lbegin) - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - a = f.readfld(k) - print "A", a.min(), a.max() - a.shape = (nrows,npts) - print "SHAPES", a.shape, frac.shape - a[:] = frac[:] - f.writefld(a,k) - -f.close() diff --git a/src/add_fields_to_dump.py b/src/add_fields_to_dump.py deleted file mode 100644 index 21f56836..00000000 --- a/src/add_fields_to_dump.py +++ /dev/null @@ -1,52 +0,0 @@ -# Add fields to a dump file to allow warm restart with extra -# diagnostics. Uses a list of pairs of stashcodes, (present, new) -# where fields with the "present" stashcode are copied to the "new" -# stashcode and zeroed. - -import mule -from operator import attrgetter -from mule.operators import ScaleFactorOperator -import sys - -zero_operator = ScaleFactorOperator(0.0) - -ff = mule.DumpFile.from_file(sys.argv[1]) - -# codes = {1207:1202, 3287:3314} -# For Roger's AMIP run new fields are -newlist = [34102, 34104, 34105, 34106, 34108, 34109, 34110, 34111, - 34114, 34115, 34116, 34117, 34120, 34121, 34126] -# and can all be taken from 34072 -codes = {34072: newlist} - -newflds = [] -for fld in ff.fields: - # lbtim > 10 restricts this to diagnostic variables - if fld.lbuser4 in codes and fld.lbtim > 10: - if isinstance(codes[fld.lbuser4],list): - tmplist = codes[fld.lbuser4] - else: - tmplist = [codes[fld.lbuser4]] - for code in tmplist: - tmp = fld.copy() - tmp.lbuser4 = code - newflds.append(zero_operator(tmp)) - -# To keep proper ordering of the dump file take all the prognostic -# fields with lbtim < 10 first - -ff_out = ff.copy() -for k, fld in enumerate(ff.fields): - if fld.lbtim < 10: - ff_out.fields.append(fld) - else: - break - -# Assume sort is stable for the rest -remaining = ff.fields[k:] + newflds - -remaining.sort(key=attrgetter('lbuser4')) - -ff_out.fields += remaining - -ff_out.to_file(sys.argv[2]) diff --git a/src/ancil2netcdf.py b/src/ancil2netcdf.py deleted file mode 100644 index 46f1dd09..00000000 --- a/src/ancil2netcdf.py +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/env python - -import iris, numpy as np, datetime, sys -import stashvar_cmip6 as stashvar -from iris.coords import CellMethod -from netCDF4 import default_fillvals - -def fix_latlon_coord(cube): - def _add_coord_bounds(coord): - if len(coord.points) > 1: - if not coord.has_bounds(): - coord.guess_bounds() - else: - # For length 1, assume it's global. guess_bounds doesn't work in this case - if coord.name() == 'latitude': - if not coord.has_bounds(): - coord.bounds = np.array([[-90.,90.]]) - elif coord.name() == 'longitude': - if not coord.has_bounds(): - coord.bounds = np.array([[0.,360.]]) - - lat = cube.coord('latitude') - lat.var_name = 'lat' - _add_coord_bounds(lat) - lon = cube.coord('longitude') - lon.var_name = 'lon' - _add_coord_bounds(lon) - -def cubewrite(cube, sman, verbose): - - if cube.data.dtype == 'float64': - cube.data = cube.data.astype(np.float32) - elif cube.data.dtype == 'int64': - cube.data = cube.data.astype(np.int32) - - # Set the missing_value attribute. Use an array to force the type to match - # the data type - if cube.data.dtype.kind == 'f': - fill_value = 1.e20 - else: - # Use netCDF defaults - fill_value = default_fillvals['%s%1d' % (cube.data.dtype.kind, cube.data.dtype.itemsize)] - - cube.attributes['missing_value'] = np.array([fill_value], cube.data.dtype) - - # Check whether any of the coordinates is a pseudo-dimension - # with integer values and if so reset to int32 to prevent - # problems with possible later conversion to netCDF3 - for coord in cube.coords(): - if coord.points.dtype == np.int64: - coord.points = coord.points.astype(np.int32) - - try: - # If time is a dimension but not a coordinate dimension, coord_dims('time') returns an empty tuple - if tdim := cube.coord_dims('time'): - # For fields with a pseudo-level, time may not be the first dimension - if tdim != (0,): - tdim = tdim[0] - neworder = list(range(cube.ndim)) - neworder.remove(tdim) - neworder.insert(0,tdim) - if verbose > 1: - print("Incorrect dimension order", cube) - print("Transpose to", neworder) - cube.transpose(neworder) - sman.write(cube, zlib=True, complevel=4, unlimited_dimensions=['time'], fill_value=fill_value) - else: - tmp = iris.util.new_axis(cube,cube.coord('time')) - sman.write(tmp, zlib=True, complevel=4, unlimited_dimensions=['time'], fill_value=fill_value) - except iris.exceptions.CoordinateNotFoundError: - # No time dimension (probably ancillary file) - sman.write(cube, zlib=True, complevel=4, fill_value=fill_value) - -def fix_cell_methods(mtuple): - # Input is tuple of cell methods - newm = [] - for m in mtuple: - newi = [] - for i in m.intervals: - # Skip the misleading hour intervals - if i.find('hour') == -1: - newi.append(i) - n = CellMethod(m.method, m.coord_names, tuple(newi), m.comments) - newm.append(n) - return tuple(newm) - -def process(infile, outfile, args): - - if args.include_list and args.exclude_list: - raise Exception("Error: include list and exclude list are mutually exclusive") - cubes = iris.load(infile) - - # Sort the list by stashcode - def keyfunc(c): - return c.attributes['STASH'] - cubes.sort(key=keyfunc) - - with iris.fileformats.netcdf.Saver(outfile, 'NETCDF4') as sman: - - # Add global attributes - history = "File %s converted with ancil2netcdf.py at %s" % \ - (infile, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) - sman.update_global_attributes({'history':history}) - sman.update_global_attributes({'Conventions':'CF-1.6'}) - - for c in cubes: - stashcode = c.attributes['STASH'] - itemcode = 1000*stashcode.section + stashcode.item - if args.include_list and itemcode not in args.include_list: - continue - if args.exclude_list and itemcode in args.exclude_list: - continue - umvar = stashvar.StashVar(itemcode) - if args.simple: - c.var_name = 'fld_s%2.2di%3.3d' % (stashcode.section, stashcode.item) - elif umvar.uniquename: - c.var_name = umvar.uniquename - if c.standard_name and umvar.standard_name: - if c.standard_name != umvar.standard_name: - if args.verbose: - sys.stderr.write("Standard name mismatch %d %d %s %s\n" % \ - (stashcode.section, stashcode.item, c.standard_name, umvar.standard_name) ) - c.standard_name = umvar.standard_name - if c.units and umvar.units: - # Simple testing c.units == umvar.units doesn't - # catch format differences because Unit type - # works around them. repr isn't reliable either - ustr = '%s' % c.units - if ustr != umvar.units: - if args.verbose: - sys.stderr.write("Units mismatch %d %d %s %s\n" % \ - (stashcode.section, stashcode.item, c.units, umvar.units) ) - c.units = umvar.units - # If there's no standard_name or long_name from iris - # use one from STASH - if not c.standard_name: - if umvar.standard_name: - c.standard_name = umvar.standard_name - if not c.long_name: - if umvar.long_name: - c.long_name = umvar.long_name - - # Interval in cell methods isn't reliable so better to remove it. - c.cell_methods = fix_cell_methods(c.cell_methods) - try: - fix_latlon_coord(c) - except iris.exceptions.CoordinateNotFoundError: - print('\nMissing lat/lon coordinates for variable (possible timeseries?)\n') - print(c) - raise Exception("Variable can not be processed") - - if args.verbose: - print(c.name(), itemcode) - cubewrite(c, sman, args.verbose) - -if __name__ == '__main__': - import sys, argparse - parser = argparse.ArgumentParser(description="Convert UM ancillary file to netcdf") - parser.add_argument('-v', '--verbose', dest='verbose', - action='count', default=0, help='verbose output (-vv for extra verbose)') - parser.add_argument('--include', dest='include_list', type=int, - nargs = '+', help = 'List of stash codes to include') - parser.add_argument('--exclude', dest='exclude_list', type=int, - nargs = '+', help = 'List of stash codes to exclude') - parser.add_argument('--simple', dest='simple', action='store_true', - default=False, help="Use a simple names of form fld_s01i123.") - parser.add_argument('infile', help='Input file') - parser.add_argument('outfile', help='Output file') - - args = parser.parse_args() - - process(args.infile, args.outfile, args) diff --git a/src/change_calendar.py b/src/change_calendar.py deleted file mode 100644 index 691efeb4..00000000 --- a/src/change_calendar.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python -# Change the calendar in a UM ancillary file from Gregorian to 360 day -# Assuming monthly data, change to appropriate middle of month dates. - -from um_fileheaders import * -import umfile, sys - -print(sys.argv[1]) -f = umfile.UMFile(sys.argv[1], 'r+') - -if f.fixhd[FH_CalendarType] == 1: - f.fixhd[FH_CalendarType] = 2 - print("Changing from Gregorian to 360 day") -else: - print("Already 360 day") - sys.exit(0) - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] -# print()"Validity time", ilookup[LBYR], ilookup[LBMON], ilookup[LBDAT], \ -# ilookup[LBHR], ilookup[LBMIN], ilookup[LBDAY]) -# print()"Data time", ilookup[LBYRD], ilookup[LBMOND], ilookup[LBDATD], \ -# ilookup[LBHRD], ilookup[LBMIND], ilookup[LBDAYD]) -# print("LBTIM", ilookup[LBTIM]) - ilookup[LBDAT] = ilookup[LBDATD] = 16 - ilookup[LBHR] = ilookup[LBHRD] = 0 - ilookup[LBMIN] = ilookup[LBMIND] = 0 - ilookup[LBDAY] = ilookup[LBDAYD] = 16 + (ilookup[LBMON]-1)*30 - if ilookup[LBTIM]%10==1: - # Reset units part of value from 1 to 2. - ilookup[LBTIM] += 1 # Crucial for CDMS. - -f.close() diff --git a/src/change_calendar365.py b/src/change_calendar365.py deleted file mode 100644 index f6e28cf7..00000000 --- a/src/change_calendar365.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python -# Change the calendar in a UM ancillary file from 360 day to Gregorian -# Assuming monthly data, change to appropriate middle of month dates. - -from um_fileheaders import * -import umfile, sys - -print(sys.argv[1]) -f = umfile.UMFile(sys.argv[1], 'r+') - -if f.fixhd[FH_CalendarType] == f.missval_i: - print("Changing calendar from undefined to Gregorian") -elif f.fixhd[FH_CalendarType] == 2: - f.fixhd[FH_CalendarType] = 1 - print("Changing calendar from 360 day to Gregorian") -else: - print("Already Gregorian") - sys.exit(0) - -f.fixhd[FH_CalendarType] = 1 - -# Day no for 15th of month relative to 01-01 -# dayno = [0, 14, 45, 74, 105, 135, 166, 196, 227, 258, 288, 319, 349] -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] -# print("Validity time", ilookup[LBYR], ilookup[LBMON], ilookup[LBDAT], \ -# ilookup[LBHR], ilookup[LBMIN], ilookup[LBDAY]) -# print( "Data time", ilookup[LBYRD], ilookup[LBMOND], ilookup[LBDATD], \ -# ilookup[LBHRD], ilookup[LBMIND], ilookup[LBDAYD]) -# print()"LBTIM", ilookup[LBTIM]) -# ilookup[LBDAT] = ilookup[LBDATD] = 15 -# ilookup[LBHR] = ilookup[LBHRD] = 0 -# ilookup[LBMIN] = ilookup[LBMIND] = 0 -# ilookup[LBDAY] = ilookup[LBDAYD] = dayno[ilookup[LBMON]] - if ilookup[LBTIM]%10 == 2: - # Used by CDMS, though doesn't seem to be used by the model - ilookup[LBTIM] -= 1 - -f.close() diff --git a/src/change_calendar_header.py b/src/change_calendar_header.py deleted file mode 100644 index a94c71f4..00000000 --- a/src/change_calendar_header.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -# Change the calendar header field in a UM ancillary file. - -from __future__ import print_function -from um_fileheaders import * -import umfile, sys, argparse - -parser = argparse.ArgumentParser(description="Change calendar header in an ancillary file. If no calendar argument given it just prints the current value") -parser.add_argument('-c', dest='calendar', - help='Calendar to be set', - choices = ('gregorian', '360day', 'undefined')) - -parser.add_argument('target', help='Ancillary file to change') -args = parser.parse_args() - -f = umfile.UMFile(args.target, 'r+') - -flag = {'gregorian':1, '360day':2, 'undefined':f.missval_i} -# Reverse dictionary -calendar = { i:c for c, i in flag.items()} - -print("Original calendar value:", calendar[f.fixhd[FH_CalendarType]]) - -if args.calendar: - f.fixhd[FH_CalendarType] = flag[args.calendar] - print("New calendar value:", calendar[f.fixhd[FH_CalendarType]]) - -f.close() diff --git a/src/change_dump_date.py b/src/change_dump_date.py deleted file mode 100644 index ebd8e3a0..00000000 --- a/src/change_dump_date.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# Change the initial and valid date of a UM dump file - -# Change both the file header and the date header of each record. -# The latter may not be strictly necessary but it makes looking at file with -# xconv less confusing. - -import getopt, sys -import umfile -from um_fileheaders import * - -ifile = sys.argv[1] - -f = umfile.UMFile(ifile, "r+") - -print("Initial Time", f.fixhd[FH_DTYear], f.fixhd[FH_DTMonth], - f.fixhd[FH_DTDay], f.fixhd[FH_DTHour], f.fixhd[FH_DTMinute], - f.fixhd[FH_DTSecond]) - -print("Valid Time", f.fixhd[FH_VTYear], f.fixhd[FH_VTMonth], - f.fixhd[FH_VTDay], f.fixhd[FH_VTHour], f.fixhd[FH_VTMinute], - f.fixhd[FH_VTSecond]) - -s = input('Enter year month day\n') -s = s.split() -year = int(s[0]) -month = int(s[1]) -day = int(s[2]) - -print("Using", year, month, day) - -f.fixhd[FH_DTYear] = f.fixhd[FH_VTYear] = year -f.fixhd[FH_DTMonth] = f.fixhd[FH_VTMonth] = month -f.fixhd[FH_DTDay] = f.fixhd[FH_VTDay] = day - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - # Ignore missing fields. - break - ilookup[LBYR] = year - ilookup[LBMON] = month - ilookup[LBDAT] = day - ilookup[LBFT] = 0 - -f.close() diff --git a/src/change_dump_date2.py b/src/change_dump_date2.py deleted file mode 100644 index faabe869..00000000 --- a/src/change_dump_date2.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# Change the initial and valid date of a UM dump file - -# Change both the file header and the date header of each record. -# The latter may not be strictly necessary but it makes looking at file with -# xconv less confusing. - -import getopt, sys -import umfile -from um_fileheaders import * - -ifile = sys.argv[1] - -f = umfile.UMFile(ifile, "r+") - -print("Initial Time", f.fixhd[FH_DTYear], f.fixhd[FH_DTMonth], - f.fixhd[FH_DTDay], f.fixhd[FH_DTHour], f.fixhd[FH_DTMinute], - f.fixhd[FH_DTSecond]) - -print("Valid Time", f.fixhd[FH_VTYear], f.fixhd[FH_VTMonth], - f.fixhd[FH_VTDay], f.fixhd[FH_VTHour], f.fixhd[FH_VTMinute], - f.fixhd[FH_VTSecond]) - -s = input('Enter year month day\n') -s = s.split() -year = int(s[0]) -month = int(s[1]) -day = int(s[2]) - -print("Using", year, month, day) - -f.fixhd[FH_DTYear] = f.fixhd[FH_VTYear] = year -f.fixhd[FH_DTMonth] = f.fixhd[FH_VTMonth] = month -f.fixhd[FH_DTDay] = f.fixhd[FH_VTDay] = day - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - # Ignore missing fields. - break - ilookup[LBYR] = ilookup[LBYRD] = year - ilookup[LBMON] = ilookup[LBMOND] = month - ilookup[LBDAT] = ilookup[LBDATD] = day - ilookup[LBFT] = 0 - -f.close() diff --git a/src/change_endianness.py b/src/change_endianness.py deleted file mode 100644 index b2c77499..00000000 --- a/src/change_endianness.py +++ /dev/null @@ -1,54 +0,0 @@ -# Swap endianness of UM fieldsfile or ancillary file - -# Martin Dix martin.dix@csiro.au - - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:o:') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - ofile = opt[1] -except getopt.error: - print("Usage: change_endianness.py -i ifile -o ofile") - sys.exit(2) - -f = umfile.UMFile(ifile) - -g = umfile.UMFile(ofile, "w") -g.copyheader(f) -g.rlookup = g.rlookup.byteswap() - -# Set output byteorder to be opposite of input -if f.byteorder == '>': - g.byteorder = '<' -elif f.byteorder == '<': - g.byteorder = '>' -else: - # Native - if sys.byteorder == 'little': - g.byteorder = '>' # Big - else: - g.byteorder = '<' - -# If native byteorder set that rather than '<' or '>' to match what np.dtype uses. -if (g.byteorder == '<' and sys.byteorder == 'little') or \ - (g.byteorder == '>' and sys.byteorder == 'big'): - g.byteorder = '=' - -print("Byte orders", f.byteorder, g.byteorder) - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - data = f.readfld(k) - # Why does this have to be explicit? - g.writefld(data,k) - -g.close() diff --git a/src/change_stashcode.py b/src/change_stashcode.py deleted file mode 100644 index d2a51076..00000000 --- a/src/change_stashcode.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -# Change the stashcode of selected fields in a UM fieldsfile -# Note that the reconfiguration can read and sort an out of order file so -# don't need to worry about reordering fields here. - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -vdict = {} -try: - optlist, args = getopt.getopt(sys.argv[1:], 'v:') - for opt in optlist: - if opt[0] == '-v': - oldindex,newindex = opt[1].split(",") - oldindex = int(oldindex) - newindex = int(newindex) - vdict[oldindex] = newindex -except getopt.error: - print("Usage: change_stashcode.py -v oldindex,newindex file") - print(" Variables specified by STASH index = Section Number * 1000 + item number") - print(" May use multiple -v arguments") - sys.exit(2) - -ifile = args[0] -f = umfile.UMFile(ifile,'r+') - -changed = False -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] - if lbegin == -99: - break - # Format is Section Number * 1000 + item number - if ilookup[ITEM_CODE] in vdict: - changed = True - ilookup[ITEM_CODE] = vdict[ilookup[ITEM_CODE]] - -if not changed: - print("Warning - no fields changed") - -f.close() diff --git a/src/check_land_overlap.py b/src/check_land_overlap.py deleted file mode 100644 index 6a0f82c6..00000000 --- a/src/check_land_overlap.py +++ /dev/null @@ -1,141 +0,0 @@ -#!/usr/bin/env python -# Reconfiguration can give incorrect results if there are land points in the -# target grid but none in the matching region on the parent grid -# (even if there is land elsewhere). -# Here check for this -# Usage is check_land_overlap.py global_mask regional_mask - -# Note that this isn't going to work for rotated grids. - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import sys -import umfile -from um_fileheaders import * - -file1 = sys.argv[1] -file2 = sys.argv[2] - -f = umfile.UMFile(file1) -g = umfile.UMFile(file2) - -def getfld(f): - # Expecting only a single field - ilookup = f.ilookup[0] - - # Check field name and data type. - # Expecting stash code 1 0 30 LAND MASK - if ilookup[ITEM_CODE] != 30: - print "Variable is not land mask, stashcode is", ilookup[ITEM_CODE] - sys.exit(1) - if ilookup[DATA_TYPE] != 3: - print "Variable is not expected logical type, code is", ilookup[DATA_TYPE] - sys.exit(1) - - data = f.readfld(0) - return data, ilookup, f.rlookup[0] - -data1, ilook1, rlook1 = getfld(f) -# Check that this file is global with starting point at -90,0 -gridtype = None -if ( np.isclose(rlook1[BDY] + rlook1[BZY], -90.) and - np.isclose(rlook1[BDX] + rlook1[BZX], 0.) and - np.isclose(rlook1[BDY]*ilook1[LBROW] + rlook1[BZY], 90.) and - np.isclose(rlook1[BDX]*(ilook1[LBNPT]+1) + rlook1[BZX],360.) ): - gridtype = 'ND' -elif ( np.isclose(rlook1[BDY]*0.5 + rlook1[BZY], -90.) and - np.isclose(rlook1[BDX]*0.5 + rlook1[BZX], 0.) and - np.isclose(rlook1[BDY]*(ilook1[LBROW]+0.5) + rlook1[BZY], 90.) and - np.isclose(rlook1[BDX]*(ilook1[LBNPT]+0.5) + rlook1[BZX], 360.) ): - gridtype = 'EG' -else: - raise Exception("First file is not global") - -data2, ilook2, rlook2 = getfld(g) - -# Mask may be +-1 depending on compiler used in ancillary program. -nland2 = (data2 != 0).sum() -if nland2 == 0: - # No problem - print "No land in LAM mask so OK" -else: - # Coordinates of box centres - lat1 = rlook2[BDY] + rlook2[BZY] - lon1 = rlook2[BDX] + rlook2[BZX] - lat2 = rlook2[BDY]*ilook2[LBROW] + rlook2[BZY] - lon2 = rlook2[BDX]*ilook2[LBNPT] + rlook2[BZX] - - # Find the global coordinates that fit inside this box - i1 = int(np.ceil(lon1 / rlook1[BDX])) - i2 = int(np.ceil(lon2 / rlook1[BDX])) - j1 = int(np.ceil((lat1+90.) / rlook1[BDY])) - j2 = int(np.ceil((lat2+90.) / rlook1[BDY])) - - nland1 = (data1[j1:j2,i1:i2]!=0).sum() - - if nland1 != 0: - print "OK - land points exist in global subset" - else: - print "Error - no overlapping land points" - # Now search for land in each direction - # Set defaults in case land isn't found in that direction - i1off = -9999 - j1off = -9999 - i2off = 9999 - j2off = 9999 - for i in range(i1-1,-1,-1): - if (data1[j1:j2,i]!=0).sum() != 0: - i1off = i - break - for i in range(i2,ilook1[LBNPT]): - if (data1[j1:j2,i]!=0).sum() != 0: - i2off = i - break - for j in range(j1-1,-1,-1): - if (data1[j,i1:i2]!=0).sum() != 0: - j1off = j - break - for j in range(j2,ilook1[LBROW]): - if (data1[j,i1:i2]!=0).sum() != 0: - j2off = j - break - - print "Possible fixes" - # These corrections are on global grid, so need to convert - # to LAM - shift_E = int(np.ceil((i2off + 1 - i2)*rlook1[BDX]/rlook2[BDX])) - shift_W = int(np.ceil((i1 - i1off)*rlook1[BDX]/rlook2[BDX])) - shift_N = int(np.ceil((j2off + 1 - j2)*rlook1[BDY]/rlook2[BDY])) - shift_S = int(np.ceil((j1 - j1off)*rlook1[BDY]/rlook2[BDY])) - print " Shift grid %d points E" % shift_E - print " Shift grid %d points W" % shift_W - print " Shift grid %d points N" % shift_N - print " Shift grid %d points S" % shift_S - - # Find the minimum - shifts = [shift_E, shift_W, shift_N, shift_S] - i = np.argmin(shifts) - direction = ['E', 'W', 'N', 'S'][i] - print "Recommended shift is %d points %s" % (shifts[i], direction) - - # Full region ancillary files are start at 60 E, 45 s - # 1426 x 916 points - # ~yix/share/umlam2/ACCESS/ANCIL/TXLAPS0.11/qrparm.mask - # 4km 4320 x 2800, starting at 60E, 45 S. Spacing 0.036 - # Current coordinates - # Existing offsets - ioff = int(round((lon1-60)/rlook2[BDX],0)) - joff = int(round((lat1+45)/rlook2[BDY],0)) - - # print "Offsets in current file", ioff, joff - if direction == 'E': - ioff += shift_E - elif direction == 'W': - ioff -= shift_W - elif direction == 'N': - joff += shift_N - elif direction == 'S': - joff -= shift_S - - print "Rerun subset_ancillary with offsets", ioff, joff diff --git a/src/check_land_overlap_idx.py b/src/check_land_overlap_idx.py deleted file mode 100644 index d84f9522..00000000 --- a/src/check_land_overlap_idx.py +++ /dev/null @@ -1,141 +0,0 @@ -# Reconfiguration can give incorrect results if there are land points in the -# target grid but none in the matching region on the parent grid -# (even if there is land elsewhere). -# Here check for this -# Usage is check_land_overlap.py global_mask regional_mask - -# Note that this isn't going to work for rotated grids. - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import sys -import umfile -from um_fileheaders import * - -file1 = sys.argv[1] -file2 = sys.argv[2] - -f = umfile.UMFile(file1) -g = umfile.UMFile(file2) - -def getfld(f): - # Expecting only a single field - ilookup = f.ilookup[0] - - # Check field name and data type. - # Expecting stash code 1 0 30 LAND MASK - if ilookup[ITEM_CODE] != 30: - print "Variable is not land mask, stashcode is", ilookup[ITEM_CODE] - sys.exit(1) - if ilookup[DATA_TYPE] != 3: - print "Variable is not expected logical type, code is", ilookup[DATA_TYPE] - sys.exit(1) - - data = f.readfld(0) - return data, ilookup, f.rlookup[0] - -data1, ilook1, rlook1 = getfld(f) -# Check that this file is global with starting point at -90,0 -gridtype = None -if ( np.isclose(rlook1[BDY] + rlook1[BZY], -90.) and - np.isclose(rlook1[BDX] + rlook1[BZX], 0.) and - np.isclose(rlook1[BDY]*ilook1[LBROW] + rlook1[BZY], 90.) and - np.isclose(rlook1[BDX]*(ilook1[LBNPT]+1) + rlook1[BZX],360.) ): - gridtype = 'ND' -elif ( np.isclose(rlook1[BDY]*0.5 + rlook1[BZY], -90.) and - np.isclose(rlook1[BDX]*0.5 + rlook1[BZX], 0.) and - np.isclose(rlook1[BDY]*(ilook1[LBROW]+0.5) + rlook1[BZY], 90.) and - np.isclose(rlook1[BDX]*(ilook1[LBNPT]+0.5) + rlook1[BZX], 360.) ): - gridtype = 'EG' -else: - raise Exception("First file is not global") - -data2, ilook2, rlook2 = getfld(g) - -# Mask may be +-1 depending on compiler used in ancillary program. -nland2 = (data2 != 0).sum() -if nland2 == 0: - # No problem - #print "No land in LAM mask so OK" - print "no no" -else: - # Coordinates of box centres - lat1 = rlook2[BDY] + rlook2[BZY] - lon1 = rlook2[BDX] + rlook2[BZX] - lat2 = rlook2[BDY]*ilook2[LBROW] + rlook2[BZY] - lon2 = rlook2[BDX]*ilook2[LBNPT] + rlook2[BZX] - - # Find the global coordinates that fit inside this box - i1 = int(np.ceil(lon1 / rlook1[BDX])) - i2 = int(np.ceil(lon2 / rlook1[BDX])) - j1 = int(np.ceil((lat1+90.) / rlook1[BDY])) - j2 = int(np.ceil((lat2+90.) / rlook1[BDY])) - - nland1 = (data1[j1:j2,i1:i2]!=0).sum() - - if nland1 != 0: - #print "OK - land points exist in global subset" - print "no no" - else: - #print "Error - no overlapping land points" - # Now search for land in each direction - # Set defaults in case land isn't found in that direction - i1off = -9999 - j1off = -9999 - i2off = 9999 - j2off = 9999 - for i in range(i1-1,-1,-1): - if (data1[j1:j2,i]!=0).sum() != 0: - i1off = i - break - for i in range(i2,ilook1[LBNPT]): - if (data1[j1:j2,i]!=0).sum() != 0: - i2off = i - break - for j in range(j1-1,-1,-1): - if (data1[j,i1:i2]!=0).sum() != 0: - j1off = j - break - for j in range(j2,ilook1[LBROW]): - if (data1[j,i1:i2]!=0).sum() != 0: - j2off = j - break - - #print "Possible fixes" - # These corrections are on global grid, so need to convert - # to LAM - shift_E = int(np.ceil((i2off + 1 - i2)*rlook1[BDX]/rlook2[BDX])) - shift_W = int(np.ceil((i1 - i1off)*rlook1[BDX]/rlook2[BDX])) - shift_N = int(np.ceil((j2off + 1 - j2)*rlook1[BDY]/rlook2[BDY])) - shift_S = int(np.ceil((j1 - j1off)*rlook1[BDY]/rlook2[BDY])) - #print "Shift grid %d points E" % shift_E - #print "Shift grid %d points W" % shift_W - #print "Shift grid %d points N" % shift_N - #print "Shift grid %d points S" % shift_S - - # Find the minimum - shifts = [shift_E, shift_W, shift_N, shift_S] - i = np.argmin(shifts) - direction = ['E', 'W', 'N', 'S'][i] - #print "Recommended shift is %d points %s" % (shifts[i], direction) - - # Full region ancillary files are start at 60 E, 45 s - # 1426 x 916 points - # ~yix/share/umlam2/ACCESS/ANCIL/TXLAPS0.11/qrparm.mask - # Current coordinates - # Existing offsets - ioff = int(round((lon1-60)/rlook2[BDX],0)) - joff = int(round((lat1+45)/rlook2[BDY],0)) - # print "Offsets in current file", ioff, joff - if direction == 'E': - ioff += shift_E - elif direction == 'W': - ioff -= shift_W - elif direction == 'N': - joff += shift_N - elif direction == 'S': - joff -= shift_S - - #print "Rerun subset_ancillary with offsets", ioff, joff - print ioff, joff diff --git a/src/count_land.py b/src/count_land.py deleted file mode 100644 index 73446382..00000000 --- a/src/count_land.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python - -# Count number of land points in a UM landmask ancillary file. -# Program expects that the mask is the first field. -# Martin Dix martin.dix@csiro.au - -from __future__ import print_function -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -verbose = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'v') - for opt in optlist: - if opt[0] == '-v': - verbose = True -except getopt.error: - print("Usage: count_land [-v] file") - sys.exit(2) - -ifile = args[0] - -f = umfile.UMFile(ifile) - -# Start of data -dstart = f.fixhd[FH_DataStart] - -# Expecting only a single field -k = 0 -ilookup = f.ilookup[k] -lblrec = ilookup[LBLREC] -lbegin = ilookup[LBEGIN] # lbegin is offset from start -lbnrec = ilookup[LBNREC] # Actual size -packing = [0, ilookup[LBPACK]%10, ilookup[LBPACK]//10 % 10, - ilookup[LBPACK]//100 % 10, ilookup[LBPACK]//1000 % 10, - ilookup[LBPACK]//10000] -npts = ilookup[LBNPT] -nrows = ilookup[LBROW] - -# Check field name and data type. -# Expecting stash code 1 0 30 LAND MASK -if ilookup[ITEM_CODE] != 30: - print("Variable is not land mask, stashcode is", ilookup[ITEM_CODE]) - sys.exit(1) -if ilookup[DATA_TYPE] != 3: - print("Variable is not expected logical type, code is", ilookup[DATA_TYPE]) - sys.exit(1) - -data = f.readfld(0) - -# Mask may be +-1 depending on compiler used in ancillary program. -print((data != 0).sum()) diff --git a/src/count_tiles.py b/src/count_tiles.py deleted file mode 100644 index 07f66356..00000000 --- a/src/count_tiles.py +++ /dev/null @@ -1,7 +0,0 @@ -# Total number of non-zero tiles in a land fraction ancillary file -import iris, sys - -frac = iris.load_cube(sys.argv[1], iris.AttributeConstraint(STASH='m01s00i216')) -ftot = frac.data.sum(axis=0) -print("No of land points", (ftot >0).sum()) -print("No of tiles", (frac.data > 0).sum()) diff --git a/src/eqtoll.py b/src/eqtoll.py deleted file mode 100644 index 6badc843..00000000 --- a/src/eqtoll.py +++ /dev/null @@ -1,47 +0,0 @@ -# Version of the UM eqtoll routine -import numpy as np - -def eqtoll(phi_eq,lambda_eq,phi_pole,lambda_pole): - - small = 1e-6 - - # Single value versions - lambda_zero = lambda_pole+180. - sin_phi_pole = np.sin(np.radians(phi_pole)) - cos_phi_pole = np.cos(np.radians(phi_pole)) - - e_lambda = np.atleast_1d(lambda_eq) - # Put into range -180 to 180 - e_lambda[e_lambda>180.] -= 360.0 - e_lambda[e_lambda<-180.] += 360.0 - - e_lambda = np.radians(e_lambda) - e_phi = np.radians(phi_eq) - - # Compute latitude using equation (4.7) - arg = cos_phi_pole*np.cos(e_lambda)*np.cos(e_phi) + np.sin(e_phi)*sin_phi_pole - arg = np.clip(arg, -1.0, 1.0) - a_phi = np.arcsin(arg) - phi_out = np.degrees(a_phi) - - # Compute longitude using equation (4.8) - term1 = np.cos(e_phi)*np.cos(e_lambda)*sin_phi_pole - np.sin(e_phi)*cos_phi_pole - term2 = np.cos(a_phi) - # Clip should take care of term2==0 case - arg = np.clip(term1/term2, -1.0, 1.0) - a_lambda = np.degrees(np.arccos(arg)) - a_lambda = copysign(a_lambda,e_lambda) - a_lambda = a_lambda+lambda_zero - - a_lambda[term2 < small] = 0.0 - - a_lambda[a_lambda >= 360.0] -= 360.0 - a_lambda[a_lambda < 0.0] += 360.0 - - return phi_out, a_lambda - -def copysign(x,y): - # Take zero as positive - s = np.sign(y) - s = np.where(np.equal(s,0),1,s) # Set - return abs(x)*s diff --git a/src/fix_polar_anom.py b/src/fix_polar_anom.py deleted file mode 100644 index 87964a31..00000000 --- a/src/fix_polar_anom.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python - -# Fix anomalies in polar fields - -# Martin Dix martin.dix@csiro.au - -from __future__ import print_function -import numpy as np -import getopt, sys -from um_fileheaders import * -import umfile, stashvar - -verbose = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'v') - for opt in optlist: - if opt[0] == '-v': - verbose = True -except getopt.error: - print("Usage: fix_polar_anom [-v] ifile ") - sys.exit(2) - -if args: - ifile = args[0] - -f = umfile.UMFile(ifile, 'r+') - -if not f.fieldsfile: - print("Not a UM fieldsfile") - sys.exit(1) - -# if f.fixhd[FH_HorizGrid] != 0: -# print("Error - not a global grid") -# sys.exit(1) - -lastvar = None -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - rlookup = f.rlookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - - # Only fix prognostic variables in a dump - if f.fixhd[FH_Dataset]==1 and not umfile.isprog(ilookup): - continue - - var = stashvar.StashVar(ilookup[ITEM_CODE],ilookup[MODEL_CODE]) - # Determine the grid from the zeroth latitude and longitude - if not ( np.allclose(rlookup[BZY] + rlookup[BDY], -90.) and - np.allclose(rlookup[BZX] + rlookup[BDX], 0.) ): - # Only print the warning once per variable - if verbose and ilookup[LBLEV] in (1,9999): - print("Skipping grid", ilookup[ITEM_CODE], var.long_name, ilookup[LBLEV]) - continue - - data = f.readfld(k) - - if len(data.shape) != 2: - # Runoff fields in vn7.3 dumps don't have proper pack code - if verbose: - print("Unexpected shape", ilookup[ITEM_CODE], data.shape, var.long_name) - continue - - anom_sp = data[0,:].max() - data[0,:].min() - anom_np = data[-1,:].max() - data[-1,:].min() - # Reset polar values - reset = False - if anom_sp > 0: - reset = True - # With dump files using 32 bit packing, using 64 bit mean helps - # maintain precision. - data[0,:] = data[0,:].mean(dtype=np.float64) - if anom_np > 0: - reset = True - data[-1,:] = data[-1,:].mean(dtype=np.float64) - - if reset: - f.writefld(data,k,overwrite=True) - print("Fixed", ilookup[ITEM_CODE], ilookup[LBLEV], var.long_name) - -f.close() diff --git a/src/get_calendar.py b/src/get_calendar.py deleted file mode 100644 index 2e8445f5..00000000 --- a/src/get_calendar.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python -# Change the calendar in a UM ancillary file from Gregorian to 360 day -# Assuming monthly data, change to appropriate middle of month dates. - -from um_fileheaders import * -import umfile, sys - -f = umfile.UMFile(sys.argv[1], 'r') - -if f.fixhd[FH_CalendarType] == 1: - print("Gregorian") -elif f.fixhd[FH_CalendarType] == 2: - print("360 day") -elif f.fixhd[FH_CalendarType] == f.missval_i: - print("Not set") -else: - print("Unexpected calendar value", f.fixhd[FH_CalendarType]) diff --git a/src/interpolate_ancillary.py b/src/interpolate_ancillary.py deleted file mode 100644 index 9668e5e3..00000000 --- a/src/interpolate_ancillary.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python - -# Interpolate an ancillary file to another grid -# Output word size and endianness match input. - -# Converts all variables in the file (assumed to all be on the same grid) - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * -import cdms2 -import regrid2 - -def usage(): - print "Usage: interpolate_ancillary -i ifile -o ofile -m landseamask" - sys.exit(2) - -vname = None -ifile = None -ofile = None -maskfile = None -glat = None -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:o:m:') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - ofile = opt[1] - elif opt[0] == '-m': - maskfile = opt[1] -except getopt.error: - usage() - -if not ifile or not ofile or not maskfile: - print "Error: filenames undefined" - usage() - -m = umfile.UMFile(maskfile) -f = umfile.UMFile(ifile) - -# Target grid properties -nlon_target = m.inthead[IC_XLen] -nlat_target = m.inthead[IC_YLen] - -# Create new axes for the output grid -outgrid = cdms2.createUniformGrid(m.realhead[RC_FirstLat], nlat_target, m.realhead[RC_LatSpacing], m.realhead[RC_FirstLong], nlon_target, m.realhead[RC_LongSpacing]) - -g = umfile.UMFile(ofile, "w") -g.copyheader(f) - -# Change the grid values in the output header to match the chosen origin and -# size -g.inthead[IC_XLen] = nlon_target -g.inthead[IC_YLen] = nlat_target -g.realhead[RC_FirstLat] = m.realhead[RC_FirstLat] -g.realhead[RC_FirstLong] = m.realhead[RC_FirstLong] -g.realhead[RC_PoleLong] = m.realhead[RC_PoleLong] -g.realhead[RC_PoleLat] = m.realhead[RC_PoleLat] -g.realhead[RC_LatSpacing] = m.realhead[RC_LatSpacing] -g.realhead[RC_LongSpacing] = m.realhead[RC_LongSpacing] -lat0 = g.realhead[RC_FirstLat] - g.realhead[RC_LatSpacing] -lon0 = g.realhead[RC_FirstLong] - g.realhead[RC_LongSpacing] - -# Loop over all the fields -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - rlookup = f.rlookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - - # Set modified output grid for this field - g.ilookup[k,LBLREC] = nlon_target*nlat_target - g.ilookup[k,LBROW] = nlat_target - g.ilookup[k,LBNPT] = nlon_target - # Need to hold float values in an integer array - g.rlookup[k,BDY] = g.realhead[RC_LatSpacing] - g.rlookup[k,BDX] = g.realhead[RC_LongSpacing] - g.rlookup[k,BZY] = lat0 - g.rlookup[k,BZX] = lon0 - - data = f.readfld(k) - - # May be different to the overall file settings if it's not a proper - # ancillary file - lat1 = rlookup[BZY] + rlookup[BDY] - lon1 = rlookup[BZX] + rlookup[BDX] - ingrid = cdms2.createUniformGrid(lat1, nrows, rlookup[BDY], lon1, npts, rlookup[BDX]) - - regridfunc = regrid2.Regridder(ingrid, outgrid) - - newdata = regridfunc(data) - if newdata.dtype == np.float32: - # Output from regrid is float32, so set packing to match - g.ilookup[k,LBPACK] = (f.ilookup[k,LBPACK]%10)*10 + 2 - else: - # Don't expect this case but handle it anyway - g.ilookup[k,LBPACK] = (f.ilookup[k,LBPACK]%10)*10 - - # If this is a global grid force polar values to be the zonal means - if ( f.fixhd[FH_HorizGrid] == 0 and - np.allclose(rlookup[BZY] + rlookup[BDY], -90.) and - np.allclose(rlookup[BZX] + rlookup[BDX], 0.) ): - newdata[0,:] = newdata[0,:].mean() - newdata[-1,:] = newdata[-1,:].mean() - - g.writefld(newdata,k) - -g.close() diff --git a/src/iris_stashname.py b/src/iris_stashname.py deleted file mode 100644 index 35cb15c8..00000000 --- a/src/iris_stashname.py +++ /dev/null @@ -1,22 +0,0 @@ -# Add stashmaster names to iris cube or cubelist - -from stashvar import atm_stashvar - -def _add_name(cube): - code = cube.attributes['STASH'] - stashcode = code.section*1000 + code.item - try: - cube.stash_name = atm_stashvar[stashcode][0] - except KeyError: - cube.stash_name = 'Unknown' - # Also add to the attributes directory so that it shows - # when cube is printed. - cube.attributes['stash_name'] = cube.stash_name - -def add_stashname(cubes): - if isinstance(cubes,list): - for c in cubes: - _add_name(c) - else: - _add_name(cubes) - diff --git a/src/lbcdump.py b/src/lbcdump.py deleted file mode 100644 index 2ef2fd1d..00000000 --- a/src/lbcdump.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python - -# Dump header and field information from a UM LBC file -# These pack all levels together into a single record - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -from um_fileheaders import * -import umfile, stashvar - -short = False -header = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:hs') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-h': - header = True - elif opt[0] == '-s': - short = True -except getopt.error: - print "Usage: lbc_dump [-s] -i ifile " - sys.exit(2) - -if args: - ifile = args[0] - -f = umfile.UMFile(ifile) - -if not f.fieldsfile: - print "Not a UM fieldsfile" - sys.exit(1) - -if f.fixhd[FH_Dataset] != 5: - print "Not an LBC file", f.fixhd[FH_Dataset] - sys.exit(1) - -f.print_fixhead() - -print "Integer constants", f.inthead - -print "REAL HEADER", f.realhead - -if hasattr(f,"levdep"): - print "Level dependent constants", f.levdep - -if hasattr(f,"rowdep"): - print "Row dependent constants", f.rowdep - -if hasattr(f,"coldep"): - print "Column dependent constants", f.coldep - -if not header: - - for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lblrec = ilookup[LBLREC] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - lbnrec = ilookup[LBNREC] # Actual size - if lbegin == -99: - break - var = stashvar.StashVar(ilookup[ITEM_CODE],ilookup[MODEL_CODE]) - if not short: - print "-------------------------------------------------------------" - print k, ilookup[ITEM_CODE], var.name, var.long_name - if not short: - print f.ilookup[k, :45] - print f.rlookup[k, 45:] - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - - data = f.readfld(k) - - # Sample values - print ilookup[ITEM_CODE], data[0], "Range", data.min(), data.max() diff --git a/src/levelheights.py b/src/levelheights.py deleted file mode 100644 index a8b0ba2d..00000000 --- a/src/levelheights.py +++ /dev/null @@ -1,61 +0,0 @@ -# UM hybrid height scheme, assuming height_gen_smooth option. -# Code from setcona -# Ignore Earth_radius term to get height above MSL. - -# In the UM, dimensions are r_theta_levels(0:model_levels), r_rho_levels(1:model_levels) -# To keep the relative arragement intact, add an extra value at the start of r_rho_levels -# here - -import f90nml -import numpy as np - -def setvertlevs(vfile, orog, verbose=False): - - vertlevs = f90nml.read(vfile)['vertlevs'] - if verbose: - print("VERTLEVS", vertlevs) - - eta_theta_levels = np.array(vertlevs['eta_theta']) # (0:model_levels) - eta_rho_levels = np.array([-1e20] + vertlevs['eta_rho']) # (1:model_levels) - z_top_of_model = vertlevs['z_top_of_model'] - first_constant_r_rho_level = vertlevs['first_constant_r_rho_level'] - if verbose: - print("eta_rho", eta_rho_levels) - - ashape = (len(eta_theta_levels),) + orog.shape - if verbose: - print("ASHAPE", ashape) - - r_theta_levels = np.zeros(ashape) - r_rho_levels = np.zeros(ashape) - r_rho_levels[0] = np.nan - - r_ref_theta = eta_theta_levels * z_top_of_model - r_ref_rho = eta_rho_levels * z_top_of_model - # set bottom level, ie: orography - r_theta_levels[0] = orog[:] # + Earth_radius - - # For constant levels set r to be a constant on the level - if len(orog.shape) == 2: - r_theta_levels[first_constant_r_rho_level:] = r_ref_theta[first_constant_r_rho_level:,np.newaxis,np.newaxis] - r_rho_levels[first_constant_r_rho_level:] = r_ref_rho[first_constant_r_rho_level:,np.newaxis,np.newaxis] - else: - r_theta_levels[first_constant_r_rho_level:] = r_ref_theta[first_constant_r_rho_level:,np.newaxis] - r_rho_levels[first_constant_r_rho_level:] = r_ref_rho[first_constant_r_rho_level:,np.newaxis] - - - # Case( height_gen_smooth ) - # A smooth quadratic height generation - for k in range(1, first_constant_r_rho_level): - r_rho_levels[k] = eta_rho_levels[k] * z_top_of_model + \ - orog * (1.0 - eta_rho_levels[k]/eta_rho_levels[first_constant_r_rho_level])**2 - r_theta_levels[k] = eta_theta_levels[k] * z_top_of_model + \ - orog * (1.0 - eta_theta_levels[k]/eta_rho_levels[first_constant_r_rho_level])**2 - - return r_theta_levels, r_rho_levels - -if __name__ == '__main__': - orog = np.arange(0,6000,1000.) - r_theta_levels, r_rho_levels = setvertlevs('vertlevs_G3', orog, verbose=True) - dr0 = r_theta_levels[1:,0] - r_theta_levels[:-1,0] - drx = r_theta_levels[1:,-1] - r_theta_levels[:-1,-1] diff --git a/src/limit_soilmoisture.py b/src/limit_soilmoisture.py deleted file mode 100644 index 8c981bbd..00000000 --- a/src/limit_soilmoisture.py +++ /dev/null @@ -1,36 +0,0 @@ -# Limit soil moisture to be <= saturation - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -dzsoil = np.array([0.1, 0.25, 0.65, 2.0]) - -f = umfile.UMFile(sys.argv[1], 'r+') - -# On the first pass, just get the saturation fraction -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] == 43: - saturation = f.readfld(k) - break - -level = 0 -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] == 9: - sm = f.readfld(k) - sm = np.minimum(sm, 1000*dzsoil[level]*saturation) - level += 1 - f.writefld(sm,k) - -f.close() diff --git a/src/mask_edit.py b/src/mask_edit.py deleted file mode 100644 index b5b0b6a5..00000000 --- a/src/mask_edit.py +++ /dev/null @@ -1,202 +0,0 @@ -# Plot a land mask and interactively flip points. Output a list -# of changes. - -# For a global grid need to work around quirks of iris treating -# longitude range as -180 to 180 - -from __future__ import division, print_function -import iris -import iris.plot as iplt -import matplotlib -import numpy as np -import matplotlib.pyplot as plt -import cartopy.crs as ccrs -import argparse, sys -from matplotlib.colors import BoundaryNorm - -parser = argparse.ArgumentParser(description="Interactvely edit a UM land-sea mask") -parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', - default=False, help='verbose output') - -parser.add_argument('maskfile', nargs='?', help='Input mask file (default qrparm.mask)', default='qrparm.mask') -parser.add_argument('-m', dest='mapres', required=False, default='m', help='Map resolution', choices='almh') -parser.add_argument('-o', dest='outfile', type=argparse.FileType('w'), help='Output file for corrections (default is standard out)', default=sys.stdout) - -args = parser.parse_args() - -mask = iris.load_cube(args.maskfile) - -global fmask, lon, lat, nlon, nlat, cyclic, changed -# Global files have latitude, longitude, -# LAMs have grid_latitude, grid_longitude -lat, lon = mask.dim_coords -nlat, nlon = mask.shape -cyclic = lon.circular - -if mask.data.min() < 0: - # Plots better when flipped - mask.data = -1*mask.data - -# 4th value is never used for some reason -cmap = matplotlib.colors.ListedColormap(((0.3,0.3,1),(0.7,0.7,1),(0,0.65,0),(1,1,0),(0.,0.35,0))) - -changed = False - -if cyclic: - crs = ccrs.PlateCarree(central_longitude=180) -else: - crs = ccrs.PlateCarree() - -ax = plt.axes(projection=crs) - -def draw_GAcoast(ax,coastcolor='black'): - # http://www.ga.gov.au/metadata-gateway/metadata/record/61395/ - # MapInfo Interchange format - f = open('cstauscd_l.mif') - desc = open('cstauscd_l.mid') - - l = f.readline() - while l[:4] != "DATA": - l = f.readline() - - minlon, maxlon = ax.get_xlim() - minlat, maxlat = ax.get_ylim() - - while True: - l = f.readline() - if not l: - break - dline = desc.readline() - # Exclude State border and tile edge line segements - coast = dline.find("coastline") > 0 - if l.startswith("PLINE"): - n = int(l[5:]) - lon = [] - lat = [] - for i in range(n): - l = f.readline() - lon.append(float(l.split()[0])) - lat.append(float(l.split()[1])) - if coast and min(lat) <= maxlat and max(lat) >= minlat and \ - min(lon) <= maxlon and max(lon) >= minlon : - ax.plot(lon,lat,linewidth=1,color=coastcolor) - elif l.startswith("LINE"): - s = l.split() - lon = [float(s[1]), float(s[3])] - lat = [float(s[2]), float(s[4])] - if coast and min(lat) <= maxlat and max(lat) >= minlat and \ - min(lon) <= maxlon and max(lon) >= minlon : - ax.plot(lon,lat,linewidth=1,color=coastcolor) - -global PM -# cmap = plt.get_cmap('PiYG') -norm = BoundaryNorm([-1,0,1,2,3], ncolors=cmap.N, clip=True) -PM = iplt.pcolormesh(mask, cmap=cmap, norm=norm) - -if args.mapres == 'a': - draw_GAcoast(ax) -elif args.mapres == 'l': - ax.coastlines(resolution='110m') -elif args.mapres == 'h': - ax.coastlines(resolution='10m') -else: - ax.coastlines(resolution='50m') - -ax.gridlines(linestyle='--', draw_labels=True, alpha=0.5) - -# Make a copy so can see what's changed later -# (PM.set_array alters mask.data for LAMs) -origmask = np.array(mask.data[:]) - -def grid_callback(ax): - # Try to sensibly redraw the grid lines when the map is zoomed. - xt = ax.get_xticks() - yt = ax.get_yticks() - # print("Orig",xt) - if cyclic: - for i in range(len(xt)): - if xt[i] < 0: - xt[i] = 180 + xt[i] - else: - xt[i] = xt[i] - 180 - # print("New ",xt) - # Get rid of the old lines (doesn't seem to work) - ax._gridliners = [] - ax.gridlines(linestyle='--', draw_labels=True, xlocs=xt, ylocs=yt, alpha=0.5) - -# From the image_zcoord example -def format_coord(x, y): - - global lon, lat, cyclic - if cyclic: - x += 180. - i = lon.nearest_neighbour_index(x) - j = lat.nearest_neighbour_index(y) - return 'lon=%1.4f, lat=%1.4f, [%d,%d]'%(x, y, j, i) - -ax.format_coord = format_coord -ax.callbacks.connect('xlim_changed', grid_callback) -ax.callbacks.connect('ylim_changed', grid_callback) - -# http://matplotlib.org/1.3.1/users/event_handling.html -def onclick(event): - # Disable click events if using the zoom & pan modes. - # Need to turn off zoom to restore the clicking - if plt.gcf().canvas.widgetlock.locked(): - return - if args.verbose: - print('button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % ( - event.button, event.x, event.y, event.xdata, event.ydata)) - global fmask, lon, lat, PM, nlon, nlat, changed - if cyclic: - # Underlying plot still starts at -180, so fix the coordinate offset - i = lon.nearest_neighbour_index(event.xdata+180) - else: - i = lon.nearest_neighbour_index(event.xdata) - j = lat.nearest_neighbour_index(event.ydata) - changed = True - fmask = PM.get_array() - if cyclic: - fmask.shape = (nlat,nlon+1) - else: - fmask.shape = (nlat,nlon) - # To make visible which points have been flipped, set new land - # to 2, new ocean to -1 - if fmask[j,i] == 1: - fmask[j,i] = -1 - elif fmask[j,i] == 0: - fmask[j,i] = 2 - elif fmask[j,i] == -1: - # Flip back to original - fmask[j,i] = 1 - elif fmask[j,i] == 2: - fmask[j,i] = 0 -# http://wiki.scipy.org/Cookbook/Matplotlib/Animations - PM.set_array(fmask[:,:].ravel()) - plt.draw() - -cid = plt.gcf().canvas.mpl_connect('button_press_event', onclick) -plt.show() - -if changed: - - if cyclic: - # Remove the extra longitude - fmask = fmask[:,:-1] - - # Now save a list of the changed points for CAP - print("Number of points changed", np.sum(fmask != origmask)) - - # Need to flip the order here to N-S. - orig = origmask[::-1].ravel() - new = fmask[::-1].ravel() - - for k in range(len(orig)): - if orig[k] != new[k]: - if new[k] == -1: # Flipped ocean value - status = ".FALSE." - else: - status = ".TRUE." - args.outfile.write("&DATAC FIELD_NO=1, POINT_NO=%d, DATA_NEW=%s /\n" % \ - (k+1, status)) - diff --git a/src/mergefiles.py b/src/mergefiles.py deleted file mode 100644 index 52c0b4ff..00000000 --- a/src/mergefiles.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python - -# Merge two UM fieldsfiles -# All fields are merged, so for finer control subset the files -# separately first. -# Basic header information is taken from the first file. -# By default, duplicate fields are also from the first file -# (override with the -d option) - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * -import argparse - -parser = argparse.ArgumentParser(description='Merge UM files') - -parser.add_argument('-d', '--default', dest='duplicate', type=int, default=1, - help='default file for duplicate fields (1 or 2)') - -parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', - default=False, help='verbose output') - -parser.add_argument('file1', help='Input file') -parser.add_argument('file2', help='Input file') -parser.add_argument('file3', help='Output file') - -args = parser.parse_args() - -f1 = umfile.UMFile(args.file1) - -f2 = umfile.UMFile(args.file2) - -g = umfile.UMFile(args.file3, "w") -g.copyheader(f1) - -print("Lookup sizes", f1.fixhd[FH_LookupSize2], f1.fixhd[FH_LookupSize1], - f2.fixhd[FH_LookupSize2], f2.fixhd[FH_LookupSize1]) - -g.ilookup[:] = -99 # Used as missing value - -# Start of data is at fixhd[FH_DataStart], -# This should be a multiple of 2048 + 1 -# Start of lookup table fixhd[FH_LookupStart] -min_dstart = g.fixhd[FH_LookupStart] + g.fixhd[FH_LookupSize2]*g.fixhd[FH_LookupSize1] -dstart = (min_dstart//2048 + 1)*2048 + 1 -g.fixhd[FH_DataStart] = dstart - -# # Should pad g up to the start? -# # Check space -# space = dstart - g.fixhd[FH_LookupStart] -# print "Offsets 1", f1.fixhd[FH_LookupStart], f1.fixhd[FH_DataStart] -# print "Offsets 2", f2.fixhd[FH_LookupStart], f2.fixhd[FH_DataStart] -# print space, (f1.fixhd[FH_LookupSize2] + f2.fixhd[FH_LookupSize2])*f1.fixhd[FH_LookupSize1] - -k1=0 -k2=0 -kout = 0 -kount = dstart-1 # dstart is index rather than offset -nprog = 0 -ntracer = 0 -end1 = False -end2 = False - -while True: - if args.verbose: - print("K", k1, k2, kout) - if k1 >= f1.fixhd[FH_LookupSize2] or f1.ilookup[k1][LBEGIN]==-99: - end1 = True - if k2 >= f2.fixhd[FH_LookupSize2] or f2.ilookup[k2][LBEGIN]==-99: - end2 = True - - if end1 and end2: - break - if end1: - f = f2 - k = k2 - k2 += 1 - elif end2: - f = f1 - k = k1 - k1 += 1 - else: - if f1.ilookup[k1][ITEM_CODE] == f2.ilookup[k2][ITEM_CODE]: - if args.duplicate == 1: - print("Warning - duplicate (using file1 version)", f1.ilookup[k1][ITEM_CODE]) - f = f1 - k = k1 - else: - print("Warning - duplicate (using file2 version)", f1.ilookup[k1][ITEM_CODE]) - f = f2 - k = k2 - k1 += 1 - k2 += 1 - elif f1.ilookup[k1][ITEM_CODE] < f2.ilookup[k2][ITEM_CODE]: - f = f1 - k = k1 - k1 += 1 - else: - f = f2 - k = k2 - k2 += 1 - - g.ilookup[kout] = f.ilookup[k] - g.rlookup[kout] = f.rlookup[k] - - data = f.readfld(k,raw=True) - g.writefld(data,kout,raw=True) - if umfile.isprog(g.ilookup[kout]): - nprog += 1 - if umfile.istracer(g.ilookup[kout]): - ntracer += 1 - kout += 1 - -# This sort of correction should be in a new function? - -# To get correct number of tracer fields need to divide by number of levels -ntracer /= g.inthead[IC_TracerLevs] - -g.fixhd[FH_LookupSize2] = kout -g.fixhd[FH_NumProgFields] = nprog -g.inthead[IC_TracerVars] = ntracer -if ntracer > 0 and g.inthead[IC_TracerLevs] != g.inthead[IC_PLevels]: - g.inthead[IC_TracerLevs] = g.inthead[IC_PLevels] - -g.close() diff --git a/src/mergefiles_region.py b/src/mergefiles_region.py deleted file mode 100644 index d91a7648..00000000 --- a/src/mergefiles_region.py +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python - -# Merge two UM fieldsfiles -# Files must have exactly same fields, grids etc - -# This version only merges the specified region (defined as for -# subset_ancillary) from field in file1 to field in file2 -# Merge region is specified by the indices of the lower left corner (x0,y0) -# and the extents nx, ny. -# These are specified as arguments -x x0,nx -y y0,ny -# Note that (x0,y0) are 0 based indices -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -def usage(): - print "Usage: mergefiles_region.py -x x0,nx -y y0,ny file1 file2 outputfile" - sys.exit(2) - -verbose = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'x:y:v') - for opt in optlist: - if opt[0] == '-v': - verbose = True - elif opt[0] == '-x': - x0 = int(opt[1].split(',')[0]) - nx = int(opt[1].split(',')[1]) - elif opt[0] == '-y': - y0 = int(opt[1].split(',')[0]) - ny = int(opt[1].split(',')[1]) -except getopt.error: - usage() - sys.exit(2) - -if len(args) != 3: - print "Missing filename arguments" - usage() - -# Section to take -if verbose: - print "Section", x0, y0, nx, ny - -f1 = umfile.UMFile(args[0]) -f2 = umfile.UMFile(args[1]) -g = umfile.UMFile(args[2], "w") -g.copyheader(f1) - -for k in range(f1.fixhd[FH_LookupSize2]): - if f1.ilookup[k][LBEGIN]==-99 or f2.ilookup[k][LBEGIN]==-99: - break - - if f1.ilookup[k][ITEM_CODE] != f2.ilookup[k][ITEM_CODE]: - raise Exception("files do not match %d %d %d" % - (k, f1.ilookup[k][ITEM_CODE], f2.ilookup[k][ITEM_CODE])) - - data1 = f1.readfld(k) - dataout = f2.readfld(k) - dataout[y0:y0+ny,x0:x0+nx] = data1[y0:y0+ny,x0:x0+nx] - - g.writefld(dataout.astype(g.float),k) - -g.close() diff --git a/src/nccmp_um2netcdf.py b/src/nccmp_um2netcdf.py deleted file mode 100644 index 620b6ae1..00000000 --- a/src/nccmp_um2netcdf.py +++ /dev/null @@ -1,101 +0,0 @@ -# Compare two files produced by um2netcdf4.py and variants - -import sys, netCDF4, argparse, numpy as np - -parser = argparse.ArgumentParser(description="Compare netcdf files from um2netcdf4.py") -parser.add_argument('-d', dest='strict_dims', action='store_true', - default=False, help="Strict comparison of dimensions") -parser.add_argument('-s', dest='strict', action='store_true', - default=False, help="Strict comparison") -parser.add_argument('file1', help='Input file1') -parser.add_argument('file2', help='Input file2') - -args = parser.parse_args() - -d1 = netCDF4.Dataset(args.file1) -d2 = netCDF4.Dataset(args.file2) - -if args.strict: - args.strict_dims = True - -if args.strict_dims: - # Compare dimensions - dims1 = set(d1.dimensions.keys()) - dims2 = set(d2.dimensions.keys()) - - if dims1 - dims2: - print("File 1 has dimensions not in file 2:", dims1 - dims2) - if dims2 - dims1: - print("File 2 has dimensions not in file 1:", dims2 - dims1) - if dims1.symmetric_difference(dims2): - print("Common dimensions", dims1.intersection(dims2)) - for dim in dims1.intersection(dims2): - if d1.dimensions[dim].size == d2.dimensions[dim].size: - # Check values - if dim == 'bnds': - continue - v1 = d1.variables[dim] - v2 = d2.variables[dim] - if not np.allclose(v1[:], v2[:]): - diff = abs(v1[:] - v2[:]) - imax = np.unravel_index(diff.argmax(), diff.shape) - print("Dimension values differ:", dim, imax, v1[imax], v2[imax]) - else: - print("Dimension sizes differ:", dim, d1.dimensions[dim].size, d2.dimensions[dim].size) - -# Get names of pressure dimensions and whether they're increasing or decreasing -d1inc = {} -d2inc = {} -for d in d1.dimensions: - if d == 'bnds': - continue - v = d1.variables[d] - if (hasattr(v,'long_name') and 'pressure' in v.long_name or - hasattr(v,'standard_name') and 'pressure' in v.standard_name): - if v[0] < v[-1]: - d1inc[d] = True - else: - d1inc[d] = False -for d in d2.dimensions: - if d == 'bnds': - continue - v = d2.variables[d] - if (hasattr(v,'long_name') and 'pressure' in v.long_name or - hasattr(v,'standard_name') and 'pressure' in v.standard_name): - if v[0] < v[-1]: - d2inc[d] = True - else: - d2inc[d] = False - -print("d1inc:", d1inc) -print("d2inc:", d2inc) - -# Expect variable names of form fld_* -vars1 = {v for v in d1.variables if v.startswith('fld_')} -vars2 = {v for v in d2.variables if v.startswith('fld_')} -if vars1 - vars2: - print("File 1 has variables not in file 2:", vars1 - vars2) -if vars2 - vars1: - print("File 2 has variables not in file 1:", vars2 - vars1) - -for v in sorted(vars1.intersection(vars2)): - v1 = d1.variables[v] - v2 = d2.variables[v] - # This might just be due to renaming of dimensions - if args.strict_dims and v1.dimensions != v2.dimensions: - print("Dimension mismatch:", v, v1.dimensions, v2.dimensions) - if v1.shape == v2.shape: - # Compare values - # Is the vertical axis reversed. Assume this is always the second dimension - if (v1.dimensions[1] in d1inc and v2.dimensions[1] in d2inc and - d1inc[v1.dimensions[1]] ^ d2inc[v2.dimensions[1]]): - print("Comparing %s with reversed pressure dimension" % v) - v2 = v2[:,::-1] - if not np.allclose(v1[:], v2[:]): - diff = abs(v1[:] - v2[:]) - imax = np.unravel_index(diff.argmax(), diff.shape) - print("Values differ:", v, imax, v1[imax], v2[imax]) - if v1[:].mask.sum() != v2[:].mask.sum(): - print("Number of masked points differs:", v, v1[:].mask.sum(), v2[:].mask.sum()) - else: - print("Shape mismatch:", v, v1.shape, v2.shape) diff --git a/src/perturbIC.py b/src/perturbIC.py deleted file mode 100644 index 22ff4a38..00000000 --- a/src/perturbIC.py +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python - -# Apply a perturbation to initial condition. -# Note that this works in place. -# For ENDGAME perturb thetavd as well if it's present - -# Martin Dix martin.dix@csiro.au - -import argparse -import umfile -from um_fileheaders import * -from numpy.random import MT19937, RandomState, SeedSequence - -parser = argparse.ArgumentParser(description="Perturb UM initial dump") -parser.add_argument('-a', dest='amplitude', type=float, default=0.01, - help = 'Amplitude of perturbation') -parser.add_argument('-s', dest='seed', type=int, required=True, - help = 'Random number seed (must be non-negative integer)') -parser.add_argument('ifile', help='Input file (modified in place)') - -args = parser.parse_args() - -if args.seed >= 0: - rs = RandomState(MT19937(SeedSequence(args.seed))) -else: - raise Exception('Seed must be positive') - -f = umfile.UMFile(args.ifile, 'r+') - -# Set up theta perturbation. -nlon = f.inthead[IC_XLen] -nlat = f.inthead[IC_YLen] -# Same at each level so as not to upset vertical stability -perturb = args.amplitude * (2.*rs.random(nlon*nlat).reshape((nlat,nlon)) - 1.) -# Set poles to zero (only necessary for ND grids, but doesn't hurt EG) -perturb[0] = 0. -perturb[-1] = 0. - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - # 4 is theta, 388 is thetavd (ENDGAME only) - if ilookup[ITEM_CODE] in (4, 388): - a = f.readfld(k) - # Note that using += ensures the datatype of a doesn't change - # (in case it's float32) - a += perturb - f.writefld(a,k) - -f.close() diff --git a/src/polar_anom.py b/src/polar_anom.py deleted file mode 100644 index 6b0b62f8..00000000 --- a/src/polar_anom.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python - -# Check whether fields at poles have any spurious zonal variation -# Exclude fields on u and v grids (v grid not at poles, u values at poles -# not used?) - -# Martin Dix martin.dix@csiro.au - -from __future__ import print_function -import numpy as np -import getopt, sys -from um_fileheaders import * -import umfile, stashvar - -verbose = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'v') - for opt in optlist: - if opt[0] == '-v': - verbose = True -except getopt.error: - print("Usage: polar_anom [-v] ifile ") - sys.exit(2) - -if args: - ifile = args[0] - -f = umfile.UMFile(ifile) - -if not f.fieldsfile: - print("Not a UM fieldsfile") - sys.exit(1) - -if f.fixhd[FH_HorizGrid] != 0: - print("Error - not a global grid: FH_HorizGrid=", f.fixhd[FH_HorizGrid]) - sys.exit(1) - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - rlookup = f.rlookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - - # Determine the grid from the zeroth latitude and longitude - if not ( np.allclose(rlookup[BZY] + rlookup[BDY], -90.) and - np.allclose(rlookup[BZX] + rlookup[BDX], 0.) ): - if verbose: - print("Skipping grid", ilookup[ITEM_CODE]) - continue - - data = f.readfld(k) - - if len(data.shape)==1: - print("Shape error", ilookup[ITEM_CODE], data.shape) - continue - - anom_sp = data[0,:].max() - data[0,:].min() - anom_np = data[-1,:].max() - data[-1,:].min() - if verbose: - print(ilookup[ITEM_CODE], anom_sp.max(), anom_np.max()) - if anom_sp > 0 or anom_np > 0: - print("Error - polar anomaly: Field %d Level %d Index %d" % (ilookup[ITEM_CODE], ilookup[LBLEV], k)) - rel_sp = rel_np = 0. - if anom_sp > 0: - rel_sp = anom_sp/data[0].mean() - if anom_np > 0: - rel_np = anom_np/data[-1].mean() - print(" Absolute value (SP, NP):", anom_sp, anom_np) - print(" Relative value (SP, NP):", rel_sp, rel_np) - diff --git a/src/prog_fields_mismatch.py b/src/prog_fields_mismatch.py deleted file mode 100644 index 093d7b73..00000000 --- a/src/prog_fields_mismatch.py +++ /dev/null @@ -1,75 +0,0 @@ -# Find reason for mismatch in number of prognostic fields. -# Compare model output that lists the expected fields with the -# fields in the astart file - -# Expected fields start with -# No of objects in this submodel: 197 -# Type Modl Sect Item Address Length Levels Gridtype Halotype -# 1 0 1 0 2 1 1083684 38 18 1 - -# Arguments are model output and restart file - -import sys, umfile, collections -from um_fileheaders import * - -lines = open(sys.argv[1]).readlines() - -# Expected fields -header_found = False -for k, l in enumerate(lines): - if l.lstrip().startswith("No of objects in this submodel"): - header_found = True - break - -if not header_found: - print("Error - header line not found in %s" % (sys.argv[1])) - print("Expecting line starting with 'No of objects in this submodel'") - sys.exit(1) - -# Now look for line starting with 1 -k += 1 -while not lines[k].lstrip().startswith("1 "): - k += 1 - -expected = {} -while True: - fields = lines[k].split() - if len(fields) < 10 or fields[1] != '0': - break - # Stashcode and number of levels - expected[int(fields[4])] = int(fields[7]) - k += 1 - -# Now look at the restart file -f = umfile.UMFile(sys.argv[2]) -if not f.fieldsfile: - print("Error: %s is not a UM fieldsfile") - sys.exit(1) - -start_fields = collections.defaultdict(int) -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if umfile.isprog(ilookup): - start_fields[ilookup[ITEM_CODE]] += 1 - - -print("No. of prognostic fields in start file:", sum(start_fields.values())) -nexpect = sum(expected.values()) -print("Expected no. of prognostic fields: ", nexpect) - -expt = set(expected.keys()) -rest = set(start_fields.keys()) - -# Fields missing from restart -missing = expt-rest -unexpected = rest-expt -if missing: - print("\nFields missing from restart", sorted(missing)) -if unexpected: - print("\nUnexpected fields in restart", sorted(unexpected)) -for fld in expt.intersection(rest): - if expected[fld] != start_fields[fld]: - print("Mismatch in number of fields with code", fld, expected[fld], start_fields[fld]) diff --git a/src/read_stashmaster.py b/src/read_stashmaster.py deleted file mode 100644 index 1f5103df..00000000 --- a/src/read_stashmaster.py +++ /dev/null @@ -1,132 +0,0 @@ -# Read UM STASHmaster file to set up dictionary of variable names etc. -# Field names are taken from Appendix 3 of UMCP C4 - -# Format of STASHmaster file is - -#|Model |Sectn | Item |Name | -#|Space |Point | Time | Grid |LevelT|LevelF|LevelL|PseudT|PseudF|PseudL|LevCom| -#| Option Codes | Version Mask | Halo | -#|DataT |DumpP | PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PCA | -#|Rotate| PPFC | USER | LBVC | BLEV | TLEV |RBLEVV| CFLL | CFFF | - -stash_sections = { - 0:"Prognostic variables at the end of the time-step", - 1: "S.W Radiation", - 2: "L.W Radiation", - 3: "Boundary Layer/Surface", - 4: "Large-Scale Precipitation", - 5: "Convection", - 6: "Gravity Wave drag", - 7: "Vertical diffusion", - 8: "Hydrology", - 9: "Cloud: scheme", - 10: "Adjustment", - 11: "Tracer Advection", - 12: "Primary field advection", - 13: "Diffusion and filtering", - 14: "Energy adjustment", - 15: "Processed dynamics diags", - 16: "Processed physics diags", - 17: "Sulphur Cycle", - 18: "Data assimilation", - 19: "Vegetation", - 20: "Field Calc Diagnostic", - 26: "River Routing", - 30: "Processed Climate diagnostics", - 31: "LBC fields for input (ie. by a LAM model)", - 32: "LBC fields for output", - 33: "Atmospheric Tracers", - 34: "UKCA Chemistry"} - -# Variable data type -datat = { 1:"Real", 2:"Integer", 3:"Logical" } - -levelt = { 0:"Unspecified", 1:"Rho", 2:"Theta", 3:"Pressure", 4:"Obsolete", 5:"Single", 6:"Deep Soil", 7:"Pot. temp." } - -# Pseudo-levels, defined in UMDP C4 and UMUI atmos_STASH_Domain2.pan -pseudt = {0:'None', - 1:'SW radiation bands', - 2: 'LW radiation bands', - 3: 'Atmospheric assimilation groups', - 8: 'HadCM2 Sulphate Loading Pattern Index', - 9: 'Land and vegetation surface types', - 10: 'Sea-ice categories', - 11: 'Snow layers over tiles', - 12: 'COSP radar reflectivity intervals', - 13: 'COSP hydrometeors', - 14: 'COSP lidar SR intervals', - 15: 'COSP tau bins', - 16: 'COSP subcolumns', - 101: 'Atmos User Defined Type 101', - 102: 'Atmos User Defined Type 102', - 103: 'Atmos User Defined Type 103' } - - -def read_stash(filename): - f = open(filename) - - kount = 0 - last_section = 0 - stashd = {} - for l in f.readlines(): - if l.startswith("H3"): - s = l.split("=") - version = s[1].strip() - elif l.startswith("1|"): - # Start of a new variable - vard = {} - s = l.split("|") - model = int(s[1]) - if model == -1: - break - vard["model"] = model - section = int(s[2]) - item = int(s[3]) - vard["section"] = int(s[2]) - vard["item"] = int(s[3]) - vard["name"] = s[4].strip() - code = 1000*section+item - elif l.startswith("2|"): - s = l.split("|") - vard["space"] = int(s[1]) - vard["point"] = int(s[2]) - vard["time"] = int(s[3]) - vard["grid"] = int(s[4]) - vard["levelt"] = int(s[5]) - vard["levelf"] = int(s[6]) - vard["levell"] = int(s[7]) - vard["pseudt"] = int(s[8]) - vard["pseudf"] = int(s[9]) - vard["pseudl"] = int(s[10]) - vard["levcom"] = int(s[11]) - elif l.startswith("3|"): - s = l.split("|") - vard["optioncode"] = s[1].strip() - vard["version_mask"] = s[2].strip() - vard["halo"] = int(s[3]) - elif l.startswith("4|"): - s = l.split("|") - vard["datat"] = int(s[1]) - vard["dumpp"] = int(s[2]) - vard["pc"] = [int(x) for x in s[3].split()] - # print 'atm_stashvar[%d] = ["%s", "", "", ""]' % (code, long_name) - elif l.startswith("5|"): - # Last line - s = l.split("|") - vard["rotate"] = int(s[1]) - vard["ppfc"] = int(s[2]) - vard["user"] = int(s[3]) - vard["lbvc"] = int(s[4]) - vard["blev"] = int(s[5]) - vard["tlev"] = int(s[6]) - vard["rblevv"] = int(s[7]) - vard["cfll"] = int(s[8]) - vard["cfff"] = int(s[9]) - stashd[code] = vard - - return stashd - -if __name__ == '__main__': - stashd = read_stash("STASHmaster_A") - print stashd[3328] - print pseudt[stashd[3328]['pseudt']] diff --git a/src/remove_stash_duplicates.py b/src/remove_stash_duplicates.py deleted file mode 100644 index 68f5a6ab..00000000 --- a/src/remove_stash_duplicates.py +++ /dev/null @@ -1,63 +0,0 @@ -# STASH files from Gregorian calendar runs may end up with duplicate times -# from restarting from dumps that aren't at exact month end. - -# This script looks for such duplicates and removes them -# Uses a check sum to test whether the fields are truly identical. - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * -from zlib import adler32 - -verbose = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i::o:v') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - ofile = opt[1] - elif opt[0] == '-v': - verbose = True -except getopt.error: - print "Usage: remove_stash_duplicates.py -i ifile -o ofile [-v]" - sys.exit(2) - -f = umfile.UMFile(ifile) -g = umfile.UMFile(ofile, "w") -g.copyheader(f) -g.ilookup[:] = -99 # Used as missing value -g.rlookup[:] = np.fromstring(np.array([-99],g.int).tostring(),g.float) - -# Loop over all the fields, counting the number of prognostic fields -kout = 0 -lookupset = set() -checksums = {} -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - if ilookup[LBEGIN] == -99: - break - - s = f.readfld(k,raw=True) - check = adler32(s) - - # Take a copy - tmplookup = np.array(ilookup) - tmplookup[LBEGIN] = tmplookup[NADDR] = 0 - key = tuple(tmplookup) - if key in lookupset: - print "Duplicate", k, ilookup[ITEM_CODE], ilookup[:4] - if check != checksums[key]: - raise Exception("Error - data mismatch %d", k) - else: - lookupset.add(key) - checksums[key] = check - g.ilookup[kout,:] = ilookup[:] - g.rlookup[kout,:] = f.rlookup[k,:] - g.writefld(s, kout, raw=True) - kout += 1 - -# Set the header to be just large enough -g.fixhd[FH_LookupSize2] = kout -g.close() diff --git a/src/reset_neg_snow.py b/src/reset_neg_snow.py deleted file mode 100644 index a4dc402d..00000000 --- a/src/reset_neg_snow.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -# Reset any negative snow values, stash codes 23 and 240 - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - - -ifile = sys.argv[1] - -f = umfile.UMFile(ifile, 'r+') - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] in [23, 240]: - a = f.readfld(k) - a[a<0.] = 0. - f.writefld(a,k) - -f.close() diff --git a/src/show_land_overlap.py b/src/show_land_overlap.py deleted file mode 100644 index 72cfe266..00000000 --- a/src/show_land_overlap.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env python - -# Reconfiguration can give incorrect results if there are land points in the -# target grid but none have an adjacent land point on the global grid - -# This script takes the full region regional mask and marks land points -# that don't have such neighbours by setting mask values to -1. - -# Create a copy of the mask with disallowed corner points - -# Usage is show_land_overlap.py global_mask regional_mask disallowed - -# Note that this isn't going to work for rotated grids. - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import sys -import umfile -from um_fileheaders import * - -file1 = sys.argv[1] -file2 = sys.argv[2] -file3 = sys.argv[3] - -f = umfile.UMFile(file1) -g = umfile.UMFile(file2, 'r+') -h = umfile.UMFile(file3, 'w') - -h.copyheader(g) -h.ilookup[:] = -99 # Used as missing value -h.rlookup[:] = np.fromstring(np.array([-99],h.int).tostring(),h.float) - -def getfld(f): - # Expecting only a single field - ilookup = f.ilookup[0] - - # Check field name and data type. - # Expecting stash code 1 0 30 LAND MASK - if ilookup[ITEM_CODE] != 30: - print "Variable is not land mask, stashcode is", ilookup[ITEM_CODE] - sys.exit(1) - if ilookup[DATA_TYPE] != 3: - print "Variable is not expected logical type, code is", ilookup[DATA_TYPE] - sys.exit(1) - - data = f.readfld(0) - return data, ilookup, f.rlookup[0] - -gmask, ilook1, rlook1 = getfld(f) -# Check that this file is global with starting point at -90,0 -if ( not (rlook1[BDY] + rlook1[BZY] == -90. and - rlook1[BDX] + rlook1[BZX] == 0.) or - not (rlook1[BDY]*ilook1[LBROW] + rlook1[BZY] == 90. and - rlook1[BDX]*(ilook1[LBNPT]+1) + rlook1[BZX] == 360.)): - raise Exception("First file is not global") - -rmask, ilook2, rlook2 = getfld(g) - -# Mask may be +-1 depending on compiler used in ancillary program. -# Coordinates of box centres -glat = rlook1[BZY] + rlook1[BDY]*np.arange(1,ilook1[LBROW]+1) -glon = rlook1[BZX] + rlook1[BDX]*np.arange(1,ilook1[LBNPT]+1) -rlat = rlook2[BZY] + rlook2[BDY]*np.arange(1,ilook2[LBROW]+1) -rlon = rlook2[BZX] + rlook2[BDX]*np.arange(1,ilook2[LBNPT]+1) - -# Find the indices of the global box to the lower left of the regional grid box -ix = np.zeros(ilook2[LBNPT],np.int) -jy = np.zeros(ilook2[LBROW],np.int) - -iarray = np.arange(len(glon)) -for i in range(ilook2[LBNPT]): - # Want index of the largest global lon that's <= rlon[i] - # Don't need to check bounds because we know the TX region is inside - ix[i] = iarray[glon - rlon[i] <= 0][-1] - -jarray = np.arange(len(glat)) -for j in range(ilook2[LBROW]): - jy[j] = jarray[glat - rlat[j] <= 0][-1] - -for j in range(ilook2[LBROW]): - jj = jy[j] - print j - for i in range(ilook2[LBNPT]): - if rmask[j,i]: - ii = ix[i] - if gmask[jj:jj+2,ii:ii+2].sum() == 0: - rmask[j,i] = -1 - -# Now set up array of bad starting points, assuming 300x300 -bad = np.zeros((ilook2[LBROW], ilook2[LBNPT]), np.int) -rmaskp = (rmask == 1) -rmaskm = (rmask == -1) -for j in range(ilook2[LBROW]-300): - print j - mp = rmaskp[j:j+300].sum(axis=0) - mm = rmaskm[j:j+300].sum(axis=0) - for i in range(ilook2[LBNPT]-300): - # If no correct land points and some problem points it's a bad start - if not np.any(mp[i:i+300]) and np.any(mm[i:i+300]): - bad[j,i] = 1 - -g.writefld(rmask,0) -g.close() - -h.ilookup[0,:] = ilook2[:] -h.rlookup[0,:] = rlook2[:] -h.writefld(bad, 0) -h.close() diff --git a/src/sortum.py b/src/sortum.py deleted file mode 100644 index 5447f7f7..00000000 --- a/src/sortum.py +++ /dev/null @@ -1,41 +0,0 @@ -# Based on sortum perl script, but extended to work with file suffixes -# like .nc - -# For non standard file names use the prefix argument. Otherwise assume -# everything before the first . in the first filename is the prefix - -import sys, re, argparse - -parser = argparse.ArgumentParser(description="Sort list of UM files ") -parser.add_argument('-p', '--prefix', dest='prefix', help='Filename prefix') -parser.add_argument('files', nargs='+', help='Filenames to sort') -args = parser.parse_args() - -months = {'jan':'01', 'feb':'02', 'mar':'03', 'apr':'04', - 'may':'05', 'jun':'06', 'jul':'07', 'aug':'08', - 'sep':'09', 'oct':'10', 'nov':'11', 'dec':'12'} - -if not args.prefix: - fname = args.files[0] - args.prefix = fname[:fname.index('.')] -fname_re = re.compile("%s.p[0-9a-z]\d{4,4}(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).*" % args.prefix) - -# Standard suite name -# fname_re = re.compile("[a-z][a-z]\d{3,3}a.p[a-z]\d{4,4}(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec).*") - -flist = [] -for fname in args.files: - m = fname_re.match(fname) - if m: - key = fname[m.start(0):m.start(1)] + months[m.group(1)] +\ - fname[m.end(1):m.end()] - flist.append((key, fname)) - else: - raise Exception("Error in matching name %s" % fname) - -flist.sort() - -for f in flist: - sys.stdout.write('%s ' % f[1]) - - diff --git a/src/split_times.py b/src/split_times.py deleted file mode 100644 index b39c0f57..00000000 --- a/src/split_times.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python - -# Split a UM fieldsfiles into separate files for each valid time - -# Usage is -i input -o output -# where output is used as a file prefix - -import numpy as np -import getopt, sys -import umfile, collections, datetime -from um_fileheaders import * - -def usage(): - print "Usage: split_times.py -i ifile -o output_prefix" - sys.exit(2) - -ifile = None -oprefix = None -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:o:') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - oprefix = opt[1] -except getopt.error: - usage() - -if not ifile or not oprefix: - usage() - -f = umfile.UMFile(ifile) - -# First pass through to get the number of valid times -times=collections.defaultdict(int) -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - if ilookup[LBEGIN] == -99: - break - t = datetime.datetime(ilookup[LBYR], ilookup[LBMON], - ilookup[LBDAT], ilookup[LBHR], - ilookup[LBMIN], ilookup[LBDAY]) - times[t] += 1 - - -for tout in sorted(times.keys()): - ofile = oprefix + "." + tout.strftime('%Y%m%d%H%M') - - g = umfile.UMFile(ofile, "w") - g.copyheader(f) - g.ilookup[:] = -99 # Used as missing value - g.rlookup[:] = np.fromstring(np.array([-99],g.int).tostring(),g.float) - - # Loop over all the fields, selecting those at time tout - kout = 0 - for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - if ilookup[LBEGIN] == -99: - break - t = datetime.datetime(ilookup[LBYR], ilookup[LBMON], - ilookup[LBDAT], ilookup[LBHR], - ilookup[LBMIN], ilookup[LBDAY]) - if t == tout: - g.ilookup[kout,:] = ilookup[:] - g.rlookup[kout,:] = f.rlookup[k,:] - s = f.readfld(k,raw=True) - g.writefld(s, kout, raw=True) - kout += 1 - - # Set the header to be just large enough - g.fixhd[FH_LookupSize2] = kout - print "%d fields written to %s" % (kout, ofile) - g.close() diff --git a/src/sstice_ancil.py b/src/sstice_ancil.py deleted file mode 100644 index 81c01f99..00000000 --- a/src/sstice_ancil.py +++ /dev/null @@ -1,144 +0,0 @@ -# Set up master ancillary files for CAP from the PCMDI SST and ice -# netcdf files. - -# Need to delete the global calendar attribute first -# ncatted -a calendar,global,d,, amipobs_sst.nc - -import umfile, iris, sys, datetime -from um_fileheaders import * -import numpy as np - -# iris.FUTURE.cell_datetime_objects = True -# Not working yet - -# SST file -sst = iris.load_cube(sys.argv[1]) - -lon = sst.coord('longitude') -lat = sst.coord('latitude') -time = sst.coord('time') -dates = time.units.num2date(time.points) - -f = umfile.UMFile('temp', "w") -f.int = np.int64 -f.float = np.float64 -f.wordsize=8 -f.byteorder = '>' # Big endian -f.sectorsize = 1 - -f.createheader(15, 6) - -f.fixhd[:] = f.missval_i # Initialise to missing - -# Minimal fixed header -f.fixhd[FH_SubModel] = 1 -f.fixhd[FH_VertCoord] = 1 -f.fixhd[FH_HorizGrid] = 0 # Global -f.fixhd[FH_Dataset] = 4 # Ancillary -f.fixhd[FH_CalendarType] = 1 # Gregorian -f.fixhd[FH_GridStagger] = 3 -f.fixhd[FH_AncilDataId] = 1 # Ancillary time series -f.fixhd[FH_ModelVersion] = 805 - -# Initial date -f.fixhd[FH_DTYear] = dates[0].year -f.fixhd[FH_DTMonth] = dates[0].month -f.fixhd[FH_DTDay] = dates[0].day -f.fixhd[FH_DTHour] = dates[0].hour -f.fixhd[FH_DTMinute] = f.fixhd[FH_DTSecond] = 0 -daydiff = ( - datetime.datetime(dates[0].year,dates[0].month, dates[0].day) - - datetime.datetime(dates[0].year,1,1) ) -f.fixhd[FH_DTDayNo] = daydiff.days + 1 - -# Final date -f.fixhd[FH_VTYear] = dates[-1].year -f.fixhd[FH_VTMonth] = dates[-1].month -f.fixhd[FH_VTDay] = dates[-1].day -f.fixhd[FH_VTHour] = dates[-1].hour -f.fixhd[FH_DTMinute] = f.fixhd[FH_VTSecond] = 0 -f.fixhd[FH_VTMinute:FH_VTDayNo+1] = 0 -daydiff = ( - datetime.datetime(dates[-1].year,dates[-1].month, dates[-1].day) - - datetime.datetime(dates[-1].year,1,1) ) -f.fixhd[FH_VTDayNo] = daydiff.days + 1 - -# Monthly step -f.fixhd[FH_CTYear:FH_CTDayNo+1] = 0 -f.fixhd[FH_CTMonth] = 1 - -f.fixhd[FH_DataSize] = sst.data.size - -f.fixhd[FH_IntCSize] = 15 -f.fixhd[FH_RealCSize] = 6 - -f.inthead = np.zeros(f.fixhd[FH_IntCSize], f.int) + f.missval_i -f.inthead[IC_XLen] = len(lon.points) -f.inthead[IC_YLen] = len(lat.points) -f.inthead[2] = len(dates) # Seems to be used in ancil files -f.inthead[14] = 1 # Number of field types in file -f.inthead[IC_PLevels] = 1 - -f.realhead = np.zeros(f.fixhd[FH_RealCSize], f.float) + f.missval_r -f.realhead[RC_LongSpacing] = lon.points[1] - lon.points[0] -f.realhead[RC_LatSpacing] = lat.points[1] - lat.points[0] -f.realhead[RC_FirstLong] = lon.points[0] -f.realhead[RC_FirstLat] = lat.points[0] -f.realhead[RC_PoleLong] = 0. -f.realhead[RC_PoleLat] = 90. - -# Start integer header after the fixed header -f.fixhd[FH_IntCStart] = 257 -f.fixhd[FH_RealCStart] = f.fixhd[FH_IntCStart] + f.fixhd[FH_IntCSize] -f.fixhd[FH_LookupStart] = f.fixhd[FH_RealCStart] + f.fixhd[FH_RealCSize] -# Create lookup tables -f.fixhd[FH_LookupSize1] = 64 -f.fixhd[FH_LookupSize2] = sst.shape[0] - -f.fixhd[FH_DataStart] = f.fixhd[FH_LookupStart] + \ - f.fixhd[FH_LookupSize1]*f.fixhd[FH_LookupSize2] - -f.ilookup = np.zeros((f.fixhd[FH_LookupSize2], f.fixhd[FH_LookupSize1]), f.int) -f.rlookup = np.zeros((f.fixhd[FH_LookupSize2], f.fixhd[FH_LookupSize1]), f.float) - -for k in range(sst.shape[0]): - f.ilookup[k,MODEL_CODE] = 1 - f.ilookup[k,ITEM_CODE] = 24 # Surface temperature - f.ilookup[k,LBPACK] = 2 - f.ilookup[k,LBYR] = f.ilookup[k,LBYRD] = dates[k].year - f.ilookup[k,LBMON] = f.ilookup[k,LBMOND] = dates[k].month - f.ilookup[k,LBDAT] = f.ilookup[k,LBDATD] = dates[k].day - f.ilookup[k,LBHR] = f.ilookup[k,LBHRD] = dates[k].hour - # Day no relative to the start of the year (matches what CAP - # produces) - daydiff = ( - datetime.datetime(dates[k].year,dates[k].month, dates[k].day) - - datetime.datetime(dates[k].year,1,1) ) - f.ilookup[k,LBDAY] = f.ilookup[k,LBDAYD] = daydiff.days + 1 - - # For ancillary files at least - f.ilookup[k,LBTIM] = f.fixhd[FH_CalendarType] - f.ilookup[k,LBCODE] = 1 - f.ilookup[k,LBHEM] = 0 - f.ilookup[k,LBREL] = 2 # Header release version <= vn8.0 - f.ilookup[k,LBVC] = 129 # Surface - f.ilookup[k,DATA_TYPE] = 1 # Real - f.ilookup[k,LBROW] = len(lat.points) - f.ilookup[k,LBNPT] = len(lon.points) - - f.rlookup[k,BPLAT] = f.realhead[RC_PoleLat] - f.rlookup[k,BPLON] = f.realhead[RC_PoleLong] - f.rlookup[k,BZY] = f.realhead[RC_FirstLat] - f.realhead[RC_LatSpacing] - f.rlookup[k,BDY] = f.realhead[RC_LatSpacing] - f.rlookup[k,BZX] = f.realhead[RC_FirstLong] - f.realhead[RC_LongSpacing] - f.rlookup[k,BDX] = f.realhead[RC_LongSpacing] - - f.rlookup[k,BMDI] = f.missval_r - f.rlookup[k,BMKS] = 1.0 - - # Better way to do this on creation? - f.rlookup[k] = f.rlookup[k].newbyteorder('>') - - f.writefld(sst.data[k],k) - -f.close() diff --git a/src/stashvar.py b/src/stashvar.py deleted file mode 100644 index 10bd47d6..00000000 --- a/src/stashvar.py +++ /dev/null @@ -1,4702 +0,0 @@ -# UM STASH variable names from section and item numbers -# Where available variable names match PCMDI convention -# Last field is a unique name suitable for filenames or creating multiple -# variables in a single file - -atm_stashvar = {} - -atm_stashvar[2] = ["U COMPNT OF WIND AFTER TIMESTEP", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[3] = ["V COMPNT OF WIND AFTER TIMESTEP", "va", "m s-1", "northward_wind", ""] -atm_stashvar[4] = ["THETA AFTER TIMESTEP", "theta", "K", "", ""] -atm_stashvar[5] = ["OROGRAPHIC GRADIENT X COMPONENT", "orog_dx", "", "", ""] -atm_stashvar[6] = ["OROGRAPHIC GRADIENT Y COMPONENT", "orog_dy", "", "", ""] -atm_stashvar[7] = ["UNFILTERED OROGRAPHY", "orog_unfilt", "", "", ""] -atm_stashvar[8] = ["SOIL BULK DENSITY", "", "kg m-3", "", ""] -atm_stashvar[9] = ["SOIL MOISTURE CONTENT IN A LAYER", "", "", "", ""] -atm_stashvar[10] = ["SPECIFIC HUMIDITY AFTER TIMESTEP", "hus", "1", "specific_humidity", ""] -atm_stashvar[12] = ["QCF AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[13] = ["CONV CLOUD AMOUNT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[14] = ["CONV CLOUD BASE LEVEL NO. AFTER TS", "", "", "", ""] -atm_stashvar[15] = ["CONV CLOUD TOP LEVEL NO. AFTER TS", "", "", "", ""] -atm_stashvar[16] = ["CONV CLOUD LIQUID WATER PATH", "", "", "", ""] -atm_stashvar[17] = ["SILHOUETTE OROGRAPHIC ROUGHNESS", "", "", "", ""] -atm_stashvar[18] = ["HALF OF (PEAK TO TROUGH HT OF OROG)", "", "", "", ""] -atm_stashvar[20] = ["DEEP SOIL TEMP AFTER TIMESTEP", "tsl", "K", "soil_temperature", ""] -atm_stashvar[21] = ["CCRad : Lowest conv. cld base layer", "", "", "", ""] -atm_stashvar[22] = ["CANOPY WATER AFTER TIMESTEP KG/M2", "", "", "", ""] -atm_stashvar[23] = ["SNOW AMOUNT OVER LAND AFT TSTP KG/M2", "snw", "kg m-2", "surface_snow_amount", ""] -atm_stashvar[24] = ["SURFACE TEMPERATURE AFTER TIMESTEP", "ts", "K", "surface_temperature", ""] -atm_stashvar[25] = ["BOUNDARY LAYER DEPTH AFTER TIMESTEP", "bldepth", "m", "", ""] -atm_stashvar[26] = ["ROUGHNESS LENGTH AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[27] = ["SNOW EDGE AFTER TIMESTEP **", "", "", "", ""] -atm_stashvar[28] = ["SURFACE ZONAL CURRENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[29] = ["SURFACE MERID CURRENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[30] = ["LAND MASK (No halo) (LAND=TRUE)", "lmask", "1", "land_binary_mask", ""] -atm_stashvar[31] = ["FRAC OF SEA ICE IN SEA AFTER TSTEP", "sic", "1", "sea_ice_area_fraction", ""] -atm_stashvar[32] = ["SEA ICE DEPTH (MEAN OVER ICE) M", "sit", "m", "sea_ice_thickness", ""] -atm_stashvar[33] = ["OROGRAPHY (/STRAT LOWER BC)", "orog", "m", "surface_altitude", ""] -atm_stashvar[34] = ["STANDARD DEVIATION OF OROGRAPHY", "orog_sd", "", "", ""] -atm_stashvar[35] = ["OROGRAPHIC GRADIENT XX COMPONENT", "orog_dxx", "", "", ""] -atm_stashvar[36] = ["OROGRAPHIC GRADIENT XY COMPONENT", "orog_dxy", "", "", ""] -atm_stashvar[37] = ["OROGRAPHIC GRADIENT YY COMPONENT", "orog_dyy", "", "", ""] -atm_stashvar[38] = ["ICE EDGE IN THE ANCILLARY FILE ONLY", "", "", "", ""] -atm_stashvar[39] = ["SST ANOMALY", "", "", "", ""] -atm_stashvar[40] = ["VOL SMC AT WILTING AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[41] = ["VOL SMC AT CRIT PT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[43] = ["VOL SMC AT SATURATION AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[44] = ["SAT SOIL CONDUCTIVITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[46] = ["THERMAL CAPACITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[47] = ["THERMAL CONDUCTIVITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[48] = ["SATURATED SOIL WATER SUCTION", "", "", "", ""] -atm_stashvar[49] = ["SEA-ICE TEMPERATURE AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[50] = ["VEGETATION FRACTION AFTER TIMESTEP", "", "1", "vegetation_area_fraction", ""] -atm_stashvar[51] = ["ROOT DEPTH AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[52] = ["SNOW-FREE SURFACE ALBEDO AFTER TS", "", "", "", ""] -atm_stashvar[53] = ["DEEP SNOW SURFACE ALBEDO AFTER TS", "", "", "", ""] -atm_stashvar[54] = ["SURFACE RESISTANCE TO EVAP AFTER TS", "", "", "", ""] -atm_stashvar[55] = ["SURFACE CAPACITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[56] = ["INFILTRATION FACTOR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[57] = ["TOTAL AEROSOL EMISSIONS (FOR VIS)", "", "", "", ""] -atm_stashvar[58] = ["SULPHUR DIOXIDE EMISSIONS", "", "kg m-2 s-1", "", ""] -atm_stashvar[59] = ["DIMETHYL SULPHIDE EMISSIONS (ANCIL)", "", "kg m-2 s-1", "", ""] -atm_stashvar[60] = ["OZONE **", "", "", "", ""] -atm_stashvar[70] = ["TURBULENT KINETIC ENERGY", "", "", "", ""] -atm_stashvar[71] = ["SELF COVARIANCE OF THETAL'", "", "", "", ""] -atm_stashvar[72] = ["SELF COVARIANCE OF QW'", "", "", "", ""] -atm_stashvar[73] = ["CORRELATION OF THETAL' AND QW'", "", "", "", ""] -atm_stashvar[74] = ["HEIGHT OF MIXED LAYER FOR SHCU BUOY", "", "", "", ""] -atm_stashvar[75] = ["CLOUD NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[76] = ["RAIN NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[77] = ["RAIN THIRD MOMENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[78] = ["ICE NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[79] = ["SNOW NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[80] = ["SNOW THIRD MOMENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[81] = ["GRAUPEL NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[82] = ["GRAUPEL THIRD MOMENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[83] = ["ACTSOLLIQ AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[84] = ["ACTSOLRAIN AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[85] = ["ACTINSOLICE AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[86] = ["ACTSOLICE AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[87] = ["ACTINSOLLIQUID AERO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[88] = ["ACTSOLNUMBER AERO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[89] = ["ACTINSOLNUMBER AER0 AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[90] = ["TOTAL AEROSOL (FOR VISIBILITY)", "", "", "", ""] -atm_stashvar[91] = ["LIGHTNING POTENTIAL", "", "", "", ""] -atm_stashvar[93] = ["RUNOFF COASTAL OUTFLOW POINT", "", "", "", ""] -atm_stashvar[95] = ["SNOW AMOUNT OVR SEAICE AFT TS KG/M2", "", "", "", ""] -atm_stashvar[96] = ["OCEAN NR. SURFACE CHLOROPHYLL(KGM-3)", "", "", "", ""] -atm_stashvar[97] = ["BARE SOIL MOMENTUM ROUGHNESS LENGTH", "", "", "", ""] -atm_stashvar[98] = ["LOWER BOUNDARY TENDENCIES (OROG)", "", "", "", ""] -atm_stashvar[99] = ["BDY LYR W-VARIANCE FOR MIXED PHASE", "", "", "", ""] -atm_stashvar[101] = ["SO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[102] = ["DIMETHYL SULPHIDE MIX RAT AFTER TS", "", "", "", ""] -atm_stashvar[103] = ["SO4 AITKEN MODE AEROSOL AFTER TSTEP", "", "", "", ""] -atm_stashvar[104] = ["SO4 ACCUM. MODE AEROSOL AFTER TSTEP", "", "", "", ""] -atm_stashvar[105] = ["SO4 DISSOLVED AEROSOL AFTER TSTEP", "", "", "", ""] -atm_stashvar[106] = ["H2O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[107] = ["NH3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[108] = ["FRESH SOOT MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[109] = ["AGED SOOT MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[110] = ["CLOUD SOOT MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[111] = ["FRESH BIOMASS SMOKE AFTER TSTEP", "", "", "", ""] -atm_stashvar[112] = ["AGED BIOMASS SMOKE AFTER TSTEP", "", "", "", ""] -atm_stashvar[113] = ["CLOUD BIOMASS SMOKE AFTER TSTEP", "", "", "", ""] -atm_stashvar[114] = ["FRESH OCFF MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[115] = ["AGED OCFF MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[116] = ["CLOUD OCFF MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[117] = ["ACC NITR MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[118] = ["DISS NITR MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[119] = ["MIN HEIGHT FOR BB HILEV EMISS / M", "", "", "", ""] -atm_stashvar[120] = ["MAX HEIGHT FOR BB HILEV EMISS / M", "", "", "", ""] -atm_stashvar[121] = ["3D NATURAL SO2 EMISSIONS KG/M2/S", "", "", "", ""] -atm_stashvar[122] = ["3D OH CONCENTRATIONS IN MCULES/CC", "", "", "", ""] -atm_stashvar[123] = ["3D HO2 CONCENTRATIONS IN MCULES/CC", "", "", "", ""] -atm_stashvar[124] = ["3D H2O2 MIX RATIO LIMIT FIELD", "", "", "", ""] -atm_stashvar[125] = ["3D OZONE MIX RAT FOR SULPHUR CYCLE", "", "", "", ""] -atm_stashvar[126] = ["HIGH LEVEL SO2 EMISSIONS KG/M2/S", "", "", "", ""] -atm_stashvar[127] = ["AMMONIA GAS EMISSIONS KG/M2/S", "", "", "", ""] -atm_stashvar[128] = ["FRESH SOOT SURF EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[129] = ["FRESH SOOT HI LEV EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[130] = ["FRESH BIOMASS SURF EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[131] = ["FRESH BIOMASS HI LEV EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[132] = ["DMS CONCENTRATION IN SEAWATER", "", "", "", ""] -atm_stashvar[133] = ["DMS OCEAN FLUX KG[S]/M**2/S", "", "", "", ""] -atm_stashvar[134] = ["FRESH OCFF SURF EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[135] = ["FRESH OCFF HI LEV EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[136] = ["CONV PROG 1", "", "", "", ""] -atm_stashvar[137] = ["CONV PROG 2", "", "", "", ""] -atm_stashvar[138] = ["CONV PROG 3", "", "", "", ""] -atm_stashvar[139] = ["CONV PROG PRECIP", "", "", "", ""] -atm_stashvar[150] = ["W COMPNT OF WIND AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[151] = ["RIVER SEQUENCE", "", "", "", ""] -atm_stashvar[152] = ["RIVER DIRECTION", "", "", "", ""] -atm_stashvar[153] = ["RIVER WATER STORAGE M2", "", "", "", ""] -atm_stashvar[155] = ["ACCUMULATED SURFACE RUNOFF KG/M2", "", "", "", ""] -atm_stashvar[156] = ["ACCUMULATED SUB-SURFACE RUNOFF KG/M2", "", "", "", ""] -atm_stashvar[157] = ["GRIDBOX AREAS M2", "", "", "", ""] -atm_stashvar[160] = ["AREA DRAINING (INTEGER) PIXELS", "", "", "", ""] -atm_stashvar[161] = ["SLOPE %", "", "", "", ""] -atm_stashvar[162] = ["INITIAL FLOW VALUES M3/S", "", "", "", ""] -atm_stashvar[163] = ["X-COORDINATE OF OUTFLOW PIXEL", "", "", "", ""] -atm_stashvar[164] = ["Y-COORDINATE OF OUTFLOW PIXEL", "", "", "", ""] -atm_stashvar[165] = ["LAND-TYPE (RIVER/LAND/SEA)", "", "", "", ""] -atm_stashvar[166] = ["SURFACE STORAGE MM", "", "", "", ""] -atm_stashvar[167] = ["SUB-SURFACE STORAGE MM", "", "", "", ""] -atm_stashvar[168] = ["ACC. SURFACE INFLOW TO A PIXEL MM", "", "", "", ""] -atm_stashvar[169] = ["ACC. SUB-SURFACE INFLOW TO PIXEL MM", "", "", "", ""] -atm_stashvar[171] = ["NET DN SW RAD FLUX:OPEN SEA: CPL", "", "", "", ""] -atm_stashvar[172] = ["NET DWN SFC SW FLUX BLW 690NM: CPL", "", "", "", ""] -atm_stashvar[173] = ["NET DOWN SURFACE LW RAD FLUX: CPL", "", "", "", ""] -atm_stashvar[174] = ["NET DN LW RAD FLUX:OPEN SEA: CPL", "", "", "", ""] -atm_stashvar[176] = ["X-COMP SURF & BL WIND STR: CPL N/M2", "", "", "", ""] -atm_stashvar[177] = ["Y-COMP SURF & BL WIND STRL CPL N/M2", "", "", "", ""] -atm_stashvar[178] = ["WIND MIX EN'GY FL TO SEA: CPL W/M2", "", "", "", ""] -atm_stashvar[179] = ["SFC SH FLX FROM OPEN SEA: CPL W/M2", "", "", "", ""] -atm_stashvar[180] = ["SUBLIM. SURFACE (GBM): CPL KG/M2/S", "", "", "", ""] -atm_stashvar[181] = ["EVAP FROM OPEN SEA: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[182] = ["SEAICE SUBLIM CAT(GBM): CPL KG/M2/S", "", "", "", ""] -atm_stashvar[184] = ["Heat flx through sea ice (W/m2): CPL", "", "", "", ""] -atm_stashvar[185] = ["Heat flx in sea ice surface mlt: CPL", "", "", "", ""] -atm_stashvar[186] = ["LARGE SCALE RAIN RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[187] = ["LARGE SCALE SNOW RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[188] = ["CONVECTIVE RAIN RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[189] = ["CONVECTIVE SNOW RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[190] = ["ICEBERG CALVING FIELD: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[191] = ["10 METRE WIND SPEED ON C GRID: CPL", "", "", "", ""] -atm_stashvar[192] = ["River Runoff: CPL", "", "", "", ""] -atm_stashvar[193] = ["PRESSURE AT MEAN SEA LEVEL: CPL Pa", "", "", "", ""] -atm_stashvar[194] = ["SEA SURFACE FREEZING TEMPERATURE: K", "", "", "", ""] -atm_stashvar[195] = ["Seaice surface temperature (cat): CPL (K)", "", "", "", ""] -atm_stashvar[196] = ["SURFACE LEVEL OF CO2 TRACER (MMR): CPL", "", "", "", ""] -atm_stashvar[197] = ["TOTAL DUST DEPOSITION RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[201] = ["PSTAR PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[202] = ["U COMPNT PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[203] = ["V COMPNT PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[204] = ["THETA PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[205] = ["FRACTIONAL LAND COVER", "", "", "", ""] -atm_stashvar[207] = ["CLAPP-HORNBERGER B COEFFICIENT", "", "", "", ""] -atm_stashvar[208] = ["LEAF AREA INDEX OF VEG FRACTION", "", "", "", ""] -atm_stashvar[209] = ["CANOPY HEIGHT OF VEGETATED FRACTION", "", "", "", ""] -atm_stashvar[211] = ["CCA WITH ANVIL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[212] = ["CCRad : CCW passed to radiation", "", "", "", ""] -atm_stashvar[213] = ["CANOPY CONDUCTANCE AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[214] = ["UNFROZEN SOIL MOISTURE FRAC AFTER TS", "", "", "", ""] -atm_stashvar[215] = ["FROZEN SOIL MOISTURE FRAC AFTER TS", "", "", "", ""] -atm_stashvar[216] = ["FRACTIONS OF SURFACE TYPES", "", "", "", ""] -atm_stashvar[217] = ["LEAF AREA INDEX OF PLANT FUNC TYPES", "", "", "", ""] -atm_stashvar[218] = ["CANOPY HEIGHT OF PLANT FUNC TYPES M", "", "", "", ""] -atm_stashvar[219] = ["DISTURBED FRACTION OF VEGETATION", "", "", "", ""] -atm_stashvar[220] = ["SNOW-FREE ALBEDO OF SOIL", "", "", "", ""] -atm_stashvar[221] = ["SNOW SOOT CONTENT", "", "", "", ""] -atm_stashvar[222] = ["NET ENERGY CHANGE THIS PERIOD J/M**2", "", "", "", ""] -atm_stashvar[223] = ["SOIL CARBON CONTENT KG C / M2", "", "", "", ""] -atm_stashvar[224] = ["ACCUMULATED NPP ON PFTS", "", "", "", ""] -atm_stashvar[225] = ["ACCUMULATED LEAF TURNOVER RATE PFTS", "", "", "", ""] -atm_stashvar[226] = ["ACCUMULATED PHENOL LEAF TRNVR PFTS", "", "", "", ""] -atm_stashvar[227] = ["ACCUMULATED WOOD RESPIRATION PFTS", "", "", "", ""] -atm_stashvar[228] = ["ACCUMULATED SOIL RESPIRATION", "", "", "", ""] -atm_stashvar[229] = ["CANOPY WATER ON TILES KG/M2", "", "", "", ""] -atm_stashvar[230] = ["CANOPY CAPACITY ON TILES KG/M2", "", "", "", ""] -atm_stashvar[231] = ["SNOW GRAIN SIZE ON TILES MICRONS", "", "", "", ""] -atm_stashvar[233] = ["SURFACE TEMPERATURE ON TILES K", "ts", "K", "", "ts_tile"] -atm_stashvar[234] = ["ROUGHNESS LENGTH ON TILES M", "", "", "", ""] -atm_stashvar[235] = ["NET MOISTURE FLUX IN PERIOD KG/M**2", "", "", "", ""] -atm_stashvar[236] = ["TILE MODIFIED INFILTRATION RATE", "", "", "", ""] -atm_stashvar[237] = ["DOWNWARD SW RADIATION ON TILES W/M2", "", "", "", ""] -atm_stashvar[238] = ["SURFACE DOWNWARD LW RADIATION W/M2", "rlds", "W m-2", "surface_downwelling_longwave_flux", ""] -atm_stashvar[239] = ["TOA - SURF UPWARD LW RADIATION W/M2", "", "", "", ""] -atm_stashvar[240] = ["SNOW AMOUNT ON TILES KG/M2", "", "", "", ""] -atm_stashvar[241] = ["CANOPY SNOW CAPACITY KG/M2", "", "", "", ""] -atm_stashvar[242] = ["SNOW BENEATH CANOPY KG/M2", "", "", "", ""] -atm_stashvar[243] = ["OBS/CLIM SNOW-FREE SURF SW ALBEDO", "", "", "", ""] -atm_stashvar[244] = ["OBS/CLIM SNOW-FREE SURF VIS ALBEDO", "", "", "", ""] -atm_stashvar[245] = ["OBS/CLIM SNOW-FREE SURF NIR ALBEDO", "", "", "", ""] -atm_stashvar[246] = ["THERMAL ROUGHNESS LENGTH ON TILES M", "", "", "", ""] -atm_stashvar[249] = ["TRIFFID CO2 FLUX TO ATMOS KGC/M2/YR", "", "", "", ""] -atm_stashvar[250] = ["CO2 OCEAN FLUX KG/M**2/S", "", "", "", ""] -atm_stashvar[251] = ["CO2 SURFACE EMISSIONS KG/M**2/S", "co2emiss", "kg m-2 s-1", "", ""] -atm_stashvar[252] = ["CO2 3D TRACER MASS MIXING RATIO", "co2mmr", "", "", ""] -atm_stashvar[253] = ["DENSITY*R*R AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[254] = ["QCL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[255] = ["EXNER PRESSURE (RHO) AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[256] = ["ADVECTED U CMPT OF WIND AFTER TS", "", "", "", ""] -atm_stashvar[257] = ["ADVECTED V CMPT OF WIND AFTER TS", "", "", "", ""] -atm_stashvar[258] = ["ADVECTED W CMPT OF WIND AFTER TS", "", "", "", ""] -atm_stashvar[259] = ["NUMBER OF TURBULENT MIXING LEVELS", "", "", "", ""] -atm_stashvar[260] = ["LEVEL OF BASE OF DEEP STRATOCUMULUS", "", "", "", ""] -atm_stashvar[261] = ["LEVEL OF TOP OF DEEP STRATOCUMULUS", "", "", "", ""] -atm_stashvar[262] = ["BOUNDARY LAYER CONVECTION FLAG", "", "", "", ""] -atm_stashvar[263] = ["SD TURBULENT FLUC LAYER1 TEMP", "", "", "", ""] -atm_stashvar[264] = ["SD TURBULENT FLUC LAYER1 HUMIDITY", "", "", "", ""] -atm_stashvar[265] = ["AREA CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[266] = ["BULK CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[267] = ["LIQUID CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[268] = ["FROZEN CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[269] = ["SURFACE ZONAL CURRENT AFTER TS PGRID", "", "", "", ""] -atm_stashvar[270] = ["SURFACE MERID CURRENT AFTER TS PGRID", "", "", "", ""] -atm_stashvar[271] = ["CLOUD ICE (CRYSTALS) AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[272] = ["RAIN AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[273] = ["GRAUPEL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[274] = ["MEAN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[275] = ["STANDARD DEVN IN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[276] = ["EXP DECAY IN SOIL SAT HYD CONDUCTY", "", "", "", ""] -atm_stashvar[277] = ["INTEGRATED GAMMA DISTRIBUTION", "", "", "", ""] -atm_stashvar[278] = ["MEAN WATER TABLE DEPTH M", "", "", "", ""] -atm_stashvar[279] = ["SURFACE SATURATION FRACTION", "", "", "", ""] -atm_stashvar[280] = ["SURFACE WETLAND FRACTION", "", "", "", ""] -atm_stashvar[281] = ["SATURATION FRAC IN DEEP LAYER", "", "", "", ""] -atm_stashvar[282] = ["A_FSAT HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[283] = ["C_FSAT HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[284] = ["A_FWET HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[285] = ["C_FWET HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[286] = ["PREVIOUS DIST FRAC OF VEGETATION", "", "", "", ""] -atm_stashvar[287] = ["FAST TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[288] = ["MEDIUM TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[289] = ["SLOW TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[290] = ["DAILY ACCUMULATED LAKE FLUX KG/M2", "", "", "", ""] -atm_stashvar[291] = ["LAKE DEPTH (M)", "", "", "", ""] -atm_stashvar[292] = ["LAKE FETCH (M)", "", "", "", ""] -atm_stashvar[293] = ["LAKE MEAN TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[294] = ["LAKE MIXED-LAYER TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[295] = ["LAKE ICE SURFACE TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[296] = ["LAKE MIXED-LAYER DEPTH (M)", "", "", "", ""] -atm_stashvar[297] = ["LAKE ICE THICKNESS (M)", "", "", "", ""] -atm_stashvar[298] = ["LAKE T PROFILE SHAPE FACTOR", "", "", "", ""] -atm_stashvar[299] = ["LAKE GRD HT FLX / DTEMP (W m-2 K-1)", "", "", "", ""] -atm_stashvar[341] = ["TROPOPAUSE-BASED OZONE", "", "", "", ""] -atm_stashvar[342] = ["DEEP CONVECTIVE FLAG", "", "", "", ""] -atm_stashvar[343] = ["PAST CONVECTIVE PRECIP KG/M2/S", "", "", "", ""] -atm_stashvar[344] = ["PAST CONVECTIVE DEPTH M", "", "", "", ""] -atm_stashvar[345] = ["CCA FROM DEEP CONVECTION", "", "", "", ""] -atm_stashvar[346] = ["CCA FROM MID-LEVEL CONVECTION", "", "", "", ""] -atm_stashvar[347] = ["CCA FROM SHALLOW CONVECTION", "", "", "", ""] -atm_stashvar[348] = ["TOT PRECIP RATE AFTER TSTEP KG/M2/S", "", "", "", ""] -atm_stashvar[351] = ["CLIM BIOGENIC AEROSOL MMR", "", "", "", ""] -atm_stashvar[352] = ["CLIM BIOMASS-BURNING (FRESH) MMR", "", "", "", ""] -atm_stashvar[353] = ["CLIM BIOMASS-BURNING (AGED) MMR", "", "", "", ""] -atm_stashvar[354] = ["CLIM BIOMASS-BURNING (IN-CLOUD) MMR", "", "", "", ""] -atm_stashvar[355] = ["CLIM BLACK CARBON (FRESH) MMR", "", "", "", ""] -atm_stashvar[356] = ["CLIM BLACK CARBON (AGED) MMR", "", "", "", ""] -atm_stashvar[357] = ["CLIM SEA SALT (FILM MODE) NPM3", "", "", "", ""] -atm_stashvar[358] = ["CLIM SEA SALT (JET MODE) NPM3", "", "", "", ""] -atm_stashvar[359] = ["CLIM SULPHATE (ACCUMULATION MODE)MMR", "", "", "", ""] -atm_stashvar[360] = ["CLIM SULPHATE (AITKEN MODE) MMR", "", "", "", ""] -atm_stashvar[361] = ["CLIM SULPHATE (DISSOLVED) MMR", "", "", "", ""] -atm_stashvar[362] = ["CLIM DUST SIZE DIVISION 1 MMR", "", "", "", ""] -atm_stashvar[363] = ["CLIM DUST SIZE DIVISION 2 MMR", "", "", "", ""] -atm_stashvar[364] = ["CLIM DUST SIZE DIVISION 3 MMR", "", "", "", ""] -atm_stashvar[365] = ["CLIM DUST SIZE DIVISION 4 MMR", "", "", "", ""] -atm_stashvar[366] = ["CLIM DUST SIZE DIVISION 5 MMR", "", "", "", ""] -atm_stashvar[367] = ["CLIM DUST SIZE DIVISION 6 MMR", "", "", "", ""] -atm_stashvar[368] = ["CLIM ORG C FOSSIL FUEL (FRESH) MMR", "", "", "", ""] -atm_stashvar[369] = ["CLIM ORG C FOSSIL FUEL (AGED) MMR", "", "", "", ""] -atm_stashvar[370] = ["CLIM ORG C FOSSIL FUEL (IN-CLOUD)MMR", "", "", "", ""] -atm_stashvar[371] = ["CLIM DELTA AEROSOL MMR", "", "", "", ""] -atm_stashvar[376] = ["SNOW DEPTH ON GROUND ON TILES (M)", "", "", "", ""] -atm_stashvar[377] = ["SNOWPACK BULK DENSITY (KG M-3)", "", "", "", ""] -atm_stashvar[378] = ["SNOW ON THE CANOPY (KG M-2)", "", "", "", ""] -atm_stashvar[379] = ["SURFACE HEAT FLUX UNDER SNOW (W M-2)", "", "", "", ""] -atm_stashvar[380] = ["NUMBER OF SNOW LAYERS ON TILES", "", "", "", ""] -atm_stashvar[381] = ["SNOW LAYER THICKNESSES ON TILES (M)", "", "", "", ""] -atm_stashvar[382] = ["SNOW LYR ICE MASS ON TILES(KG M-2)", "", "", "", ""] -atm_stashvar[383] = ["SNOW LYR LIQUD MASS ON TILES(KG M-2)", "", "", "", ""] -atm_stashvar[384] = ["SNOW LAYER TEMPERATURE ON TILES (K)", "", "", "", ""] -atm_stashvar[385] = ["SNOW LAYER DENSITY ON TILES (KG M-3)", "", "", "", ""] -atm_stashvar[386] = ["SNOW LYR GRAIN SIZE ON TILES(MICRON)", "", "", "", ""] -atm_stashvar[387] = ["ETADOT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[388] = ["THETAVD AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[389] = ["DRY RHO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[390] = ["PSIW SURFACE AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[391] = ["VAPOUR MIXING RATIO (mv) AFTER TS", "", "", "", ""] -atm_stashvar[392] = ["CLD LIQ MIXING RATIO (mcl) AFTER TS", "", "", "", ""] -atm_stashvar[393] = ["CLD ICE MIXING RATIO (mcf) AFTER TS", "", "", "", ""] -atm_stashvar[394] = ["RAIN MIXING RATIO (mr) AFTER TS", "", "", "", ""] -atm_stashvar[395] = ["GRAUPEL MIXING RATIO (mg) AFTER TS", "", "", "", ""] -atm_stashvar[396] = ["ICE CRY MIXING RAT. (mcf2) AFTER TS", "", "", "", ""] -atm_stashvar[397] = ["PSIW LID AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[398] = ["EXNER SURF AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[406] = ["EXNER PRESSURE AT THETA LEVELS", "", "", "", ""] -atm_stashvar[407] = ["PRESSURE AT RHO LEVELS AFTER TS", "", "", "", ""] -atm_stashvar[408] = ["PRESSURE AT THETA LEVELS AFTER TS", "", "", "", ""] -atm_stashvar[409] = ["SURFACE PRESSURE AFTER TIMESTEP", "ps", "Pa", "surface_air_pressure", ""] -atm_stashvar[410] = ["SW RADIATION INCREMENTS AFTER TS", "", "", "", ""] -atm_stashvar[411] = ["LW RADIATION INCREMENTS AFTER TS", "", "", "", ""] -atm_stashvar[412] = ["FRACTION OF SURFACE TYPE AFTER TS", "", "", "", ""] -atm_stashvar[413] = ["Sea ice concentration by categories", "", "", "", ""] -atm_stashvar[414] = ["Sea ice thickness GBM by categories", "", "", "", ""] -atm_stashvar[415] = ["Sea ice top layer temp by categories (K)", "", "", "", ""] -atm_stashvar[416] = ["Sea ice snow depth by categories", "", "", "", ""] -atm_stashvar[418] = ["Dust parent soil clay fraction (anc)", "", "", "", ""] -atm_stashvar[419] = ["Dust parent soil silt fraction (anc)", "", "", "", ""] -atm_stashvar[420] = ["Dust parent soil sand fraction (anc)", "", "", "", ""] -atm_stashvar[421] = ["Dust soil mass fraction div 1 (anc)", "", "", "", ""] -atm_stashvar[422] = ["Dust soil mass fraction div 2 (anc)", "", "", "", ""] -atm_stashvar[423] = ["Dust soil mass fraction div 3 (anc)", "", "", "", ""] -atm_stashvar[424] = ["Dust soil mass fraction div 4 (anc)", "", "", "", ""] -atm_stashvar[425] = ["Dust soil mass fraction div 5 (anc)", "", "", "", ""] -atm_stashvar[426] = ["Dust soil mass fraction div 6 (anc)", "", "", "", ""] -atm_stashvar[428] = ["Sea ice meltpond fraction by cats", "", "", "", ""] -atm_stashvar[429] = ["Sea ice meltpond depth by cats (m)", "", "", "", ""] -atm_stashvar[431] = ["Dust division 1 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[432] = ["Dust division 2 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[433] = ["Dust division 3 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[434] = ["Dust division 4 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[435] = ["Dust division 5 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[436] = ["Dust division 6 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[440] = ["Seaice surf layer cond (cat)(W/m2/K)", "", "", "", ""] -atm_stashvar[441] = ["Seaice surface temperature (cat) (K)", "", "", "", ""] -atm_stashvar[442] = ["SOIL NITROGEN POOL (DPM) KG N / M2", "", "", "", ""] -atm_stashvar[443] = ["SOIL NITROGEN POOL (RPM) KG N / M2", "", "", "", ""] -atm_stashvar[444] = ["SOIL NITROGEN POOL (BIO) KG N / M2", "", "", "", ""] -atm_stashvar[445] = ["SOIL NITROGEN POOL (HUM) KG N / M2", "", "", "", ""] -atm_stashvar[446] = ["INORGANIC SOIL NITROGEN KG N / M2", "", "", "", ""] -atm_stashvar[447] = ["NITROGEN DEPOSITION (kgN/m2/s)", "", "", "", ""] -atm_stashvar[448] = ["CROP FRACTION", "", "", "", ""] -atm_stashvar[449] = ["CROP FRAC. AT PREV. TRIFFID CALL", "", "", "", ""] -atm_stashvar[458] = ["PASTURE FRACTION", "", "", "", ""] -atm_stashvar[459] = ["PASTURE FRAC. AT PREV. TRIFFID CALL", "", "", "", ""] -atm_stashvar[460] = ["PAR increments after timestep", "", "", "", ""] -atm_stashvar[466] = ["DPM SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[467] = ["RPM SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[468] = ["BIO SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[469] = ["HUM SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[470] = ["ACCUMULATED DPM SOIL RESP", "", "", "", ""] -atm_stashvar[471] = ["ACCUMULATED RPM SOIL RESP", "", "", "", ""] -atm_stashvar[472] = ["ACCUMULATED BIO SOIL RESP", "", "", "", ""] -atm_stashvar[473] = ["ACCUMULATED HUM SOIL RESP", "", "", "", ""] -atm_stashvar[480] = ["PROGNOSTIC OZONE TRACER", "", "", "", ""] -atm_stashvar[481] = ["CARIOLLE PROD-LOSS (P-L)", "", "", "", ""] -atm_stashvar[482] = ["CARIOLLE O3 P-L WRT O3 MIX RATIO", "", "", "", ""] -atm_stashvar[483] = ["CARIOLLE O3 VOL MIXING RATIO", "", "", "", ""] -atm_stashvar[484] = ["CARIOLLE O3 P-L WRT TEMP", "", "", "", ""] -atm_stashvar[485] = ["CARIOLLE O3 CLIM TEMP", "", "", "", ""] -atm_stashvar[486] = ["CARIOLLE O3 P-L WRT O3 ABOVE PL", "", "", "", ""] -atm_stashvar[487] = ["CARIOLLE O3 COLUMN ABOVE PL", "", "", "", ""] -atm_stashvar[490] = ["DECOUPLED SCREEN TEMP ON TILES K", "", "", "", ""] -atm_stashvar[491] = ["DECOUPLED SCREEN TEMP ON SEA/ICE K", "", "", "", ""] -atm_stashvar[492] = ["TIME SINCE TRANSITION S", "", "", "", ""] -atm_stashvar[493] = ["CONVECTIVE DOWNDRAUGHT AT CLD BASE", "", "", "", ""] -atm_stashvar[494] = ["URBAN BUILDING HEIGHT", "", "", "", ""] -atm_stashvar[495] = ["URBAN HEIGHT TO WIDTH RATIO", "", "", "", ""] -atm_stashvar[496] = ["URBAN WIDTH RATIO", "", "", "", ""] -atm_stashvar[497] = ["URBAN DISPLACEMENT HEIGHT", "", "", "", ""] -atm_stashvar[498] = ["URBAN ZTM", "", "", "", ""] -atm_stashvar[499] = ["URBAN WALL ALBEDO", "", "", "", ""] -atm_stashvar[500] = ["URBAN ROAD ALBEDO", "", "", "", ""] -atm_stashvar[501] = ["URBAN WALL EMISSIVITY", "", "", "", ""] -atm_stashvar[502] = ["URBAN ROAD EMISSIVITY", "", "", "", ""] -atm_stashvar[505] = ["Land fraction in grid box", "sftlf", "%", "land_area_fraction", ""] -atm_stashvar[506] = ["LAND SURFACE TEMP AFTER TIMESTEP", "ts", "K", "surface_temperature_where_land", "ts_land"] -atm_stashvar[507] = ["OPEN SEA SURFACE TEMP AFTER TIMESTEP", "ts", "K", "surface_temperature_where_open_sea", "ts_sea"] -atm_stashvar[508] = ["SEA-ICE SURFACE TEMP AFTER TIMESTEP", "ts", "K", "surface_temperature", "ts_ice"] -atm_stashvar[509] = ["SEA ICE ALBEDO AFTER TS", "", "", "", ""] -atm_stashvar[510] = ["MEAN LAND ALBEDO AFTER TS", "", "", "", ""] -atm_stashvar[511] = ["INLANDBASINFLOW ATM GRID KG/M2/S", "", "", "", ""] -atm_stashvar[569] = ["COLDPOOL FRONT VECTR SUM X-CMPT(M/S)", "", "", "", ""] -atm_stashvar[570] = ["COLDPOOL FRONT VECTR SUM Y-CMPT(M/S)", "", "", "", ""] -atm_stashvar[571] = ["COLDPOOL FRONT SCALAR SUM (M/S)", "", "", "", ""] -atm_stashvar[572] = ["COLDPOOL REDUCED GRAVITY (M/S2)", "", "", "", ""] -atm_stashvar[573] = ["COLDPOOL DEPTH (M)", "", "", "", ""] -atm_stashvar[574] = ["COLDPOOL REMAIN COUNTER (ISOTROPIC)", "", "", "", ""] -atm_stashvar[575] = ["COLDPOOL REMAIN COUNTER (DIRECTED)", "", "", "", ""] -atm_stashvar[576] = ["TEMP OF TILED SUBSURFACE (K)", "", "", "", ""] -atm_stashvar[577] = ["PV tracer for radiation param", "", "", "", ""] -atm_stashvar[578] = ["PV tracer for SW param", "", "", "", ""] -atm_stashvar[579] = ["PV tracer for LW param", "", "", "", ""] -atm_stashvar[580] = ["PV tracer for microphysics param", "", "", "", ""] -atm_stashvar[581] = ["PV tracer for GWD param", "", "", "", ""] -atm_stashvar[582] = ["PV tracer for slow physics", "", "", "", ""] -atm_stashvar[583] = ["PV tracer for convection param", "", "", "", ""] -atm_stashvar[584] = ["PV tracer for Boundary Layer param", "", "", "", ""] -atm_stashvar[585] = ["PV tracer for stochastic physics", "", "", "", ""] -atm_stashvar[586] = ["PV tracer for cloud pressure", "", "", "", ""] -atm_stashvar[587] = ["PV tracer for IAU", "", "", "", ""] -atm_stashvar[588] = ["PV tracer for Nudging scheme", "", "", "", ""] -atm_stashvar[589] = ["Total dPV in a timestep", "", "", "", ""] -atm_stashvar[590] = ["PV tracer for advection", "", "", "", ""] -atm_stashvar[591] = ["PV tracer for Helmholtz solver", "", "", "", ""] -atm_stashvar[592] = ["PV tracer for Mass update", "", "", "", ""] -atm_stashvar[593] = ["Advection only PV", "", "", "", ""] -atm_stashvar[595] = ["BL PERT SCHEME RANDOM NUMB FIELD", "", "", "", ""] -atm_stashvar[596] = ["BL PERT SCHEME FLAG", "", "", "", ""] -atm_stashvar[600] = ["Theta tracer for initial theta", "", "", "", ""] -atm_stashvar[601] = ["Theta tracer for BL", "", "", "", ""] -atm_stashvar[602] = ["Theta tracer for BL mixing", "", "", "", ""] -atm_stashvar[603] = ["Theta tracer for BL Latent Heat", "", "", "", ""] -atm_stashvar[604] = ["Theta tracer for Convection", "", "", "", ""] -atm_stashvar[605] = ["Theta tracer for microphysics", "", "", "", ""] -atm_stashvar[606] = ["Theta tracer for radiation", "", "", "", ""] -atm_stashvar[607] = ["Theta tracer for SW radiation", "", "", "", ""] -atm_stashvar[608] = ["Theta tracer for LW radiation", "", "", "", ""] -atm_stashvar[609] = ["Theta tracer for slow physics", "", "", "", ""] -atm_stashvar[610] = ["Theta tracer for cloud rebalancing", "", "", "", ""] -atm_stashvar[1004] = ["TEMPERATURE AFTER SW RAD INCREMENTS", "", "", "", ""] -atm_stashvar[1101] = ["HORIZON ANGLE 1 (N)", "", "", "", ""] -atm_stashvar[1102] = ["HORIZON ANGLE 2 (NE)", "", "", "", ""] -atm_stashvar[1103] = ["HORIZON ANGLE 3 (E)", "", "", "", ""] -atm_stashvar[1104] = ["HORIZON ANGLE 4 (SE)", "", "", "", ""] -atm_stashvar[1105] = ["HORIZON ANGLE 5 (S)", "", "", "", ""] -atm_stashvar[1106] = ["HORIZON ANGLE 6 (SW)", "", "", "", ""] -atm_stashvar[1107] = ["HORIZON ANGLE 7 (W)", "", "", "", ""] -atm_stashvar[1108] = ["HORIZON ANGLE 8 (NW)", "", "", "", ""] -atm_stashvar[1109] = ["HORIZON ANGLE 9 (NNE)", "", "", "", ""] -atm_stashvar[1110] = ["HORIZON ANGLE 10 (ENE)", "", "", "", ""] -atm_stashvar[1111] = ["HORIZON ANGLE 11 (ESE)", "", "", "", ""] -atm_stashvar[1112] = ["HORIZON ANGLE 12 (SSE)", "", "", "", ""] -atm_stashvar[1113] = ["HORIZON ANGLE 13 (SSW)", "", "", "", ""] -atm_stashvar[1114] = ["HORIZON ANGLE 14 (WSW)", "", "", "", ""] -atm_stashvar[1115] = ["HORIZON ANGLE 15 (WNW)", "", "", "", ""] -atm_stashvar[1116] = ["HORIZON ANGLE 16 (NNW)", "", "", "", ""] -atm_stashvar[1130] = ["SOLID ANGLE FOR TRANSIT OBSERVER 1AU", "", "", "", ""] -atm_stashvar[1140] = ["COS SOLAR ZENITH ANGLE: MODEL TSTEP", "", "", "", ""] -atm_stashvar[1141] = ["DAYLIGHT FRACTION OF MODEL TIMESTEP", "", "", "", ""] -atm_stashvar[1142] = ["COS SOLAR ZENITH ANGLE: RAD TIMESTEP", "", "", "", ""] -atm_stashvar[1143] = ["DAYLIGHT FRACTION OF RADIATION TSTEP", "", "", "", ""] -atm_stashvar[1161] = ["TEMPERATURE INCR: swrad MINUS LH PC2", "", "", "", ""] -atm_stashvar[1181] = ["TEMPERATURE INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1182] = ["SPECIFIC HUMIDITY INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1183] = ["QCL INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1192] = ["BULK CLOUD VOL INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1193] = ["LIQUID CLOUD VOL INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1194] = ["QCL INCR: swrad positive", "", "", "", ""] -atm_stashvar[1195] = ["QCL INCR: swrad negative", "", "", "", ""] -atm_stashvar[1198] = ["LIQ CLOUD VOL INCR: swrad positive", "", "", "", ""] -atm_stashvar[1199] = ["LIQ CLOUD VOL INCR: swrad negative", "", "", "", ""] -atm_stashvar[1200] = ["LIT MASK FOR SW RADIATION TIMESTEP", "", "", "", ""] -atm_stashvar[1201] = ["NET DOWN SURFACE SW FLUX: SW TS ONLY", "rss", "W m-2", "surface_net_downward_shortwave_flux", ""] -atm_stashvar[1202] = ["NET DOWN SURFACE SW FLUX: CORRECTED", "rss", "W m-2", "surface_net_downward_shortwave_flux", "rss_corr"] -atm_stashvar[1203] = ["NET DN SW RAD FLUX:OPEN SEA:SEA MEAN", "rss_sea", "", "", ""] -atm_stashvar[1204] = ["NET DOWN SURFACE SW FLUX BELOW 690NM", "", "", "", ""] -atm_stashvar[1205] = ["OUTGOING SW RAD FLUX (TOA):CORRECTED", "", "", "", ""] -atm_stashvar[1207] = ["INCOMING SW RAD FLUX (TOA): ALL TSS", "rsdt", "W m-2", "toa_incoming_shortwave_flux", ""] -atm_stashvar[1208] = ["OUTGOING SW RAD FLUX (TOA)", "rsut", "W m-2", "toa_outgoing_shortwave_flux", ""] -atm_stashvar[1209] = ["CLEAR-SKY (II) UPWARD SW FLUX (TOA)", "rsutcs", "W m-2", "toa_outgoing_shortwave_flux_assuming_clear_sky", ""] -atm_stashvar[1210] = ["CLEAR-SKY (II) DOWN SURFACE SW FLUX", "rsdscs", "W m-2", "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", ""] -atm_stashvar[1211] = ["CLEAR-SKY (II) UP SURFACE SW FLUX", "rsuscs", "W m-2", "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", ""] -atm_stashvar[1212] = ["DIRECT UV FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1213] = ["UPWARDS UV FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1214] = ["DOWNWARDS UV FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1215] = ["DIRECT SURFACE SW FLUX : CORRECTED", "", "", "", ""] -atm_stashvar[1216] = ["DIFFUSE SURFACE SW FLUX : CORRECTED", "", "", "", ""] -atm_stashvar[1217] = ["UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1218] = ["DOWNWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1219] = ["CLEAR-SKY UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1220] = ["CLEAR-SKY DOWNWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1221] = ["LAYER CLD LIQ RE * LAYER CLD WEIGHT", "", "", "", ""] -atm_stashvar[1223] = ["LAYER CLOUD WEIGHT FOR MICROPHYSICS", "", "", "", ""] -atm_stashvar[1224] = ["LAYER CLD LIQUID WATER PATH * WEIGHT", "", "", "", ""] -atm_stashvar[1225] = ["CONV CLOUD LIQ RE * CONV CLD WEIGHT", "", "", "", ""] -atm_stashvar[1226] = ["CONV CLOUD WEIGHT FOR MICROPHYSICS", "", "", "", ""] -atm_stashvar[1228] = ["CLEAR UPWARD SW AT TOA * AREA WEIGHT", "", "", "", ""] -atm_stashvar[1229] = ["CLEAR-SKY SW AREA WEIGHT", "", "", "", ""] -atm_stashvar[1230] = ["DIRECT SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1231] = ["DIFFUSE SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1232] = ["SW HEATING RATES: ALL TIMESTEPS", "", "", "", ""] -atm_stashvar[1233] = ["CLEAR-SKY SW HEATING RATES", "", "", "", ""] -atm_stashvar[1235] = ["TOTAL DOWNWARD SURFACE SW FLUX", "rsds", "W m-2", "surface_downwelling_shortwave_flux_in_air", ""] -atm_stashvar[1237] = ["NET DOWNWARD SW FLUX AT THE TROP.", "", "", "", ""] -atm_stashvar[1238] = ["UPWARD SW FLUX AT THE TROPOPAUSE", "", "", "", ""] -atm_stashvar[1241] = ["DROPLET NUMBER CONC * LYR CLOUD WGT", "", "", "", ""] -atm_stashvar[1242] = ["LAYER CLOUD LWC * LAYER CLOUD WEIGHT", "", "", "", ""] -atm_stashvar[1243] = ["SO4 CCN KG/M3 * COND SAMPLING WEIGHT", "", "", "", ""] -atm_stashvar[1244] = ["CONDITIONAL SAMPLING WEIGHT", "", "", "", ""] -atm_stashvar[1245] = ["2-D RE DISTRIBUTION * 2-D RE WEIGHT", "", "", "", ""] -atm_stashvar[1246] = ["WEIGHT FOR 2-D RE DISTRIBUTION", "", "", "", ""] -atm_stashvar[1247] = ["FILM-MODE SEA-SALT AEROSOL NUMBER", "", "", "", ""] -atm_stashvar[1248] = ["JET-MODE SEA-SALT AEROSOL NUMBER", "", "", "", ""] -atm_stashvar[1254] = ["2-D RE * WEIGHT - WARM CLOUDS ONLY", "", "", "", ""] -atm_stashvar[1255] = ["WEIGHT FOR WARM CLOUD 2-D RE", "", "", "", ""] -atm_stashvar[1257] = ["NET DOWN SW FLUX: LAND", "rss", "W m-2", "surface_net_downward_shortwave_flux", ""] -atm_stashvar[1258] = ["NET DN SW FLX:SEAICE:SEA MEAN", "", "", "", ""] -atm_stashvar[1259] = ["NET DN SW SOLID SFC FLUX BELOW 690NM", "", "", "", ""] -atm_stashvar[1260] = ["NET DN SW O SEA FLX BLW 690NM:SEA MN", "", "", "", ""] -atm_stashvar[1262] = ["WEIGHTED SW CLOUD EXTINCTION", "", "", "", ""] -atm_stashvar[1263] = ["WEIGHTS FOR CLOUD SW EXTINCTION", "", "", "", ""] -atm_stashvar[1264] = ["WEIGHTED SW LAYER CLOUD EXTINCTION", "", "", "", ""] -atm_stashvar[1265] = ["WEIGHTS FOR LAYER CLD SW EXTINCTION", "", "", "", ""] -atm_stashvar[1266] = ["WEIGHTED SW CONV. CLOUD EXTINCTION", "", "", "", ""] -atm_stashvar[1267] = ["WEIGHTS FOR CONV.CLD SW EXTINCTION", "", "", "", ""] -atm_stashvar[1268] = ["DIRECT SURFACE ALBEDO ON SW BANDS", "", "", "", ""] -atm_stashvar[1269] = ["DIFFUSE SURFACE ALBEDO ON SW BANDS", "", "", "", ""] -atm_stashvar[1270] = ["VIS ALBEDO SCALING TO OBS ON TILES", "", "", "", ""] -atm_stashvar[1271] = ["NIR ALBEDO SCALING TO OBS ON TILES", "", "", "", ""] -atm_stashvar[1272] = ["DIRECT FLUX FOR SPHERICAL GEOMETRY", "", "", "", ""] -atm_stashvar[1273] = ["CLEAR DIRECT FLUX (SPHERICAL GEOM)", "", "", "", ""] -atm_stashvar[1274] = ["CLEAN DIRECT FLUX (SPHERICAL GEOM)", "", "", "", ""] -atm_stashvar[1275] = ["CLEAR-CLEAN DIRECT FLUX (SPH GEOM)", "", "", "", ""] -atm_stashvar[1276] = ["DIRECT FLUX DIVERGENCE OVER LAYERS", "", "", "", ""] -atm_stashvar[1277] = ["CLEAR-SKY DIRECT FLUX DIVERGENCE", "", "", "", ""] -atm_stashvar[1278] = ["CLEAN-AIR DIRECT FLUX DIVERGENCE", "", "", "", ""] -atm_stashvar[1279] = ["CLEAR-CLEAN DIRECT FLUX DIVERGENCE", "", "", "", ""] -atm_stashvar[1280] = ["COLUMN-INTEGRATED Nd * SAMP. WEIGHT", "", "", "", ""] -atm_stashvar[1281] = ["SAMP. WEIGHT FOR COL. INT. Nd", "", "", "", ""] -atm_stashvar[1288] = ["DOWNWARD SURFACE UV FLUX", "", "", "", ""] -atm_stashvar[1289] = ["CLEAR-SKY DOWNWARD SURFACE UV FLUX", "", "", "", ""] -atm_stashvar[1290] = ["TOTAL DOWNWARD PAR FLUX AT SURFACE", "", "", "", ""] -atm_stashvar[1291] = ["DIRECT COMPONENT OF SURF PAR FLUX", "", "", "", ""] -atm_stashvar[1292] = ["MEAN SOLAR BEARING OVER RAD TS", "", "", "", ""] -atm_stashvar[1293] = ["SLOPE ASPECT", "", "", "", ""] -atm_stashvar[1294] = ["SLOPE ANGLE", "", "", "", ""] -atm_stashvar[1295] = ["OROG CORR FACTOR TO DIRECT SURF SW", "", "", "", ""] -atm_stashvar[1296] = ["EXTRA SW SURF FLUX AFTER OROG CORR", "", "", "", ""] -atm_stashvar[1298] = ["CDNC @CLOUD TOP * WEIGHT", "", "", "", ""] -atm_stashvar[1299] = ["WEIGHT FOR CDNC @CLOUD TOP", "", "", "", ""] -atm_stashvar[1408] = ["OUTGOING SW RAD FORCING (TOA)", "", "", "", ""] -atm_stashvar[1409] = ["CLEAR-SKY (II) UPWARD SW FORC.(TOA)", "", "", "", ""] -atm_stashvar[1410] = ["CLEAR-SKY (II) DOWN SURF. SW FORC.", "", "", "", ""] -atm_stashvar[1411] = ["CLEAR-SKY (II) UP SURF. SW FORC.", "", "", "", ""] -atm_stashvar[1417] = ["UPWARD SW FLUX ON LEVELS W/ FORCING", "", "", "", ""] -atm_stashvar[1418] = ["DOWNWARD SW FLUX ON LEVELS W/ FORC", "", "", "", ""] -atm_stashvar[1419] = ["CLEAR-SKY UP SW ON LEVELS W/ FORCING", "", "", "", ""] -atm_stashvar[1420] = ["CLEAR-SKY DOWN SW ON LEVELS W/ FORC", "", "", "", ""] -atm_stashvar[1433] = ["CLEAR-SKY SW HEATING RATES W/ FORC", "", "", "", ""] -atm_stashvar[1435] = ["TOTAL DOWNWARD SURF. SW FORCING", "", "", "", ""] -atm_stashvar[1437] = ["NET DOWNWARD SW AT TROP. W/ FORCING", "", "", "", ""] -atm_stashvar[1438] = ["UPWARD SW AT TROPOPAUSE W/ FORCING", "", "", "", ""] -atm_stashvar[1472] = ["DIRECT FLUX SPHERICAL GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1473] = ["CLEAR DIRECT FLUX SPH GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1474] = ["CLEAN DIRECT FLUX SPH GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1475] = ["CLR-CLN DIRECT FLX SPH GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1476] = ["DIRECT FLUX DIVERGENCE 2nd CALL", "", "", "", ""] -atm_stashvar[1477] = ["CLEAR-SKY DIRECT FLUX DIV 2nd CALL", "", "", "", ""] -atm_stashvar[1478] = ["CLEAN-AIR DIRECT FLUX DIV 2nd CALL", "", "", "", ""] -atm_stashvar[1479] = ["CLEAR-CLEAN DIRECT FLUX DIV 2nd CALL", "", "", "", ""] -atm_stashvar[1500] = ["SW DOWN OVER ICE, WGHTD (cats)(W/m2)", "", "", "", ""] -atm_stashvar[1501] = ["SW DOWN OVER ICE, WGHTD (aggr)(W/m2)", "", "", "", ""] -atm_stashvar[1502] = ["SW UP OVER ICE, WGHTED (cats)(W/m2)", "", "", "", ""] -atm_stashvar[1503] = ["SW UP OVER ICE, WGHTED (aggr)(W/m2)", "", "", "", ""] -atm_stashvar[1504] = ["SEA ICE ALBEDO, WEIGHTED (cats)", "", "", "", ""] -atm_stashvar[1505] = ["SEA ICE ALBEDO, WEIGHTED (aggregate)", "", "", "", ""] -atm_stashvar[1506] = ["TOTAL AOD IN LAYERS AND SW BANDS", "", "", "", ""] -atm_stashvar[1507] = ["TOTAL SCATTERING AOD LAYERS/SW BANDS", "", "", "", ""] -atm_stashvar[1508] = ["AERO ASYM (WGTD) IN LAYERS/SW BANDS", "", "", "", ""] -atm_stashvar[1509] = ["UPWARD SW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[1510] = ["DOWNWARD SW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[1511] = ["CLEAR UP SW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[1512] = ["CLEAR DOWN SW FLUX ON LEVS AND BANDS", "", "", "", ""] -atm_stashvar[1513] = ["SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1514] = ["CLEAR-SKY SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1515] = ["CLEAN-AIR SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1516] = ["CLEAR-CLEAN SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1517] = ["CLEAN-AIR UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1518] = ["CLEAN-AIR DOWNWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1519] = ["CLEAR-CLEAN UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1520] = ["CLEAR-CLEAN DOWNWARD SW FLUX ON LEVS", "", "", "", ""] -atm_stashvar[1521] = ["UPWARD SW FLUX ON LEVELS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1522] = ["DOWNWARD SW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1523] = ["CLEAR UP SW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1524] = ["CLR DOWN SW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1525] = ["UP SW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1526] = ["DOWN SW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1527] = ["CLR UP SW FLUX LEVS/BNDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1528] = ["CLR DOWN SW FLUX LVS/BNDS W/GHG FORC", "", "", "", ""] -atm_stashvar[1529] = ["DIRECT FLUX SPH GEOM W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1530] = ["CLR DIRECT FLUX SPH GEOM W/ GHG FORC", "", "", "", ""] -atm_stashvar[1531] = ["DIRECT FLUX DIVERGENCE W/ GHG FORC", "", "", "", ""] -atm_stashvar[1532] = ["CLEAR DIRECT FLUX DIV W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1533] = ["DIRECT FLUX SPH BANDS W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1534] = ["CLR DIRECT FLUX SPH BANDS W/GHG FORC", "", "", "", ""] -atm_stashvar[1535] = ["DIRECT FLUX DIV BANDS W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1536] = ["CLR DIRECT FLUX DIV BANDS W/GHG FORC", "", "", "", ""] -atm_stashvar[1537] = ["DIRECT FLUX (SPHERICAL GEOM) BANDS", "", "", "", ""] -atm_stashvar[1538] = ["CLEAR DIRECT FLUX (SPH GEOM) BANDS", "", "", "", ""] -atm_stashvar[1539] = ["CLEAN DIRECT FLUX (SPH GEOM) BANDS", "", "", "", ""] -atm_stashvar[1540] = ["CLR-CLN DIRECT FLUX (SPH GEOM) BANDS", "", "", "", ""] -atm_stashvar[1541] = ["DIRECT FLUX DIVERGENCE ON BANDS", "", "", "", ""] -atm_stashvar[1542] = ["CLEAR-SKY DIRECT FLUX DIV ON BANDS", "", "", "", ""] -atm_stashvar[1543] = ["CLEAN-AIR DIRECT FLUX DIV ON BANDS", "", "", "", ""] -atm_stashvar[1544] = ["CLEAR-CLEAN DIRECT FLUX DIV ON BANDS", "", "", "", ""] -atm_stashvar[1545] = ["CLEAN-AIR UP SW FLUX ON LEVELS/BANDS", "", "", "", ""] -atm_stashvar[1546] = ["CLEAN-AIR DOWN SW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[1547] = ["CLEAR-CLEAN UP SW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[1548] = ["CLEAR-CLEAN DOWN SW FLUX LEVS/BANDS", "", "", "", ""] -atm_stashvar[1550] = ["EASYAEROSOL EXTINCTION ON SW BANDS", "", "", "", ""] -atm_stashvar[1551] = ["EASYAEROSOL ABSORPTION ON SW BANDS", "", "", "", ""] -atm_stashvar[1552] = ["EASYAEROSOL SCATTERING ON SW BANDS", "", "", "", ""] -atm_stashvar[1553] = ["EASYAEROSOL ASY*SCA ON SW BANDS", "", "", "", ""] -atm_stashvar[1555] = ["TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1556] = ["CLEAR-SKY TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1557] = ["CLEAN-AIR TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1558] = ["CLEAR-CLEAN TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1709] = ["UPWARD SW FLUX LEVS/BANDS W/ FORCING", "", "", "", ""] -atm_stashvar[1710] = ["DOWNWARD SW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[1711] = ["CLEAR UP SW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[1712] = ["CLEAR DOWN SW FLUX LEVS/BNDS W/ FORC", "", "", "", ""] -atm_stashvar[1713] = ["SW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1714] = ["CLEAR SW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1715] = ["CLEAN SW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1716] = ["CLR-CLN SW EMISSION SPEC 2nd CALL", "", "", "", ""] -atm_stashvar[1717] = ["CLEAN-AIR UPWARD SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1718] = ["CLEAN-AIR DOWNWARD SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1719] = ["CLEAR-CLEAN UPWARD SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1720] = ["CLEAR-CLEAN DOWN SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1737] = ["DIRECT FLUX SPH GEOM BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1738] = ["CLEAR DIRECT FLUX SPH BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1739] = ["CLEAN DIRECT FLUX SPH BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1740] = ["CLR-CLN DIRECT FLX SPH BAND 2nd CALL", "", "", "", ""] -atm_stashvar[1741] = ["DIRECT FLUX DIV ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1742] = ["CLEAR DIRECT FLUX DIV BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1743] = ["CLEAN DIRECT FLUX DIV BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1744] = ["CLR-CLN DIRECT FLX DIV BAND 2nd CALL", "", "", "", ""] -atm_stashvar[1745] = ["CLEAN UP SW FLUX ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1746] = ["CLEAN DOWN SW FLUX ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1747] = ["CLR-CLN UP SW FLUX ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1748] = ["CLR-CLN DOWN SW FLUX BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1755] = ["TRANSMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1756] = ["CLEAR TRANSMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1757] = ["CLEAN TRANSMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1758] = ["CLR-CLN TRANSMISSION SPEC 2nd CALL", "", "", "", ""] -atm_stashvar[2004] = ["TEMPERATURE AFTER LW RAD INCREMENTS", "", "", "", ""] -atm_stashvar[2101] = ["SKYVIEW FACTOR", "", "", "", ""] -atm_stashvar[2110] = ["MASS USED FOR RAD LAYERS (kg/m2)", "", "", "", ""] -atm_stashvar[2111] = ["DENSITY USED FOR RAD LAYERS (kg/m3)", "", "", "", ""] -atm_stashvar[2112] = ["HEAT CAPACITY OF RAD LAYERS (J/K.m2)", "", "", "", ""] -atm_stashvar[2113] = ["PRESSURE USED FOR RAD LAYERS (Pa)", "", "", "", ""] -atm_stashvar[2114] = ["TEMPERATURE USED FOR RAD LAYERS (K)", "", "", "", ""] -atm_stashvar[2115] = ["PRESSURE USED FOR RAD LEVELS (Pa)", "", "", "", ""] -atm_stashvar[2116] = ["TEMPERATURE USED FOR RAD LEVELS (K)", "", "", "", ""] -atm_stashvar[2130] = ["SOLID ANGLE FOR OBSERVER AT 1AU", "", "", "", ""] -atm_stashvar[2161] = ["TEMPERATURE INCR: lwrad MINUS LH PC2", "", "", "", ""] -atm_stashvar[2181] = ["TEMPERATURE INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2182] = ["SPECIFIC HUMIDITY INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2183] = ["QCL INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2192] = ["BULK CLOUD VOL INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2193] = ["LIQUID CLOUD VOL INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2194] = ["QCL INCR: lwrad positive", "", "", "", ""] -atm_stashvar[2195] = ["QCL INCR: lwrad negative", "", "", "", ""] -atm_stashvar[2198] = ["LIQ CLOUD VOL INCR: lwrad positive", "", "", "", ""] -atm_stashvar[2199] = ["LIQ CLOUD VOL INCR: lwrad negative", "", "", "", ""] -atm_stashvar[2201] = ["NET DOWN SURFACE LW RAD FLUX", "rls", "W m-2", "surface_net_downward_longwave_flux", ""] -atm_stashvar[2203] = ["NET DN LW RAD FLUX:OPEN SEA:SEA MEAN", "", "", "", ""] -atm_stashvar[2204] = ["TOTAL CLOUD AMOUNT IN LW RADIATION", "clt", "1", "cloud_area_fraction", ""] -atm_stashvar[2205] = ["OUTGOING LW RAD FLUX (TOA)", "rlut", "W m-2", "toa_outgoing_longwave_flux", ""] -atm_stashvar[2206] = ["CLEAR-SKY (II) UPWARD LW FLUX (TOA)", "rlutcs", "W m-2", "toa_outgoing_longwave_flux_assuming_clear_sky", ""] -atm_stashvar[2207] = ["DOWNWARD LW RAD FLUX: SURFACE", "rlds", "W m-2", "surface_downwelling_longwave_flux_in_air", ""] -atm_stashvar[2208] = ["CLEAR-SKY (II) DOWN SURFACE LW FLUX", "rldscs", "W m-2", "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", ""] -atm_stashvar[2217] = ["UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2218] = ["DOWNWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2219] = ["CLEAR-SKY UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2220] = ["CLEAR-SKY DOWNWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2228] = ["CLEAR UPWARD LW AT TOA * AREA WEIGHT", "", "", "", ""] -atm_stashvar[2229] = ["CLEAR-SKY LW AREA WEIGHT", "", "", "", ""] -atm_stashvar[2232] = ["LW HEATING RATES", "", "", "", ""] -atm_stashvar[2233] = ["CLEAR-SKY LW HEATING RATES", "", "", "", ""] -atm_stashvar[2237] = ["NET DOWNWARD LW FLUX AT THE TROP.", "", "", "", ""] -atm_stashvar[2238] = ["DOWNWARD LW FLUX AT THE TROPOPAUSE", "", "", "", ""] -atm_stashvar[2240] = ["AITKEN (SOLUBLE) ABS OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2241] = ["ACCUM (SOLUBLE) ABS OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2242] = ["COARSE (SOLUBLE) ABS OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2243] = ["AITKEN (INSOL) ABS OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2244] = ["ACCUM (INSOL) ABS OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2245] = ["COARSE (INSOL) ABS OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2251] = ["AITKEN MODE (SOLUBLE) STRATO AOD", "", "", "", ""] -atm_stashvar[2252] = ["ACCUM MODE (SOLUBLE) STRATO AOD", "", "", "", ""] -atm_stashvar[2253] = ["COARSE MODE (SOLUBLE) STRATO AOD", "", "", "", ""] -atm_stashvar[2254] = ["AITKEN MODE (INSOL) STRATO AOD", "", "", "", ""] -atm_stashvar[2255] = ["ACCUM MODE (INSOL) STRATO AOD", "", "", "", ""] -atm_stashvar[2256] = ["COARSE MODE (INSOL) STRATO AOD", "", "", "", ""] -atm_stashvar[2260] = ["OZONE MASS MIXING RATIO AFTER LW", "", "", "", ""] -atm_stashvar[2261] = ["TOTAL CLOUD AMOUNT ON LEVELS", "", "", "", ""] -atm_stashvar[2262] = ["WEIGHTED CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2263] = ["WEIGHTS FOR CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2264] = ["WEIGHTED LAYER CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2265] = ["WEIGHTS FOR LAYER CLD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2266] = ["WEIGHTED CONV.CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2267] = ["WEIGHTS FOR CONV.CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2269] = ["ISCCP CLOUD WEIGHTS", "", "", "", ""] -atm_stashvar[2270] = ["ISCCP CLOUD 0.3 <= tau", "", "", "", ""] -atm_stashvar[2271] = ["ISCCP CLOUD tau < 0.3", "", "", "", ""] -atm_stashvar[2272] = ["ISCCP CLOUD 0.3 <= tau < 1.3", "", "", "", ""] -atm_stashvar[2273] = ["ISCCP CLOUD 1.3 <= tau < 3.6", "", "", "", ""] -atm_stashvar[2274] = ["ISCCP CLOUD 3.6 <= tau < 9.4", "", "", "", ""] -atm_stashvar[2275] = ["ISCCP CLOUD 9.4 <= tau < 23.0", "", "", "", ""] -atm_stashvar[2276] = ["ISCCP CLOUD 23.0 <= tau < 60.0", "", "", "", ""] -atm_stashvar[2277] = ["ISCCP CLOUD 60.0 <= tau", "", "", "", ""] -atm_stashvar[2280] = ["Ozone Tropopause Index", "", "", "", ""] -atm_stashvar[2281] = ["Ozone Tropopause Height", "", "", "", ""] -atm_stashvar[2282] = ["Thermal Tropopause Index", "", "", "", ""] -atm_stashvar[2283] = ["Thermal Tropopause Height", "", "", "", ""] -atm_stashvar[2284] = ["SULPHATE OPTICAL DEPTH IN RADIATION", "aod_so4", "", "", ""] -atm_stashvar[2285] = ["MINERAL DUST OPTICAL DEPTH IN RADN.", "aod_dust", "", "", ""] -atm_stashvar[2286] = ["SEA SALT OPTICAL DEPTH IN RADIATION", "aod_ss", "", "", ""] -atm_stashvar[2287] = ["SOOT OPTICAL DEPTH IN RADIATION", "aod_bc", "", "", ""] -atm_stashvar[2288] = ["BIOMASS OPTICAL DEPTH IN RADIATION", "aod_biomass", "", "", ""] -atm_stashvar[2289] = ["BIOGENIC OPTICAL DEPTH IN RADIATION", "aod_biogenic", "", "", ""] -atm_stashvar[2290] = ["WEIGHTED ISCCP CLOUD ALBEDO", "", "", "", ""] -atm_stashvar[2291] = ["WEIGHTED ISCCP CLOUD OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2292] = ["WEIGHTED ISCCP CLOUD TOP PRESSURE", "", "", "", ""] -atm_stashvar[2293] = ["WEIGHTED ISCCP TOTAL CLOUD AREA", "", "", "", ""] -atm_stashvar[2295] = ["FOSSIL FUEL ORG C OPTIC DEPTH IN RAD", "", "", "", ""] -atm_stashvar[2296] = ["DELTA AEROSOL OPTICAL DEPTH IN RADN.", "", "", "", ""] -atm_stashvar[2297] = ["AMMONIUM NITRATE OPTICAL DEPTH RADN.", "", "", "", ""] -atm_stashvar[2298] = ["TOTAL OPTICAL DEPTH IN RADIATION", "", "", "", ""] -atm_stashvar[2299] = ["ANGSTROM FROM TOTAL AOD IN RADIATION", "", "", "", ""] -atm_stashvar[2300] = ["AITKEN MODE (SOLUBLE) OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2301] = ["ACCUM MODE (SOLUBLE) OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2302] = ["COARSE MODE (SOLUBLE) OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2303] = ["AITKEN MODE (INSOL) OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2304] = ["ACCUM MODE (INSOL) OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2305] = ["COARSE MODE (INSOL) OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2308] = ["GRIDBOX LSC Qcl IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2309] = ["GRIDBOX LSC Qcf IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2310] = ["GRIDBOX CNV Qcl IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2311] = ["GRIDBOX CNV Qcf IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2312] = ["GRIDBOX LIQ LSC CF IN RADIATION", "", "", "", ""] -atm_stashvar[2313] = ["GRIDBOX ICE LSC CF IN RADIATION", "", "", "", ""] -atm_stashvar[2314] = ["GRIDBOX LIQ CCA IN RADIATION", "", "", "", ""] -atm_stashvar[2315] = ["GRIDBOX ICE CCA IN RADIATION", "", "", "", ""] -atm_stashvar[2317] = ["CONVECTIVE CORE 3D CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2318] = ["GRIDBOX CONVECTIVE CORE Qcl KG/KG", "", "", "", ""] -atm_stashvar[2319] = ["GRIDBOX CONVECTIVE CORE Qcf KG/KG", "", "", "", ""] -atm_stashvar[2320] = ["COSP: MASK FOR CALIPSO CF ON LVLS", "", "", "", ""] -atm_stashvar[2321] = ["COSP: MASK FOR CALIPSO LOW-LEVEL CF", "", "", "", ""] -atm_stashvar[2322] = ["COSP: MASK FOR CALIPSO MID-LEVEL CF", "", "", "", ""] -atm_stashvar[2323] = ["COSP: MASK FOR CALIPSO HIGH-LEVEL CF", "", "", "", ""] -atm_stashvar[2324] = ["COSP: MASK FOR CALIPSO TOTAL CF", "", "", "", ""] -atm_stashvar[2325] = ["COSP: MASK FOR CALIPSO CF ON 40 LVLS", "", "", "", ""] -atm_stashvar[2326] = ["COSP: MASK FOR 2.358", "", "", "", ""] -atm_stashvar[2327] = ["COSP: MASK FOR 2.359", "", "", "", ""] -atm_stashvar[2330] = ["COSP: ISCCP/MISR/MODIS CLOUD WEIGHTS", "", "", "", ""] -atm_stashvar[2331] = ["COSP: ISCCP WEIGHTED CLOUD ALBEDO", "", "", "", ""] -atm_stashvar[2332] = ["COSP: ISCCP WEIGHTED CLOUD TAU", "", "", "", ""] -atm_stashvar[2333] = ["COSP: ISCCP WEIGHTED CLOUD TOP PRES.", "", "", "", ""] -atm_stashvar[2334] = ["COSP: ISCCP TOTAL CLOUD AREA", "", "", "", ""] -atm_stashvar[2335] = ["COSP: ISCCP ALL-SKY 10.5 MICRON Tb", "", "", "", ""] -atm_stashvar[2336] = ["COSP: ISCCP CLEAR-SKY 10.5 MICRON Tb", "", "", "", ""] -atm_stashvar[2337] = ["COSP: ISCCP CTP-TAU HISTOGRAM", "", "", "", ""] -atm_stashvar[2340] = ["COSP: CALIPSO MOLECULAR BACKSCATTER", "", "", "", ""] -atm_stashvar[2341] = ["COSP: CALIPSO TOTAL BACKSCATTER", "", "", "", ""] -atm_stashvar[2342] = ["COSP: CALIPSO CFAD SCATTERING RATIO", "", "", "", ""] -atm_stashvar[2343] = ["COSP: CALIPSO CLOUD AREA ON LEVELS", "", "", "", ""] -atm_stashvar[2344] = ["COSP: CALIPSO LOW-LEVEL CLOUD", "", "", "", ""] -atm_stashvar[2345] = ["COSP: CALIPSO MID-LEVEL CLOUD", "", "", "", ""] -atm_stashvar[2346] = ["COSP: CALIPSO HIGH-LEVEL CLOUD", "", "", "", ""] -atm_stashvar[2347] = ["COSP: CALIPSO TOTAL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2348] = ["COSP: PARASOL TOA REFLECTANCE", "", "", "", ""] -atm_stashvar[2349] = ["COSP: CALIPSO-ONLY 3D CLOUD AREA", "", "", "", ""] -atm_stashvar[2350] = ["COSP: CLOUDSAT CFAD REFLECTIVITY", "", "", "", ""] -atm_stashvar[2351] = ["COSP: CLOUDSAT REFLECTIVITY", "", "", "", ""] -atm_stashvar[2352] = ["COSP: SUBCOLUMN CLOUD ARRAY", "", "", "", ""] -atm_stashvar[2353] = ["COSP: GBX-MEAN CSAT Ze MDL LEVELS", "", "", "", ""] -atm_stashvar[2354] = ["COSP: GBX-MEAN CSAT Ze 40 LEVELS", "", "", "", ""] -atm_stashvar[2355] = ["COSP: GBX-MEAN CALIPSO ATB MDL LVLS", "", "", "", ""] -atm_stashvar[2356] = ["COSP: GBX-MEAN CALIPSO ATB 40 LVLS", "", "", "", ""] -atm_stashvar[2357] = ["COSP: CALIPSO MOLECULAR ATB 40 LVLS", "", "", "", ""] -atm_stashvar[2358] = ["COSP: CALIPSO/CLOUDSAT CLOUD MDL LEV", "", "", "", ""] -atm_stashvar[2359] = ["COSP: CALIPSO/CLOUDSAT CLOUD 40 LEV", "", "", "", ""] -atm_stashvar[2360] = ["COSP: MISR CTH-TAU HISTOGRAM", "", "", "", ""] -atm_stashvar[2370] = ["COSP: CALIPSO CFAD SR 40 CSAT LEVELS", "", "", "", ""] -atm_stashvar[2371] = ["COSP: CALIPSO CLOUD AREA 40 CSAT LVS", "", "", "", ""] -atm_stashvar[2372] = ["COSP: CLOUDSAT CFAD Ze 40 CSAT LVLS", "", "", "", ""] -atm_stashvar[2373] = ["COSP: HYDROMETEOR EFFECTIVE RADIUS", "", "", "", ""] -atm_stashvar[2374] = ["COSP: CALIPSO-ONLY 3D CLOUD 40 LVLS", "", "", "", ""] -atm_stashvar[2375] = ["COSP: LARGE-SCALE CLOUD OPT. DEPTH", "", "", "", ""] -atm_stashvar[2376] = ["COSP: LARGE-SCALE CLOUD EMISSIVITY", "", "", "", ""] -atm_stashvar[2377] = ["COSP: CONVECTIVE CLOUD OPT. DEPTH", "", "", "", ""] -atm_stashvar[2378] = ["COSP: CONVECTIVE CLOUD EMISSIVITY", "", "", "", ""] -atm_stashvar[2380] = ["COSP: Reff L-S CLOUD LIQUID WATER", "", "", "", ""] -atm_stashvar[2381] = ["COSP: Reff L-S CLOUD ICE", "", "", "", ""] -atm_stashvar[2382] = ["COSP: Reff L-S CLOUD RAINFALL", "", "", "", ""] -atm_stashvar[2383] = ["COSP: Reff L-S CLOUD SNOWFALL", "", "", "", ""] -atm_stashvar[2384] = ["COSP: Reff CONV CLOUD LIQUID WATER", "", "", "", ""] -atm_stashvar[2385] = ["COSP: Reff CONV CLOUD ICE", "", "", "", ""] -atm_stashvar[2386] = ["COSP: Reff CONV CLOUD RAINFALL", "", "", "", ""] -atm_stashvar[2387] = ["COSP: Reff CONV CLOUD SNOWFALL", "", "", "", ""] -atm_stashvar[2388] = ["COSP: Reff L-S CLOUD GRAUPEL", "", "", "", ""] -atm_stashvar[2389] = ["COSP: 3D CONVECTIVE RAINFALL RATE", "", "", "", ""] -atm_stashvar[2390] = ["COSP: 3D CONVECTIVE SNOWFALL RATE", "", "", "", ""] -atm_stashvar[2391] = ["LARGE SCALE LIQUID WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2392] = ["LARGE SCALE ICE WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2393] = ["CONVECTIVE LIQUID WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2394] = ["CONVECTIVE ICE WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2395] = ["CONV. CORE LIQUID WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2396] = ["CONVECTIVE CORE ICE WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2397] = ["L-S LIQ WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2398] = ["L-S ICE WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2399] = ["CNV LIQ WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2400] = ["CNV ICE WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2406] = ["CLEAR-SKY (II) UPWARD LW FORC.(TOA)", "", "", "", ""] -atm_stashvar[2407] = ["DOWNWARD LW RAD FORCING: SURFACE", "", "", "", ""] -atm_stashvar[2408] = ["CLEAR-SKY (II) DOWN SURF. LW FORC.", "", "", "", ""] -atm_stashvar[2417] = ["UPWARD LW FLUX ON LEVELS W/ FORCING", "", "", "", ""] -atm_stashvar[2418] = ["DOWNWARD LW FLUX ON LEVELS W/ FORC", "", "", "", ""] -atm_stashvar[2419] = ["CLEAR-SKY UP LW ON LEVELS W/ FORCING", "", "", "", ""] -atm_stashvar[2420] = ["CLEAR-SKY DOWN LW ON LEVELS W/ FORC", "", "", "", ""] -atm_stashvar[2421] = ["SULPHATE OPTICAL DEPTH FROM PROGN.", "", "", "", ""] -atm_stashvar[2422] = ["DUST OPTICAL DEPTH FROM PROGNOSTIC", "", "", "", ""] -atm_stashvar[2423] = ["SEA SALT OPTICAL DEPTH, DIAGNOSED", "", "", "", ""] -atm_stashvar[2424] = ["SOOT OPTICAL DEPTH FROM PROGNOSTIC", "", "", "", ""] -atm_stashvar[2425] = ["BIOMASS OPTICAL DEPTH FROM PROGN.", "", "", "", ""] -atm_stashvar[2426] = ["OCFF OPTICAL DEPTH FROM PROGNOSTIC", "", "", "", ""] -atm_stashvar[2427] = ["AMM. NITRATE OPT. DEPTH FROM PROGN.", "", "", "", ""] -atm_stashvar[2433] = ["CLEAR-SKY LW HEATING RATES W/ FORC", "", "", "", ""] -atm_stashvar[2437] = ["NET DOWNWARD LW AT TROP W/ FORCING", "", "", "", ""] -atm_stashvar[2438] = ["DOWNWARD LW AT TROPOPAUSE W/ FORCING", "", "", "", ""] -atm_stashvar[2450] = ["COSP: MODIS CTP-TAU HISTOGRAM", "", "", "", ""] -atm_stashvar[2451] = ["COSP: MODIS WEIGHTED TOT. CLOUD AREA", "", "", "", ""] -atm_stashvar[2452] = ["COSP: MODIS LIQUID CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2453] = ["COSP: MODIS ICE CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2454] = ["COSP: MODIS HIGH-LVL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2455] = ["COSP: MODIS MID-LVL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2456] = ["COSP: MODIS LOW-LVL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2457] = ["COSP: MODIS WEIGHTED TAU - TOTAL", "", "", "", ""] -atm_stashvar[2458] = ["COSP: MODIS WEIGHTED TAU - LIQUID", "", "", "", ""] -atm_stashvar[2459] = ["COSP: MODIS WEIGHTED TAU - ICE", "", "", "", ""] -atm_stashvar[2460] = ["COSP: MODIS WEIGHTED LOG(TAU) -TOTAL", "", "", "", ""] -atm_stashvar[2461] = ["COSP: MODIS WEIGHTED LOG(TAU) - LIQ", "", "", "", ""] -atm_stashvar[2462] = ["COSP: MODIS WEIGHTED LOG(TAU) - ICE", "", "", "", ""] -atm_stashvar[2463] = ["COSP: MODIS WEIGHTED Reff LIQUID", "", "", "", ""] -atm_stashvar[2464] = ["COSP: MODIS WEIGHTED Reff ICE", "", "", "", ""] -atm_stashvar[2465] = ["COSP: MODIS WEIGHTED CLOUD TOP PRES.", "", "", "", ""] -atm_stashvar[2466] = ["COSP: MODIS WEIGHTED LIQUID W. PATH", "", "", "", ""] -atm_stashvar[2467] = ["COSP: MODIS WEIGHTED ICE WATER PATH", "", "", "", ""] -atm_stashvar[2473] = ["COSP: CALIPSO CF 40 LVLS (LIQ)", "", "", "", ""] -atm_stashvar[2474] = ["COSP: CALIPSO CF 40 LVLS (ICE)", "", "", "", ""] -atm_stashvar[2475] = ["COSP: CALIPSO CF 40 LVLS (UNDET)", "", "", "", ""] -atm_stashvar[2476] = ["COSP: CALIPSO LOW-LEVEL CF (LIQ)", "", "", "", ""] -atm_stashvar[2477] = ["COSP: CALIPSO MID-LEVEL CF (LIQ)", "", "", "", ""] -atm_stashvar[2478] = ["COSP: CALIPSO HIGH-LEVEL CF (LIQ)", "", "", "", ""] -atm_stashvar[2479] = ["COSP: CALIPSO TOTAL CLOUD (LIQ)", "", "", "", ""] -atm_stashvar[2480] = ["COSP: CALIPSO LOW-LEVEL CF (ICE)", "", "", "", ""] -atm_stashvar[2481] = ["COSP: CALIPSO MID-LEVEL CF (ICE)", "", "", "", ""] -atm_stashvar[2482] = ["COSP: CALIPSO HIGH-LEVEL CF (ICE)", "", "", "", ""] -atm_stashvar[2483] = ["COSP: CALIPSO TOTAL CLOUD (ICE)", "", "", "", ""] -atm_stashvar[2484] = ["COSP: CALIPSO LOW-LEVEL CF (UNDET)", "", "", "", ""] -atm_stashvar[2485] = ["COSP: CALIPSO MID-LEVEL CF (UNDET)", "", "", "", ""] -atm_stashvar[2486] = ["COSP: CALIPSO HIGH-LEVEL CF (UNDET)", "", "", "", ""] -atm_stashvar[2487] = ["COSP: CALIPSO TOTAL CLOUD (UNDET)", "", "", "", ""] -atm_stashvar[2500] = ["LW DOWN OVER ICE, WGHTD (cats)(W/m2)", "", "", "", ""] -atm_stashvar[2501] = ["LW DOWN OVER ICE, WGHTD (aggr)(W/m2)", "", "", "", ""] -atm_stashvar[2502] = ["LW UP OVR ICE WGHTD(cats)(W/m2)(ret)", "", "", "", ""] -atm_stashvar[2503] = ["LW UP OVR ICE WGHTD(aggr)(W/m2)(ret)", "", "", "", ""] -atm_stashvar[2505] = ["DEPTH OF LAYERS IN RADIATION (M)", "", "", "", ""] -atm_stashvar[2506] = ["TOTAL AOD IN LAYERS AND LW BANDS", "", "", "", ""] -atm_stashvar[2507] = ["TOTAL SCATTERING AOD LAYERS/LW BANDS", "", "", "", ""] -atm_stashvar[2508] = ["AERO ASYM (WGTD) IN LAYERS/LW BANDS", "", "", "", ""] -atm_stashvar[2509] = ["UPWARD LW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[2510] = ["DOWNWARD LW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[2511] = ["CLEAR UP LW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[2512] = ["CLEAR DOWN LW FLUX ON LEVS AND BANDS", "", "", "", ""] -atm_stashvar[2513] = ["LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2514] = ["CLEAR-SKY LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2515] = ["CLEAN-AIR LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2516] = ["CLEAR-CLEAN LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2517] = ["CLEAN-AIR UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2518] = ["CLEAN-AIR DOWNWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2519] = ["CLEAR-CLEAN UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2520] = ["CLEAR-CLEAN DOWNWARD LW FLUX ON LEVS", "", "", "", ""] -atm_stashvar[2521] = ["UPWARD LW FLUX ON LEVELS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2522] = ["DOWNWARD LW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2523] = ["CLEAR UP LW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2524] = ["CLR DOWN LW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2525] = ["UP LW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2526] = ["DOWN LW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2527] = ["CLR UP LW FLUX LEVS/BNDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2528] = ["CLR DOWN LW FLUX LVS/BNDS W/GHG FORC", "", "", "", ""] -atm_stashvar[2530] = ["UKCA 3D AEROSOL EXTINCTION", "", "", "", ""] -atm_stashvar[2531] = ["UKCA 3D AEROSOL ABSORPTION", "", "", "", ""] -atm_stashvar[2532] = ["UKCA 3D AEROSOL SCATTERING", "", "", "", ""] -atm_stashvar[2533] = ["UKCA 3D AEROSOL ASY * SCATTERING", "", "", "", ""] -atm_stashvar[2540] = ["CLASSIC 3D AEROSOL EXTINCTION", "", "", "", ""] -atm_stashvar[2541] = ["CLASSIC 3D AEROSOL ABSORPTION", "", "", "", ""] -atm_stashvar[2542] = ["CLASSIC 3D AEROSOL SCATTERING", "", "", "", ""] -atm_stashvar[2545] = ["CLEAN-AIR UP LW FLUX ON LEVELS/BANDS", "", "", "", ""] -atm_stashvar[2546] = ["CLEAN-AIR DOWN LW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[2547] = ["CLEAR-CLEAN UP LW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[2548] = ["CLEAR-CLEAN DOWN LW FLUX LEVS/BANDS", "", "", "", ""] -atm_stashvar[2550] = ["EASYAEROSOL EXTINCTION ON LW BANDS", "", "", "", ""] -atm_stashvar[2551] = ["EASYAEROSOL ABSORPTION ON LW BANDS", "", "", "", ""] -atm_stashvar[2552] = ["EASYAEROSOL SCATTERING ON LW BANDS", "", "", "", ""] -atm_stashvar[2553] = ["EASYAEROSOL ASY*SCA ON LW BANDS", "", "", "", ""] -atm_stashvar[2584] = ["SULPHATE ABSORPTION OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2585] = ["MINERAL DUST ABS. OPICAL DEPTH", "", "", "", ""] -atm_stashvar[2586] = ["SEA SALT ABSORPTION OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2587] = ["SOOT ABSORPTION OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2588] = ["BIOMASS ABSORPTION OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2589] = ["BIOGENIC ABSORPTION OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2595] = ["FOSSIL FUEL ORG C ABS. OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2597] = ["AMMONIUM NITRATE ABS. OPTICAL DEPTH", "", "", "", ""] -atm_stashvar[2709] = ["UPWARD LW FLUX LEVS/BANDS W/ FORCING", "", "", "", ""] -atm_stashvar[2710] = ["DOWNWARD LW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[2711] = ["CLEAR UP LW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[2712] = ["CLEAR DOWN LW FLUX LEVS/BNDS W/ FORC", "", "", "", ""] -atm_stashvar[2713] = ["LW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[2714] = ["CLEAR LW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[2715] = ["CLEAN LW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[2716] = ["CLR-CLN LW EMISSION SPEC 2nd CALL", "", "", "", ""] -atm_stashvar[3002] = ["U COMPNT OF WIND AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3003] = ["V COMPNT OF WIND AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3004] = ["TEMPERATURE AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3010] = ["SPECIFIC HUMIDITY AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3024] = ["SURFACE TEMPERATURE AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3025] = ["BOUNDARY LAYER DEPTH AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3026] = ["ROUGHNESS LEN. AFTER B.L. (SEE DOC)", "", "", "", ""] -atm_stashvar[3027] = ["EFFECTIVE ROUGHNESS LEN FOR SCALARS", "", "", "", ""] -atm_stashvar[3028] = ["ROUGH LEN FOR MOMENTUM WITHOUT OROG", "", "", "", ""] -atm_stashvar[3049] = ["SEA-ICE TEMPERATURE AFTER B. LAYER", "", "", "", ""] -atm_stashvar[3050] = ["MOISTURE EXCHANGE COEFFS", "", "", "", ""] -atm_stashvar[3051] = ["COMBINED RESIST. TO EVAP ON TILES", "", "", "", ""] -atm_stashvar[3052] = ["COEFFS RATIO FOR 1.5M T ON TILES", "", "", "", ""] -atm_stashvar[3053] = ["QSAT GRAD W.R. T SURF L1 ON TILES", "", "", "", ""] -atm_stashvar[3054] = ["AERODYNAMIC RESISTANCE (S/M)", "", "", "", ""] -atm_stashvar[3055] = ["CUMULATIVE FRACTION TRANSPIRATION", "", "", "", ""] -atm_stashvar[3056] = ["LAND MEAN COMBINED RESIST. TO EVAP", "", "", "", ""] -atm_stashvar[3057] = ["LAND MEAN COEFFS RATIO FOR 1.5M T", "", "", "", ""] -atm_stashvar[3058] = ["LAND MEAN QSAT GRAD W.R. T SURF L1", "", "", "", ""] -atm_stashvar[3060] = ["RHOKH_MIX", "", "", "", ""] -atm_stashvar[3061] = ["RHO_ARESIST (RHOSTAR*CD_STD*VSHR)", "", "", "", ""] -atm_stashvar[3062] = ["ARESIST [ 1/(CD_STD*VSHR) ]", "", "", "", ""] -atm_stashvar[3063] = ["RESIST_B (1/CH-1/CD_STD)/VSHR", "", "", "", ""] -atm_stashvar[3064] = ["DTRDZ_CHARNEY_GRID", "", "", "", ""] -atm_stashvar[3065] = ["GRID-LEVEL OF SML INVERSION (kent)", "", "", "", ""] -atm_stashvar[3066] = ["Rho * entrainment rate (we_lim)", "", "", "", ""] -atm_stashvar[3067] = ["Fraction of the timestep (t_frac)", "", "", "", ""] -atm_stashvar[3068] = ["zrzi", "", "", "", ""] -atm_stashvar[3069] = ["GRID-LEVEL OF DSC INVERSION (kent)", "", "", "", ""] -atm_stashvar[3070] = ["Rho * entrainment rate dsc", "", "", "", ""] -atm_stashvar[3071] = ["Fraction of the timestep dsc", "", "", "", ""] -atm_stashvar[3072] = ["zrzi dsc", "", "", "", ""] -atm_stashvar[3073] = ["ZHSC Top of decoupled layer", "", "", "", ""] -atm_stashvar[3074] = ["Dust div1 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3075] = ["Dust div2 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3076] = ["Dust div3 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3077] = ["Dust div4 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3078] = ["Dust div5 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3079] = ["Dust div6 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3100] = ["FLUX OF TRACER 1 IN BL", "", "", "", ""] -atm_stashvar[3101] = ["FLUX OF TRACER 2 IN BL", "", "", "", ""] -atm_stashvar[3102] = ["FLUX OF TRACER 3 IN BL", "", "", "", ""] -atm_stashvar[3103] = ["FLUX OF TRACER 4 IN BL", "", "", "", ""] -atm_stashvar[3104] = ["FLUX OF TRACER 5 IN BL", "", "", "", ""] -atm_stashvar[3105] = ["FLUX OF TRACER 6 IN BL", "", "", "", ""] -atm_stashvar[3106] = ["FLUX OF TRACER 7 IN BL", "", "", "", ""] -atm_stashvar[3107] = ["FLUX OF TRACER 8 IN BL", "", "", "", ""] -atm_stashvar[3108] = ["FLUX OF TRACER 9 IN BL", "", "", "", ""] -atm_stashvar[3109] = ["FLUX OF TRACER 10 IN BL", "", "", "", ""] -atm_stashvar[3110] = ["FLUX OF TRACER 11 IN BL", "", "", "", ""] -atm_stashvar[3111] = ["FLUX OF TRACER 12 IN BL", "", "", "", ""] -atm_stashvar[3112] = ["FLUX OF TRACER 13 IN BL", "", "", "", ""] -atm_stashvar[3113] = ["FLUX OF TRACER 14 IN BL", "", "", "", ""] -atm_stashvar[3114] = ["FLUX OF TRACER 15 IN BL", "", "", "", ""] -atm_stashvar[3115] = ["FLUX OF TRACER 16 IN BL", "", "", "", ""] -atm_stashvar[3116] = ["FLUX OF TRACER 17 IN BL", "", "", "", ""] -atm_stashvar[3117] = ["FLUX OF TRACER 18 IN BL", "", "", "", ""] -atm_stashvar[3118] = ["FLUX OF TRACER 19 IN BL", "", "", "", ""] -atm_stashvar[3119] = ["FLUX OF TRACER 20 IN BL", "", "", "", ""] -atm_stashvar[3120] = ["FLUX OF TRACER 21 IN BL", "", "", "", ""] -atm_stashvar[3121] = ["FLUX OF TRACER 22 IN BL", "", "", "", ""] -atm_stashvar[3122] = ["FLUX OF TRACER 23 IN BL", "", "", "", ""] -atm_stashvar[3123] = ["FLUX OF TRACER 24 IN BL", "", "", "", ""] -atm_stashvar[3124] = ["FLUX OF TRACER 25 IN BL", "", "", "", ""] -atm_stashvar[3125] = ["FLUX OF TRACER 26 IN BL", "", "", "", ""] -atm_stashvar[3126] = ["FLUX OF TRACER 27 IN BL", "", "", "", ""] -atm_stashvar[3127] = ["FLUX OF TRACER 28 IN BL", "", "", "", ""] -atm_stashvar[3128] = ["FLUX OF TRACER 29 IN BL", "", "", "", ""] -atm_stashvar[3129] = ["FLUX OF TOTAL AEROSOL IN BL", "", "", "", ""] -atm_stashvar[3130] = ["COUNTER GRADIENT TERM OF TAUX", "", "", "", ""] -atm_stashvar[3131] = ["COUNTER GRADIENT TERM OF TAUY", "", "", "", ""] -atm_stashvar[3132] = ["COUNTER GRADIENT TERM OF FTL", "", "", "", ""] -atm_stashvar[3133] = ["COUNTER GRADIENT TERM OF FQW", "", "", "", ""] -atm_stashvar[3134] = ["MIXING LENGTH", "", "", "", ""] -atm_stashvar[3135] = ["PRODUCTION RATE OF TKE BY SHEAR", "", "", "", ""] -atm_stashvar[3136] = ["PRODUCTION RATE OF TKE BY BUOYANCY", "", "", "", ""] -atm_stashvar[3137] = ["DISSIPATION RATE OF TKE", "", "", "", ""] -atm_stashvar[3138] = ["NON-DIM DIFFUSION COEFS FOR UV (SM)", "", "", "", ""] -atm_stashvar[3139] = ["NON-DIM DIFFUSION COEFS FOR TQ (SH)", "", "", "", ""] -atm_stashvar[3140] = ["NON-GRADIENT BUOYANCY FLUX", "", "", "", ""] -atm_stashvar[3141] = ["CLOUD FRACTION IN THE TKE SCHEMES", "", "", "", ""] -atm_stashvar[3142] = ["CONDENSED WATER IN THE TKE SCHEMES", "", "", "", ""] -atm_stashvar[3143] = ["STD. DEV. OF GAUSSIAN", "", "", "", ""] -atm_stashvar[3170] = ["QCL INCR: bdy layer positive", "", "", "", ""] -atm_stashvar[3171] = ["QCL INCR: bdy layer negative", "", "", "", ""] -atm_stashvar[3172] = ["QCF INCR: bdy layer positive", "", "", "", ""] -atm_stashvar[3173] = ["QCF INCR: bdy layer negative", "", "", "", ""] -atm_stashvar[3176] = ["LIQ CLOUD VOL INCR: bdy layer positi", "", "", "", ""] -atm_stashvar[3177] = ["LIQ CLOUD VOL INCR: bdy layer negati", "", "", "", ""] -atm_stashvar[3178] = ["ICE CLOUD VOL INCR: bdy layer positi", "", "", "", ""] -atm_stashvar[3179] = ["ICE CLOUD VOL INCR: bdy layer negati", "", "", "", ""] -atm_stashvar[3181] = ["TEMPERATURE INCR: bdy layer", "", "", "", ""] -atm_stashvar[3182] = ["SPECIFIC HUMIDITY INCR: bdy layer", "", "", "", ""] -atm_stashvar[3183] = ["QCL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3184] = ["QCF INCR: bdy layer", "", "", "", ""] -atm_stashvar[3185] = ["U WIND INCR: bdy layer", "", "", "", ""] -atm_stashvar[3186] = ["V WIND INCR: bdy layer", "", "", "", ""] -atm_stashvar[3187] = ["W WIND INCR: bdy layer", "", "", "", ""] -atm_stashvar[3188] = ["LIQUID WATER TEMP INCR: FRIC DISSIP", "", "", "", ""] -atm_stashvar[3189] = ["LIQUID WATER TEMP INCR: bdy layer", "", "", "", ""] -atm_stashvar[3190] = ["TOTAL (LIQ) WATER INCR: bdy layer", "", "", "", ""] -atm_stashvar[3192] = ["BULK CLOUD VOL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3193] = ["LIQUID CLOUD VOL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3194] = ["FROZEN CLOUD VOL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3195] = ["U WIND INCR: Leonard term", "", "", "", ""] -atm_stashvar[3196] = ["V WIND INCR: Leonard term", "", "", "", ""] -atm_stashvar[3197] = ["TEMPERATURE INCR: Leonard term", "", "", "", ""] -atm_stashvar[3198] = ["SPECIFIC HUMIDITY INCR: Leonard term", "", "", "", ""] -atm_stashvar[3199] = ["W WIND INCR: Leonard term", "", "", "", ""] -atm_stashvar[3201] = ["HT FLUX THROUGH SEAICE:SEA MEAN W/M2", "hfss_ice", "W m-2", "downward_heat_flux_in_sea_ice", ""] -atm_stashvar[3202] = ["HT FLUX FROM SURF TO DEEP SOIL LEV 1", "", "W m-2", "downward_heat_flux_at_ground_level_in_soil", ""] -atm_stashvar[3208] = ["LOWEST LAYER BULK RICHARDSON NO. RIB", "", "", "", ""] -atm_stashvar[3209] = ["10 METRE WIND U-COMP", "uas", "m s-1", "eastward_wind", ""] -atm_stashvar[3210] = ["10 METRE WIND V-COMP", "vas", "m s-1", "northward_wind", ""] -atm_stashvar[3216] = ["BOUNDARY LAYER HEAT FLUXES W/M2", "", "", "", ""] -atm_stashvar[3217] = ["SURFACE SENSIBLE HEAT FLUX W/M2", "hfss", "W m-2", "surface_upward_sensible_heat_flux", ""] -atm_stashvar[3219] = ["X-COMP OF SURF & BL WIND STRESS N/M2", "tauu", "N m-2", "surface_downward_eastward_stress", ""] -atm_stashvar[3220] = ["Y-COMP OF SURF & BL WIND STRESS N/M2", "tauv", "N m-2", "surface_downward_northward_stress", ""] -atm_stashvar[3221] = ["MAG OF SURF & BL WIND STRESS B GRID", "", "", "", ""] -atm_stashvar[3222] = ["B.LAYER TOTAL MOISTURE FLUXS KG/M2/S", "", "", "", ""] -atm_stashvar[3223] = ["SURFACE TOTAL MOISTURE FLUX KG/M2/S", "evspsbl", "kg m-2 s-1", "water_evaporation_flux", ""] -atm_stashvar[3224] = ["WIND MIX EN'GY FL TO SEA:SEA MN W/M2", "", "", "", ""] -atm_stashvar[3225] = ["10 METRE WIND U-COMP B GRID", "uas", "m s-1", "eastward_wind", ""] -atm_stashvar[3226] = ["10 METRE WIND V-COMP B GRID", "vas", "m s-1", "northward_wind", ""] -atm_stashvar[3227] = ["10 METRE WIND SPEED ON B GRID", "wnd", "m s-1", "wind_speed", ""] -atm_stashvar[3228] = ["SFC SH FLX FROM OPEN SEA:SEA MN W/M2", "", "", "", ""] -atm_stashvar[3229] = ["EVAP FROM SOIL SURF -AMOUNT KG/M2/TS", "evpsoil", "kg m-2", "water_evaporation_flux_from_soil", "evpsoil_step"] -atm_stashvar[3230] = ["10 METRE WIND SPEED ON C GRID", "", "", "", ""] -atm_stashvar[3231] = ["SUBLIM. FROM SURFACE (GBM) KG/M2/TS", "", "", "", ""] -atm_stashvar[3232] = ["EVAP FROM OPEN SEA: SEA MEAN KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3234] = ["SURFACE LATENT HEAT FLUX W/M2", "hfls", "W m-2", "surface_upward_latent_heat_flux", ""] -atm_stashvar[3235] = ["SEAICE TOP MELT LH FLX:SEA MEAN W/M2", "", "W m-2", "", ""] -atm_stashvar[3236] = ["TEMPERATURE AT 1.5M", "tas", "K", "air_temperature", ""] -atm_stashvar[3237] = ["SPECIFIC HUMIDITY AT 1.5M", "huss", "1", "specific_humidity", ""] -atm_stashvar[3238] = ["DEEP SOIL TEMPERATURE AFTER B.LAYER", "tsl", "K", "soil_temperature", ""] -atm_stashvar[3239] = ["CLOUD LIQUID WATER AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3240] = ["CLOUD ICE CONTENT AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3241] = ["TOTAL SURF MOIST FLUX PER TIMESTEP", "", "", "", ""] -atm_stashvar[3245] = ["RELATIVE HUMIDITY AT 1.5M", "", "%", "relative_humidity", ""] -atm_stashvar[3247] = ["VISIBILITY AT 1.5M M", "", "", "", ""] -atm_stashvar[3248] = ["FOG FRACTION AT 1.5 M", "", "", "", ""] -atm_stashvar[3250] = ["DEWPOINT AT 1.5M (K)", "", "", "", ""] -atm_stashvar[3251] = ["SILHOUETTE OROGRAPHIC ROUGHNESS", "", "", "", ""] -atm_stashvar[3252] = ["HALF OF (PEAK TO TROUGH HT OF OROG)", "", "", "", ""] -atm_stashvar[3253] = ["PROBABILITY OF VIS LESS THAN 5 KM", "", "", "", ""] -atm_stashvar[3254] = ["TL AT 1.5M", "", "", "", ""] -atm_stashvar[3255] = ["QT AT 1.5M", "", "", "", ""] -atm_stashvar[3256] = ["Heat flux through sea ice (W/m2)", "", "", "", ""] -atm_stashvar[3257] = ["Heat flux in sea ice surface melt", "", "", "", ""] -atm_stashvar[3258] = ["SURFACE SNOWMELT HEAT FLUX W/M2", "", "", "", ""] -atm_stashvar[3259] = ["CANOPY CONDUCTANCE M/S", "", "", "", ""] -atm_stashvar[3261] = ["GROSS PRIMARY PRODUCTIVITY KG C/M2/S", "gpp", "kg m-2 s-1", "gross_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3262] = ["NET PRIMARY PRODUCTIVITY KG C/M2/S", "npp", "kg m-2 s-1", "net_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3263] = ["PLANT RESPIRATION KG/M2/S", "resp", "kg m-2 s-1", "plant_respiration_carbon_flux", ""] -atm_stashvar[3270] = ["SO2 SURFACE DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3271] = ["SO4 AIT SURF DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3272] = ["SO4 ACC SURF DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3273] = ["SO4 DIS SURF DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3274] = ["ACCUM NITRATE DRY DEP FLX KG[N]/M2/S", "", "", "", ""] -atm_stashvar[3275] = ["DISS NITRATE DRY DEP FLUX KG[N]/M2/S", "", "", "", ""] -atm_stashvar[3281] = ["VIS AT 1.5M (incl precip) M", "", "", "", ""] -atm_stashvar[3282] = ["PROB OF VIS < 1 KM (incl precip)", "", "", "", ""] -atm_stashvar[3283] = ["PROB OF VIS < 5 KM (incl precip)", "", "", "", ""] -atm_stashvar[3284] = ["VISIBILITY AT 1.5M IN LS PPTN M", "", "", "", ""] -atm_stashvar[3285] = ["VISIBILITY AT 1.5M IN CONV PPTN M", "", "", "", ""] -atm_stashvar[3287] = ["CANOPY EVAPORATION ON TILES", "evspsblveg_tile", "kg m-2 s-1", "water_evaporation_flux_from_canopy", ""] -atm_stashvar[3288] = ["TRANSPIRATION+SOIL EVP ON TILES", "hfls", "kg m-2 s-1", "surface_upward_latent_heat_flux", "hfls_tile"] -atm_stashvar[3289] = ["GROSS PRIMARY PRODUCTIVITY ON PFTS", "gpp_tile", "kg m-2 s-1", "gross_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3290] = ["SURFACE SENSIBLE HEAT FLUX ON TILES", "hfss", "W m-2", "surface_upward_sensible_heat_flux", "hfss_tile"] -atm_stashvar[3291] = ["NET PRIMARY PRODUCTIVITY ON PFTS", "npp_tile", "kg m-2 s-1", "net_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3292] = ["PLANT RESPIRATION ON PFTS KG C/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3293] = ["SOIL RESPIRATION KG C/M2/S", "resp_soil", "kg m-2 s-1", "", ""] -atm_stashvar[3294] = ["BULK RICHARDSON NUMBER ON TILES", "", "", "", ""] -atm_stashvar[3296] = ["EVAP FROM SOIL SURF : RATE KG/M2/S", "evspsblsoil", "kg m-2 s-1", "water_evaporation_flux_from_soil", ""] -atm_stashvar[3297] = ["EVAP FROM CANOPY : RATE KG/M2/S", "evspsblveg", "kg m-2 s-1", "water_evaporation_flux_from_canopy", ""] -atm_stashvar[3298] = ["SUBLIM. SURFACE (GBM) : RATE KG/M2/S", "sbl", "kg m-2 s-1", "surface_snow_and_ice_sublimation_flux", ""] -atm_stashvar[3300] = ["NH3 SURFACE DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3301] = ["FRESH SOOT DRY DEPN FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3302] = ["AGED SOOT DRY DEPN FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3303] = ["SOOT IN CLOUD DEPN FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3304] = ["TURBULENT MIXING HT AFTER B.LAYER m", "", "", "", ""] -atm_stashvar[3305] = ["STABLE BL INDICATOR", "", "", "", ""] -atm_stashvar[3306] = ["STRATOCUM. OVER STABLE BL INDICATOR", "", "", "", ""] -atm_stashvar[3307] = ["WELL_MIXED BL INDICATOR", "", "", "", ""] -atm_stashvar[3308] = ["DECOUPLED SC. NOT OVER CU. INDICATOR", "", "", "", ""] -atm_stashvar[3309] = ["DECOUPLED SC. OVER CU. INDICATOR", "", "", "", ""] -atm_stashvar[3310] = ["CUMULUS-CAPPED BL INDICATOR", "", "", "", ""] -atm_stashvar[3313] = ["SOIL MOIS AVAIL FACTOR ON PFTS", "", "", "", ""] -atm_stashvar[3314] = ["SURFACE NET RADIATION ON TILES", "netrad_tile", "W m-2", "", ""] -atm_stashvar[3316] = ["SURFACE TEMP ON TILES K", "ts", "K", "surface_temperature", "ts_tile"] -atm_stashvar[3317] = ["SURFACE TILE FRACTIONS", "", "", "", ""] -atm_stashvar[3318] = ["LEAF AREA INDICES ON PFTS", "", "", "", ""] -atm_stashvar[3319] = ["CANOPY HEIGHT ON PFTS", "", "", "", ""] -atm_stashvar[3320] = ["SOIL CARBON CONTENT (B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3321] = ["CANOPY WATER ON TILES KG/M2", "cw_tile", "kg m-2", "", ""] -atm_stashvar[3322] = ["CANOPY CAPACITY ON TILES KG/M2", "", "", "", ""] -atm_stashvar[3324] = ["ROUGHNESS LENGTH ON TILES M", "", "", "", ""] -atm_stashvar[3325] = ["LEAF TURNOVER RATE ON PFTS", "", "", "", ""] -atm_stashvar[3326] = ["CO2 LAND SURFACE FLUX KG/M**2/S", "", "", "", ""] -atm_stashvar[3327] = ["CO2 TOTAL FLUX TO ATMOS KG/M**2/S", "", "", "", ""] -atm_stashvar[3328] = ["1.5M TEMPERATURE OVER TILES", "tas_tile", "K", "", ""] -atm_stashvar[3329] = ["1.5M SPECIFIC HUMIDITY OVER TILES", "", "", "", ""] -atm_stashvar[3330] = ["SURFACE LATENT HEAT FLUX ON TILES", "hfls_tile", "", "", ""] -atm_stashvar[3331] = ["SUBLIMATION MOISTURE FLUX ON TILES", "sbl_tile", "kg m-2 s-1", "", ""] -atm_stashvar[3332] = ["TOA OUTGOING LW RAD AFTER B.LAYER", "rlut", "W m-2", "toa_outgoing_longwave_flux", "rlut_afterbl"] -atm_stashvar[3333] = ["GRID-BOX AVERAGE SURF NET RAD", "", "", "", ""] -atm_stashvar[3334] = ["LAND MEAN POTENTIAL EVAPORATION", "pevap", "kg m-2 s-1", "water_potential_evaporation_flux", ""] -atm_stashvar[3335] = ["POTENTIAL EVAPORATION ON TILES", "pevap", "kg m-2 s-1", "water_potential_evaporation_flux", ""] -atm_stashvar[3337] = ["LAND HT FLUX FROM SURF TO DEEP LEV 1", "", "", "", ""] -atm_stashvar[3338] = ["NET SURF SEA-ICE HT FLUX (SEA MEAN)", "", "", "", ""] -atm_stashvar[3339] = ["LOWEST LAYER BULK RIB: SEA MEAN", "", "", "", ""] -atm_stashvar[3340] = ["SHEAR-DRIVEN B.LAYER INDICATOR", "", "", "", ""] -atm_stashvar[3341] = ["LAND MEAN TEMPERATURE AT 1.5M", "tas", "K", "air_temperature", ""] -atm_stashvar[3342] = ["LAND MEAN SPECIFIC HUMIDITY AT 1.5M", "", "", "", ""] -atm_stashvar[3343] = ["MEAN SEA SFC SH FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3344] = ["10m TEMP OVER SEA/SEAICE K", "", "", "", ""] -atm_stashvar[3345] = ["10m SPEC HUM OVER SEA/SEAICE KG/KG", "", "", "", ""] -atm_stashvar[3347] = ["MOISTURE FLUX FROM MEAN SEA KG/M2/S", "", "", "", ""] -atm_stashvar[3353] = ["SUBLIM. SEAICE:SEA MEAN RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3355] = ["BL THERMAL SPEED (M/S)", "", "", "", ""] -atm_stashvar[3356] = ["HEIGHT OF SURFACE MIXED LAYR TOP (M)", "", "", "", ""] -atm_stashvar[3357] = ["HEIGHT OF DEC STRATOCU LAYER TOP (M)", "", "", "", ""] -atm_stashvar[3358] = ["BL DEPTH DIAGNOSED FROM RICRIT (M)", "", "", "", ""] -atm_stashvar[3359] = ["HEIGHT OF DIAGNOSTIC PARCEL TOP (M)", "", "", "", ""] -atm_stashvar[3360] = ["HEIGHT OF DECOUPLED LAYER BASE", "", "", "", ""] -atm_stashvar[3361] = ["HEIGHT OF STRATOCUMULUS CLOUD BASE", "", "", "", ""] -atm_stashvar[3362] = ["ENTRAINMENT RATE FOR SURFACE ML", "", "", "", ""] -atm_stashvar[3363] = ["ENTRAINMENT RATE FOR BOUNDARY LAYER", "", "", "", ""] -atm_stashvar[3364] = ["INVERSION THICKNESS (M)", "", "", "", ""] -atm_stashvar[3365] = ["10 METRE NEUTRAL WIND U-COMP B GRID", "", "", "", ""] -atm_stashvar[3366] = ["10 METRE NEUTRAL WIND V-COMP B GRID", "", "", "", ""] -atm_stashvar[3367] = ["10 METRE NEUTRAL WIND SPEED B GRID", "", "", "", ""] -atm_stashvar[3368] = ["10 METRE NEUTRAL WIND U-COMP", "", "", "", ""] -atm_stashvar[3369] = ["10 METRE NEUTRAL WIND V-COMP", "", "", "", ""] -atm_stashvar[3370] = ["X-COMP OF SURF PSEUDOSTRESS M2.S-2", "", "", "", ""] -atm_stashvar[3371] = ["Y-COMP OF SURF PSEUDOSTRESS M2.S-2", "", "", "", ""] -atm_stashvar[3380] = ["SURF NET RAD OVER OPEN SEA", "", "", "", ""] -atm_stashvar[3381] = ["SFC NET RADN. OVER SEA-ICE:SEA MEAN", "", "", "", ""] -atm_stashvar[3382] = ["SURFACE NET SW RADIATION ON TILES", "", "", "", ""] -atm_stashvar[3383] = ["SURFACE UP LW RADIATION ON TILES", "", "", "", ""] -atm_stashvar[3384] = ["SURFACE DOWN LW RADIATION ON TILES", "", "", "", ""] -atm_stashvar[3389] = ["SURFACE LAYER WIND SHEAR OVER LAND", "", "", "", ""] -atm_stashvar[3390] = ["MEAN SEA SURFACE LAYER WIND SHEAR", "", "", "", ""] -atm_stashvar[3391] = ["X-COMP OF LAND SURF WIND STRESS N/M2", "", "", "", ""] -atm_stashvar[3392] = ["X-COMP OF MEAN SEA SURF STRESS N/M2", "tauu", "N m-2", "", ""] -atm_stashvar[3393] = ["Y-COMP OF LAND SURF WIND STRESS N/M2", "", "", "", ""] -atm_stashvar[3394] = ["Y-COMP OF MEAN SEA SURF STRESS N/M2", "tauv", "N m-2", "", ""] -atm_stashvar[3395] = ["FRACTION OF LAND", "sftlf", "1", "land_area_fraction", ""] -atm_stashvar[3396] = ["FRESH BIOMASS DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3397] = ["AGED BIOMASS DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3398] = ["BIOMASS IN CLOUD DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3400] = ["Tile area frac. for dust emissions", "", "", "", ""] -atm_stashvar[3401] = ["Dust emissions div 1 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3402] = ["Dust emissions div 2 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3403] = ["Dust emissions div 3 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3404] = ["Dust emissions div 4 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3405] = ["Dust emissions div 5 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3406] = ["Dust emissions div 6 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3407] = ["FRESH OCFF DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3408] = ["AGED OCFF DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3409] = ["OCFF IN CLOUD DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3411] = ["Dust threshold U* on tiles div 1", "", "", "", ""] -atm_stashvar[3412] = ["Dust threshold U* on tiles div 2", "", "", "", ""] -atm_stashvar[3413] = ["Dust threshold U* on tiles div 3", "", "", "", ""] -atm_stashvar[3414] = ["Dust threshold U* on tiles div 4", "", "", "", ""] -atm_stashvar[3415] = ["Dust threshold U* on tiles div 5", "", "", "", ""] -atm_stashvar[3416] = ["Dust threshold U* on tiles div 6", "", "", "", ""] -atm_stashvar[3417] = ["Dust threshold U* on tiles div 7", "", "", "", ""] -atm_stashvar[3418] = ["Dust threshold U* on tiles div 8", "", "", "", ""] -atm_stashvar[3419] = ["Dust threshold U* on tiles div 9", "", "", "", ""] -atm_stashvar[3421] = ["Dust dry threshold U* on tiles div 1", "", "", "", ""] -atm_stashvar[3422] = ["Dust dry threshold U* on tiles div 2", "", "", "", ""] -atm_stashvar[3423] = ["Dust dry threshold U* on tiles div 3", "", "", "", ""] -atm_stashvar[3424] = ["Dust dry threshold U* on tiles div 4", "", "", "", ""] -atm_stashvar[3425] = ["Dust dry threshold U* on tiles div 5", "", "", "", ""] -atm_stashvar[3426] = ["Dust dry threshold U* on tiles div 6", "", "", "", ""] -atm_stashvar[3427] = ["Dust dry threshold U* on tiles div 7", "", "", "", ""] -atm_stashvar[3428] = ["Dust dry threshold U* on tiles div 8", "", "", "", ""] -atm_stashvar[3429] = ["Dust dry threshold U* on tiles div 9", "", "", "", ""] -atm_stashvar[3430] = ["Dust Friction velocity (U*) on tiles", "", "m s-1", "", ""] -atm_stashvar[3440] = ["TOTAL DUST DEPOSITION FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3441] = ["Dust dry dep flux from lev 1 div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[3442] = ["Dust dry dep flux from lev 1 div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[3443] = ["Dust dry dep flux from lev 1 div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[3444] = ["Dust dry dep flux from lev 1 div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[3445] = ["Dust dry dep flux from lev 1 div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[3446] = ["Dust dry dep flux from lev 1 div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[3451] = ["Dust dry dep flux from lev 2 div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[3452] = ["Dust dry dep flux from lev 2 div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[3453] = ["Dust dry dep flux from lev 2 div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[3454] = ["Dust dry dep flux from lev 2 div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[3455] = ["Dust dry dep flux from lev 2 div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[3456] = ["Dust dry dep flux from lev 2 div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[3460] = ["X-COMP SURFACE BL STRESS", "", "", "", ""] -atm_stashvar[3461] = ["Y-COMP SURFACE BL STRESS", "", "", "", ""] -atm_stashvar[3462] = ["STOMATAL CONDUCTANCE ON PFTS (M/S)", "", "", "", ""] -atm_stashvar[3463] = ["WIND GUST", "", "", "", ""] -atm_stashvar[3464] = ["OBUKHOV LENGTH", "", "", "", ""] -atm_stashvar[3465] = ["EXPLICIT FRICTION VELOCITY", "", "", "", ""] -atm_stashvar[3466] = ["CONVECTIVE BL VELOCITY SCALE", "", "", "", ""] -atm_stashvar[3467] = ["SURFACE BUOYANCY FLUX", "", "", "", ""] -atm_stashvar[3468] = ["GRADIENT RICHARDSON NUMBER", "", "", "", ""] -atm_stashvar[3469] = ["VERTICAL BUOYANCY GRADIENT", "", "", "", ""] -atm_stashvar[3470] = ["MODULUS OF WIND SHEAR", "", "", "", ""] -atm_stashvar[3471] = ["BL MOMENTUM DIFFUSION", "", "", "", ""] -atm_stashvar[3472] = ["BL HEAT DIFFUSION", "", "", "", ""] -atm_stashvar[3473] = ["TURBULENT KINETIC ENERGY", "", "", "", ""] -atm_stashvar[3474] = ["X-COMP OF DIST OROGRAPHIC STRESS", "", "", "", ""] -atm_stashvar[3475] = ["Y-COMP OF DIST OROGRAPHIC STRESS", "", "", "", ""] -atm_stashvar[3476] = ["COMBINED BOUNDARY LAYER TYPE", "", "", "", ""] -atm_stashvar[3477] = ["DPM SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3478] = ["RPM SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3479] = ["BIO SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3480] = ["HUM SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3481] = ["DPM SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3482] = ["RPM SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3483] = ["BIO SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3484] = ["HUM SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3485] = ["SOIL RESP TEMPERATURE RATE MODIFIER", "", "", "", ""] -atm_stashvar[3486] = ["SOIL RESP MOISTURE RATE MODIFIER", "", "", "", ""] -atm_stashvar[3487] = ["THETA STAR FROM SURFACE FLUX (K)", "", "", "", ""] -atm_stashvar[3488] = ["QV_STAR FROM SURFACE FLUX (kg/kg)", "", "", "", ""] -atm_stashvar[3489] = ["SOIL RESP VEG COVER RATE MODIFIER", "", "", "", ""] -atm_stashvar[3490] = ["ISOPRENE SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3491] = ["TERPENE SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3492] = ["METHANOL SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3493] = ["ACETONE SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3495] = ["ISOPRENE SURF EMIS", "", "", "", ""] -atm_stashvar[3496] = ["TERPENE SURF EMIS", "", "", "", ""] -atm_stashvar[3497] = ["METHANOL SURF EMIS", "", "", "", ""] -atm_stashvar[3498] = ["ACETONE SURF EMIS", "", "", "", ""] -atm_stashvar[3500] = ["IMPLICIT FRICTION VELOCITY", "", "", "", ""] -atm_stashvar[3501] = ["MIXING LENGTH FOR MOMENTUM (M)", "", "", "", ""] -atm_stashvar[3502] = ["MIXING LENGTH FOR SCALARS (M)", "", "", "", ""] -atm_stashvar[3503] = ["RHOKM DIFF COEFF - LOCAL SCHEME", "", "", "", ""] -atm_stashvar[3504] = ["RHOKH DIFF COEFF - LOCAL SCHEME", "", "", "", ""] -atm_stashvar[3505] = ["RHOKM DIFF COEFF - SURF-DRIVEN TURB", "", "", "", ""] -atm_stashvar[3506] = ["RHOKH DIFF COEFF - SURF-DRIVEN TURB", "", "", "", ""] -atm_stashvar[3507] = ["RHOKM DIFF COEFF - CLD-TOP-DRIVEN", "", "", "", ""] -atm_stashvar[3508] = ["RHOKH DIFF COEFF - CLD-TOP-DRIVEN", "", "", "", ""] -atm_stashvar[3509] = ["Seaice sublimation (cats) (kg/m2/s)", "", "", "", ""] -atm_stashvar[3510] = ["Net surf seaice ht flux (cats)(W/m2)", "", "", "", ""] -atm_stashvar[3511] = ["STABILITY FUNCTION FOR SCALARS", "", "", "", ""] -atm_stashvar[3512] = ["STABILITY FUNCTION FOR MOMENTUM", "", "", "", ""] -atm_stashvar[3513] = ["BLENDING WEIGHT FOR 1D BL SCHEME", "", "", "", ""] -atm_stashvar[3520] = ["SURFACE-BASED THETA PERTURBATION (K)", "", "", "", ""] -atm_stashvar[3521] = ["SURFACE-BASED MOISTURE PERTURBATION", "", "", "", ""] -atm_stashvar[3530] = ["LW UP OVER ICE, WEIGHTED(cats)(W/m2)", "", "", "", ""] -atm_stashvar[3531] = ["LW UP OVER ICE, WEIGHTED(aggr)(W/m2)", "", "", "", ""] -atm_stashvar[3532] = ["SENS. HF OVER ICE, WGTED(cats)(W/m2)", "", "", "", ""] -atm_stashvar[3533] = ["SENS. HF OVER ICE, WGTED(aggr)(W/m2)", "", "", "", ""] -atm_stashvar[3534] = ["TSTAR OVER ICE, WEIGHTED(cats)(K)", "", "", "", ""] -atm_stashvar[3535] = ["TSTAR OVER ICE, WEIGHTED(aggr)(K)", "", "", "", ""] -atm_stashvar[3536] = ["SEA ICE TIME FRACTION (cats)", "", "", "", ""] -atm_stashvar[3537] = ["SEA ICE TIME FRACTION (aggregate)", "", "", "", ""] -atm_stashvar[3538] = ["SEA AND SEA ICE DRAG COEFFICIENT", "", "", "", ""] -atm_stashvar[3539] = ["TRANSPIRATION GRIDBOX MEAN", "", "", "", ""] -atm_stashvar[3540] = ["TRANSPIRATION ON TILES", "", "", "", ""] -atm_stashvar[3541] = ["SEA AND SEA ICE DRAG COEFF HEAT", "", "", "", ""] -atm_stashvar[3550] = ["LEONARD TERM PARAMETER FOR U", "", "", "", ""] -atm_stashvar[3551] = ["LEONARD TERM PARAMETER FOR V", "", "", "", ""] -atm_stashvar[3552] = ["LEONARD TERM PARAMETER FOR SCALARS", "", "", "", ""] -atm_stashvar[3553] = ["LEONARD TERM VERTICAL FLUX U WIND", "", "", "", ""] -atm_stashvar[3554] = ["LEONARD TERM VERTICAL FLUX V WIND", "", "", "", ""] -atm_stashvar[3555] = ["LEONARD TERM VERTICAL FLUX W WIND", "", "", "", ""] -atm_stashvar[3556] = ["LEONARD TERM VERTICAL FLUX theta_l", "", "", "", ""] -atm_stashvar[3557] = ["LEONARD TERM VERTICAL FLUX qw", "", "", "", ""] -atm_stashvar[3560] = ["X-COMP OF BL WIND STRESS ON P GRID", "", "", "", ""] -atm_stashvar[3561] = ["Y-COMP OF BL WIND STRESS ON P GRID", "", "", "", ""] -atm_stashvar[3662] = ["POTENTIAL NET PRIM PRODUC KG C/M2/S", "", "", "", ""] -atm_stashvar[3663] = ["POTENTIAL PLANT RESPIRATION KG/M2/S", "", "", "", ""] -atm_stashvar[3691] = ["POTEN NET PRIM PRODUC PFTS KG C/M2/S", "", "", "", ""] -atm_stashvar[3692] = ["POTEN PLANT RESP ON PFTS KG C/M2/S", "", "", "", ""] -atm_stashvar[4004] = ["TEMPERATURE AFTER LARGE SCALE PRECIP", "", "", "", ""] -atm_stashvar[4010] = ["SPECIFIC HUMIDITY AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4100] = ["ICE AGGREGATE FRACTION", "", "", "", ""] -atm_stashvar[4101] = ["MICROPHYSICS GRID BOX FLAG", "", "", "", ""] -atm_stashvar[4102] = ["MEAN FALLSPEED CRYSTALS", "", "", "", ""] -atm_stashvar[4103] = ["MEAN FALLSPEED AGGREGATES", "", "", "", ""] -atm_stashvar[4104] = ["FALLSPEED BRANCH FLAG", "", "", "", ""] -atm_stashvar[4105] = ["FALLSPEED USED", "", "", "", ""] -atm_stashvar[4110] = ["SURFACE RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4111] = ["MAX REFLECTIVITY IN COLUMN (dBZ)", "", "", "", ""] -atm_stashvar[4112] = ["RADAR REFLECTIVITY AT 1KM AGL (dBZ)", "", "", "", ""] -atm_stashvar[4113] = ["GRAUPEL RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4114] = ["ICE AGG RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4115] = ["ICE CRY RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4116] = ["RAIN RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4117] = ["LIQ. CLOUD RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4118] = ["TOTAL RADAR REFLECTIVITY 3D (dBZ)", "", "", "", ""] -atm_stashvar[4130] = ["QCL INCR: pc2 checks positive", "", "", "", ""] -atm_stashvar[4131] = ["QCL INCR: pc2 checks negative", "", "", "", ""] -atm_stashvar[4132] = ["QCF INCR: pc2 checks positive", "", "", "", ""] -atm_stashvar[4133] = ["QCF INCR: pc2 checks negative", "", "", "", ""] -atm_stashvar[4136] = ["LIQ CLOUD VOL INCR: pc2 checks posit", "", "", "", ""] -atm_stashvar[4137] = ["LIQ CLOUD VOL INCR: pc2 checks negat", "", "", "", ""] -atm_stashvar[4138] = ["ICE CLOUD VOL INCR: pc2 checks posit", "", "", "", ""] -atm_stashvar[4139] = ["ICE CLOUD VOL INCR: pc2 checks negat", "", "", "", ""] -atm_stashvar[4141] = ["TEMPERATURE INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4142] = ["SPECIFIC HUMIDITY INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4143] = ["QCL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4144] = ["QCF INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4152] = ["BULK CLOUD VOL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4153] = ["LIQ CLOUD VOL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4154] = ["ICE CLOUD VOL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4170] = ["QCL INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4171] = ["QCL INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4172] = ["QCF INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4173] = ["QCF INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4176] = ["LIQ CLOUD VOL INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4177] = ["LIQ CLOUD VOL INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4178] = ["ICE CLOUD VOL INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4179] = ["ICE CLOUD VOL INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4181] = ["TEMPERATURE INCR: ls rain", "", "", "", ""] -atm_stashvar[4182] = ["SPECIFIC HUMIDITY INCR: ls rain", "", "", "", ""] -atm_stashvar[4183] = ["QCL INCR: ls rain", "", "", "", ""] -atm_stashvar[4184] = ["QCF INCR: ls rain", "", "", "", ""] -atm_stashvar[4189] = ["RAIN INCR: ls rain kg/kg/timestep", "", "", "", ""] -atm_stashvar[4190] = ["GRAUPEL INCR: ls rain kg/kg/timestep", "", "", "", ""] -atm_stashvar[4191] = ["QCF2 INCR: ls rain kg/kg/timestep", "", "", "", ""] -atm_stashvar[4192] = ["BULK CLOUD VOL INCR: ls rain", "", "", "", ""] -atm_stashvar[4193] = ["LIQUID CLOUD VOL INCR: ls rain", "", "", "", ""] -atm_stashvar[4194] = ["FROZEN CLOUD VOL INCR: ls rain", "", "", "", ""] -atm_stashvar[4201] = ["LARGE SCALE RAIN AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[4202] = ["LARGE SCALE SNOW AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[4203] = ["LARGE SCALE RAINFALL RATE KG/M2/S", "", "", "", ""] -atm_stashvar[4204] = ["LARGE SCALE SNOWFALL RATE KG/M2/S", "", "", "", ""] -atm_stashvar[4205] = ["CLOUD LIQUID WATER AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4206] = ["CLOUD ICE CONTENT AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4207] = ["RELATIVE HUMIDITY AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4208] = ["R. HUMIDITY WRT WATER AFTER PRECIP", "", "", "", ""] -atm_stashvar[4209] = ["LARGE SCALE GRAUPEL AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[4210] = ["CLOUD DROP NUMBER CONC. /m3", "", "", "", ""] -atm_stashvar[4211] = ["POT. CLOUD DROP NUMBER CONC. /m3", "", "", "", ""] -atm_stashvar[4212] = ["LARGE SCALE GRAUPEL RATE KG/M2/S", "", "", "", ""] -atm_stashvar[4213] = ["DISS NITR RNOUT BY LS PPN KG[N]/M2/S", "", "", "", ""] -atm_stashvar[4214] = ["ACC NITR WSHOUT BY LS PPN KG[N]/M2/S", "", "", "", ""] -atm_stashvar[4215] = ["NH3 SCAVENGED BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4216] = ["SO2 SCAVENGED BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4219] = ["SO4 DIS SCAVNGD BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4220] = ["SOOT RAINOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4221] = ["SOOT WASHOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4222] = ["RAINFALL RATE OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4223] = ["SNOWFALL RATE OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4224] = ["SUPERCOOLED LIQUID WATER CONTENT", "", "", "", ""] -atm_stashvar[4225] = ["SUPERCOOLED RAIN OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4226] = ["GRAUPEL FALL RATE ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[4227] = ["RAIN FRACTION OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4228] = ["OCFF RAINOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4229] = ["OCFF WASHOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4231] = ["Dust wet dep flux ls precip div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[4232] = ["Dust wet dep flux ls precip div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[4233] = ["Dust wet dep flux ls precip div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[4234] = ["Dust wet dep flux ls precip div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[4235] = ["Dust wet dep flux ls precip div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[4236] = ["Dust wet dep flux ls precip div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[4237] = ["BIOMASS RAINOUT BY LS PPN KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[4238] = ["BIOMASS WASHOUT BY LS PPN KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[4240] = ["HOMOGENEOUS NUCLEATION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4241] = ["HETEROGENOUS NUCLEATION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4243] = ["DEPOSITION RATE CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4245] = ["DEPOSITION RATE AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4247] = ["RIMING RATE CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4248] = ["RIMING RATE AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4249] = ["CRY RAIN-CAPTURE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4250] = ["AGG RAIN-CAPTURE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4251] = ["EVAP OF MELTING CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4252] = ["EVAP OF MELTING SNOW AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4253] = ["MELTING RATE CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4254] = ["MELTING RATE AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4255] = ["SNOW AUTOCONV RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4256] = ["SNOW CAPTURE OF CRYSTALS kg/kg/s", "", "", "", ""] -atm_stashvar[4257] = ["RAIN AUTOCONV RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4258] = ["RAIN ACCRETION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4259] = ["EVAPORATION OF RAIN RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4260] = ["GRAUPEL AUTOCONV RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4261] = ["GRAUPEL ACCRETION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4262] = ["GRAUPEL SNOW-CAPTURE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4263] = ["GRAUPEL MELTING RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4264] = ["GRAUPEL EVAPORATION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4265] = ["ICE CRYSTAL SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4266] = ["SNOW AGG. SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4267] = ["RAIN SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4268] = ["GRAUPEL SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4269] = ["DROPLET SETTLE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4270] = ["DROPLET SETTLE EVAP RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4271] = ["HOMOG FREEZING NUC RAIN. kg/ks/s", "", "", "", ""] -atm_stashvar[4275] = ["SURFACE MAX HAIL DIAMETER mm", "", "", "", ""] -atm_stashvar[4276] = ["COLUMN MAX HAIL DIAMETER mm", "", "", "", ""] -atm_stashvar[4277] = ["MAX HAIL DIAMETER MODEL LEVELS mm", "", "", "", ""] -atm_stashvar[4281] = ["TEMPERATURE INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4282] = ["SPECIFIC HUMIDITY INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4283] = ["QCL INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4292] = ["BULK CLOUD VOL INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4293] = ["LIQ CLOUD VOL INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4294] = ["QCL DIAG: TURB. MIXED PHASE (KG/KG)", "", "", "", ""] -atm_stashvar[4295] = ["CFL DIAGNOSED: TURB. MIXED PHASE", "", "", "", ""] -atm_stashvar[4296] = ["TURB. DECORRELATION TIMESCALE (S)", "", "", "", ""] -atm_stashvar[4297] = ["INV. PHASE-RELAXATION TIMESCALE", "", "", "", ""] -atm_stashvar[4298] = ["DIAGNOSED TURBULENT DISSIPATION RATE", "", "", "", ""] -atm_stashvar[4299] = ["INVERSE MIXING TIMESCALE (S-1)", "", "", "", ""] -atm_stashvar[4300] = ["MEAN OF SUBGRID SUPERSAT. PDF", "", "", "", ""] -atm_stashvar[4301] = ["VARIANCE OF SUBGRID SUPERSAT. PDF", "", "", "", ""] -atm_stashvar[4302] = ["L.S. SNOW AMOUNT NO GRAUP KG/M2/TS", "", "", "", ""] -atm_stashvar[4303] = ["QCL INCR MIXED PHASE USING PC2", "", "", "", ""] -atm_stashvar[4304] = ["L.S. SNOWFALL RATE NO GRAUP KG/M2/S", "", "", "", ""] -atm_stashvar[4313] = ["CFL INCR MIXED PHASE USING PC2", "", "", "", ""] -atm_stashvar[4323] = ["SNOWFALL RATE NO GRAUPEL MODEL LEVS", "", "", "", ""] -atm_stashvar[4325] = ["CLOUD COND/EVAP RATE KG/KG/S", "", "", "", ""] -atm_stashvar[4336] = ["ICE CLOUD SEDIMENT. RATE KG/KG/S", "", "", "", ""] -atm_stashvar[4350] = ["HOMO FREEZING OF CLOUD NUMBER TEND.", "", "", "", ""] -atm_stashvar[4351] = ["HOMO FREEZING OF RAIN NUMBER TEND.", "", "", "", ""] -atm_stashvar[4352] = ["HALLETT MOSSOP ICE NUMBER TEND.", "", "", "", ""] -atm_stashvar[4353] = ["ICE NUCLEATION ICE NUMBER TEND.", "", "", "", ""] -atm_stashvar[4354] = ["ICE SEDIMENTATION NUMBER TEND.", "", "", "", ""] -atm_stashvar[4355] = ["SNOW SEDIMENTATION NUMBER TEND.", "", "", "", ""] -atm_stashvar[4356] = ["GRAUPEL SEDIMENTATION NUMBER TEND.", "", "", "", ""] -atm_stashvar[4400] = ["SUBGRID OROG WATER MIX RATIO kg/kg", "", "", "", ""] -atm_stashvar[4401] = ["SUBGRID OROG RAIN ACCR RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4402] = ["SUBGRID OROG SNOW RMNG RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4982] = ["Q INCR: methane oxidation", "", "", "", ""] -atm_stashvar[5010] = ["SPECIFIC HUMIDITY AFTER CONVECTION", "", "", "", ""] -atm_stashvar[5140] = ["QCL INCR: conv inhom positive", "", "", "", ""] -atm_stashvar[5141] = ["QCL INCR: conv inhom negative", "", "", "", ""] -atm_stashvar[5142] = ["QCF INCR: conv inhom positive", "", "", "", ""] -atm_stashvar[5143] = ["QCF INCR: conv inhom negative", "", "", "", ""] -atm_stashvar[5146] = ["LIQ CLOUD VOL INCR: conv inhom posit", "", "", "", ""] -atm_stashvar[5147] = ["LIQ CLOUD VOL INCR: conv inhom negat", "", "", "", ""] -atm_stashvar[5148] = ["ICE CLOUD VOL INCR: conv inhom posit", "", "", "", ""] -atm_stashvar[5149] = ["ICE CLOUD VOL INCR: conv inhom negat", "", "", "", ""] -atm_stashvar[5150] = ["QCL INCR: pc2 turbulence", "", "", "", ""] -atm_stashvar[5151] = ["QCL INCR: pc2 turbulence positive", "", "", "", ""] -atm_stashvar[5152] = ["QCL INCR: pc2 turbulence negative", "", "", "", ""] -atm_stashvar[5156] = ["LIQ CLOUD VOL INCR: pc2 turbulence", "", "", "", ""] -atm_stashvar[5157] = ["LIQ CLOUD VOL INCR: pc2 turb positiv", "", "", "", ""] -atm_stashvar[5158] = ["LIQ CLOUD VOL INCR: pc2 turb negativ", "", "", "", ""] -atm_stashvar[5161] = ["TEMPERATURE INCR: convection", "", "", "", ""] -atm_stashvar[5162] = ["SPECIFIC HUMIDITY INCR: convection", "", "", "", ""] -atm_stashvar[5163] = ["QCL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5164] = ["QCF INCR: conv inhom", "", "", "", ""] -atm_stashvar[5172] = ["BULK CLOUD VOL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5173] = ["LIQUID CLOUD VOL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5174] = ["FROZEN CLOUD VOL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5175] = ["du/dt from downdraughts(ms-2 P grid)", "", "", "", ""] -atm_stashvar[5176] = ["dv/dt from downdraughts(ms-2 P grid)", "", "", "", ""] -atm_stashvar[5181] = ["TEMPERATURE INC:convect +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5182] = ["Q INCR: convection +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5183] = ["QCL INCR: convection +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5184] = ["QCF INCR: convection +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5185] = ["U WIND INCR: convection", "", "", "", ""] -atm_stashvar[5186] = ["V WIND INCR: convection", "", "", "", ""] -atm_stashvar[5187] = ["TEMP INCR: convection (no shallowc)", "", "", "", ""] -atm_stashvar[5188] = ["SPEC HUM INCR:convect. (no shallowc)", "", "", "", ""] -atm_stashvar[5192] = ["BULK CLOUD VOL INCR: convection", "", "", "", ""] -atm_stashvar[5193] = ["LIQUID CLOUD VOL INCR: convection", "", "", "", ""] -atm_stashvar[5194] = ["FROZEN CLOUD VOL INCR: convection", "", "", "", ""] -atm_stashvar[5196] = ["(Convective vert. vel.)^2 [(m/s)^2]", "", "", "", ""] -atm_stashvar[5197] = ["Convective vertical velocity [m/s]", "", "", "", ""] -atm_stashvar[5198] = ["d(Temp)/dt from downdraughts K/s", "", "", "", ""] -atm_stashvar[5199] = ["d(q)/dt from downdraughts kg/kg/s", "", "", "", ""] -atm_stashvar[5201] = ["CONVECTIVE RAIN AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[5202] = ["CONVECTIVE SNOW AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[5205] = ["CONVECTIVE RAINFALL RATE KG/M2/S", "", "kg m-2 s-1", "convective_rainfall_rate", ""] -atm_stashvar[5206] = ["CONVECTIVE SNOWFALL RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5207] = ["PRESSURE AT CONVECTIVE CLOUD BASE", "ccb", "Pa", "air_pressure_at_convective_cloud_base", ""] -atm_stashvar[5208] = ["PRESSURE AT CONVECTIVE CLOUD TOP", "cct", "Pa", "air_pressure_at_convective_cloud_top", ""] -atm_stashvar[5209] = ["TEMPERATURE AFTER CONVECTION", "", "", "", ""] -atm_stashvar[5210] = ["ICAO HT OF CONVECTIVE CLOUD BASE", "", "", "", ""] -atm_stashvar[5211] = ["ICAO HT OF CONVECTIVE CLOUD TOP", "", "", "", ""] -atm_stashvar[5212] = ["CONV. CLOUD AMOUNT ON EACH MODEL LEV", "", "", "", ""] -atm_stashvar[5213] = ["CONV CLOUD CONDENSED WATER KG/KG", "", "", "", ""] -atm_stashvar[5214] = ["TOTAL RAINFALL RATE: LS+CONV KG/M2/S", "prrn", "kg m-2 s-1", "rainfall_flux", ""] -atm_stashvar[5215] = ["TOTAL SNOWFALL RATE: LS+CONV KG/M2/S", "prsn", "kg m-2 s-1", "snowfall_flux", ""] -atm_stashvar[5216] = ["TOTAL PRECIPITATION RATE KG/M2/S", "pr", "kg m-2 s-1", "precipitation_flux", ""] -atm_stashvar[5217] = ["DILUTE CONVECTIVELY AVAIL POT E J/KG", "", "", "", ""] -atm_stashvar[5218] = ["LOWEST CONV CLOUD BASE LEVEL NO.", "", "", "", ""] -atm_stashvar[5219] = ["LOWEST CONV CLOUD TOP LEVEL NO.", "", "", "", ""] -atm_stashvar[5220] = ["LOWEST CONV CLOUD AMOUNT AFTER CONV", "", "", "", ""] -atm_stashvar[5222] = ["PRESSURE AT LOWEST CONV CLOUD BASE", "", "", "", ""] -atm_stashvar[5223] = ["PRESSURE AT LOWEST CONV CLOUD TOP", "", "", "", ""] -atm_stashvar[5224] = ["ICAO HT OF LOWEST CONV CLOUD BASE", "", "", "", ""] -atm_stashvar[5225] = ["ICAO HT OF LOWEST CONV CLOUD TOP", "", "", "", ""] -atm_stashvar[5226] = ["TOTAL PRECIPITATION AMOUNT KG/M2/TS", "", "kg m-2", "precipitation_amount", ""] -atm_stashvar[5227] = ["NOMINAL 3D CONVECTIVE RAINFALL RATE", "", "", "", ""] -atm_stashvar[5228] = ["NOMINAL 3D CONVECTIVE SNOWFALL RATE", "", "", "", ""] -atm_stashvar[5229] = ["Fractional updraught area", "", "", "", ""] -atm_stashvar[5230] = ["Fractional downdraught area", "", "", "", ""] -atm_stashvar[5231] = ["CAPE TIMESCALE (DEEP) S", "", "", "", ""] -atm_stashvar[5232] = ["INDICATOR REDUCED CAPE TIMESCALE", "", "", "", ""] -atm_stashvar[5233] = ["UNDILUTE CAPE J/KG", "", "", "", ""] -atm_stashvar[5234] = ["UNDILUTE PARCEL CIN J/KG", "", "", "", ""] -atm_stashvar[5235] = ["U compnt of wind after convection", "", "", "", ""] -atm_stashvar[5236] = ["V compnt of wind after convection", "", "", "", ""] -atm_stashvar[5237] = ["NH3 SCAVENGED BY CONV PPN KG/M2/SEC", "", "", "", ""] -atm_stashvar[5238] = ["SO2 SCAVENGED BY CONV PPN KG/M2/SEC", "", "", "", ""] -atm_stashvar[5239] = ["SO4 AIT SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5240] = ["SO4 ACC SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5241] = ["SO4 DIS SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5242] = ["SOOT SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5243] = ["BIOMASS SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5244] = ["OCFF SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5246] = ["UD MFLUX(rho lev) Component A (Pa/s)", "", "", "", ""] -atm_stashvar[5247] = ["ACC NIT SCVGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5248] = ["DISS NIT SCVGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5249] = ["UD MASS FLUX rho levels (Pa/s)", "", "", "", ""] -atm_stashvar[5250] = ["UPDRAUGHT MASS FLUX (Pa/s)", "", "", "", ""] -atm_stashvar[5251] = ["DOWNDRAUGHT MASS FLUX (PA/S)", "", "", "", ""] -atm_stashvar[5252] = ["UPDRAUGHT ENTRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5253] = ["UPDRAUGHT DETRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5254] = ["DOWNDRAUGHT ENTRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5255] = ["DOWNDRAUGHT DETRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5256] = ["U INCREMENT MS-2 ( P GRID)", "", "", "", ""] -atm_stashvar[5257] = ["V INCREMENT MS-2 ( P GRID)", "", "", "", ""] -atm_stashvar[5258] = ["DEEP UW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5259] = ["DEEP VW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5260] = ["SHALL UW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5261] = ["SHALL VW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5262] = ["2D CONVECTIVE CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[5263] = ["MID UW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5264] = ["MID VW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5267] = ["DEEP CONVECTION CFL LIMITED", "", "", "", ""] -atm_stashvar[5268] = ["MID-LEVEL CONVECTION CFL LIMITED", "", "", "", ""] -atm_stashvar[5269] = ["DEEP CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5270] = ["SHALLOW CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5271] = ["CUMULUS OVER OROGRAPHY INDICATOR", "", "", "", ""] -atm_stashvar[5272] = ["MID LEVEL CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5273] = ["TOP LEVEL SURFACE MIXING LAYER", "", "", "", ""] -atm_stashvar[5274] = ["TOP LEVEL INITIAL PARCEL ASCENT", "", "", "", ""] -atm_stashvar[5275] = ["MODEL FREEZING LEVEL", "", "", "", ""] -atm_stashvar[5276] = ["TERMINATION LEVEL for DEEP CONVECT", "", "", "", ""] -atm_stashvar[5277] = ["DEEP CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5278] = ["SHALLOW CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5279] = ["MID LEVEL CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5280] = ["CONGESTUS CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5281] = ["Dust wet dep flux conv precip div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[5282] = ["Dust wet dep flux conv precip div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[5283] = ["Dust wet dep flux conv precip div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[5284] = ["Dust wet dep flux conv precip div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[5285] = ["Dust wet dep flux conv precip div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[5286] = ["Dust wet dep flux conv precip div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[5290] = ["WQT FLUX KG/KG M/S UV LEVEL P GRID", "", "", "", ""] -atm_stashvar[5291] = ["WQL FLUX KG/KG M/S UV LEVEL P GRID", "", "", "", ""] -atm_stashvar[5292] = ["WTHETAL FLUX K M/S UV LEV P GRID", "", "", "", ""] -atm_stashvar[5293] = ["WTHETAV FLUX K M/S UV LEV P GRID", "", "", "", ""] -atm_stashvar[5300] = ["SUBCLOUD LAYER CONV VEL SCALE M/S", "", "", "", ""] -atm_stashvar[5301] = ["CUMULUS LAYER CONV VEL SCALE M/S", "", "", "", ""] -atm_stashvar[5302] = ["CLOUD BASE MASS FLUX 1 M/S", "", "", "", ""] -atm_stashvar[5303] = ["CLOUD BASE MASS FLUX 2 M/S", "", "", "", ""] -atm_stashvar[5304] = ["WQT FLUX AT CLOUD BASE KG/KG M/S", "", "", "", ""] -atm_stashvar[5305] = ["WTHETAL FLUX AT CLOUD BASE KG/KGM/S", "", "", "", ""] -atm_stashvar[5306] = ["WQT FLUX AT INVERSION KG/KG M/S", "", "", "", ""] -atm_stashvar[5307] = ["WTHETAL FLUX AT INVERSION KG/KG M/S", "", "", "", ""] -atm_stashvar[5308] = ["HEIGHT OF TOP OF SHALLOW CONV M", "", "", "", ""] -atm_stashvar[5309] = ["HEIGHT OF BASE OF SHALLOW CONV M", "", "", "", ""] -atm_stashvar[5310] = ["CONGESTUS CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5311] = ["CONGESTUS CONVECTION INDICATOR 2", "", "", "", ""] -atm_stashvar[5312] = ["TERMINATION LEVEL FOR CONGESTUS", "", "", "", ""] -atm_stashvar[5313] = ["HEIGHT OF TOP OF CONGESTUS M", "", "", "", ""] -atm_stashvar[5314] = ["HEIGHT OF BASE OF CONGESTUS M", "", "", "", ""] -atm_stashvar[5319] = ["FREQ DEEP CONVECTION TERM HERE", "", "", "", ""] -atm_stashvar[5320] = ["MASS FLUX DEEP CONVECTION", "", "", "", ""] -atm_stashvar[5321] = ["MASS FLUX CONGESTUS CONVECTION", "", "", "", ""] -atm_stashvar[5322] = ["MASS FLUX SHALLOW CONVECTION", "", "", "", ""] -atm_stashvar[5323] = ["MASS FLUX MID-LEVEL CONVECTION", "", "", "", ""] -atm_stashvar[5324] = ["DT FROM DEEP CONVECTION K/S", "", "", "", ""] -atm_stashvar[5325] = ["DT FROM CONGESTUS CONVECTION K/S", "", "", "", ""] -atm_stashvar[5326] = ["DT FROM SHALLOW CONVECTION K/S", "", "", "", ""] -atm_stashvar[5327] = ["DT FROM MID-LEVEL CONVECTION K/S", "", "", "", ""] -atm_stashvar[5328] = ["DQ FROM DEEP CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5329] = ["DQ FROM CONGESTUS CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5330] = ["DQ FROM SHALLOW CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5331] = ["DQ FROM MID-LEVEL CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5332] = ["DU FROM DEEP CONV M/S2 ( P GRID)", "", "", "", ""] -atm_stashvar[5333] = ["DU FROM CONGESTUS CONV M/S2 (P GRID)", "", "", "", ""] -atm_stashvar[5334] = ["DU FROM SHALLOW CONV M/S2 ( P GRID)", "", "", "", ""] -atm_stashvar[5335] = ["DU FROM MID-LEVEL CONV M/S2 (P GRID)", "", "", "", ""] -atm_stashvar[5336] = ["DV FROM DEEP CONV M/S2 ( P GRID)", "", "", "", ""] -atm_stashvar[5337] = ["DV FROM CONGESTUS CONV MS-2 (P GRID)", "", "", "", ""] -atm_stashvar[5338] = ["DV FROM SHALLOW CONV MS-2 (P GRID)", "", "", "", ""] -atm_stashvar[5339] = ["DV FROM MID-LEVEL CONV MS-2 (P GRID)", "", "", "", ""] -atm_stashvar[5400] = ["CONV_TYPE INDICATOR", "", "", "", ""] -atm_stashvar[5401] = ["CONV_TYPE INDICATOR 1", "", "", "", ""] -atm_stashvar[5402] = ["CONV_TYPE INDICATOR 2", "", "", "", ""] -atm_stashvar[5403] = ["CONV_TYPE INDICATOR 3", "", "", "", ""] -atm_stashvar[5404] = ["CONV_TYPE INDICATOR 4", "", "", "", ""] -atm_stashvar[5405] = ["CONV_TYPE 1 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5406] = ["CONV_TYPE 2 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5407] = ["CONV_TYPE 3 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5408] = ["CONV_TYPE 4 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5409] = ["DT FROM CONV_TYPE 1 K/S", "", "", "", ""] -atm_stashvar[5410] = ["DT FROM CONV_TYPE 2 K/S", "", "", "", ""] -atm_stashvar[5411] = ["DT FROM CONV_TYPE 3 K/S", "", "", "", ""] -atm_stashvar[5412] = ["DT FROM CONV_TYPE 4 K/S", "", "", "", ""] -atm_stashvar[5413] = ["DQ FROM CONV_TYPE 1 KG/KG/S", "", "", "", ""] -atm_stashvar[5414] = ["DQ FROM CONV_TYPE 2 KG/KG/S", "", "", "", ""] -atm_stashvar[5415] = ["DQ FROM CONV_TYPE 3 KG/KG/S", "", "", "", ""] -atm_stashvar[5416] = ["DQ FROM CONV_TYPE 4 KG/KG/S", "", "", "", ""] -atm_stashvar[5417] = ["MASS FLUX CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5418] = ["MASS FLUX CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5419] = ["MASS FLUX CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5420] = ["MASS FLUX CONV_TYPE 4", "", "", "", ""] -atm_stashvar[5421] = ["HIGHEST LEVEL OF CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5422] = ["HIGHEST LEVEL OF CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5423] = ["HIGHEST LEVEL OF CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5424] = ["HIGHEST LEVEL OF CONV_TYPE 4", "", "", "", ""] -atm_stashvar[5425] = ["WTHETA_L CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5426] = ["WTHETA_L CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5427] = ["WTHETA_L CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5428] = ["WTHETA_L CONV_TYPE 4", "", "", "", ""] -atm_stashvar[5429] = ["WQT CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5430] = ["WQT CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5431] = ["WQT CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5432] = ["WQT CONV_TYPE 4", "", "", "", ""] -atm_stashvar[6002] = ["U COMPNT OF WIND AFTER G.WAVE DRAG", "", "", "", ""] -atm_stashvar[6003] = ["V COMPNT OF WIND AFTER G.WAVE DRAG", "", "", "", ""] -atm_stashvar[6101] = ["EASTWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6102] = ["SOUTHWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6103] = ["WESTWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6104] = ["NORTHWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6105] = ["EASTWARD FORCE FROM SPECTRAL GW", "", "", "", ""] -atm_stashvar[6106] = ["NORTHWARD FORCE FROM SPECTRAL GW", "", "", "", ""] -atm_stashvar[6111] = ["E. FLUX SPECTRAL PSEUDOMOM. P LEVS", "", "", "", ""] -atm_stashvar[6113] = ["W. FLUX SPECTRAL PSEUDOMOM. P LEVS", "", "", "", ""] -atm_stashvar[6115] = ["EAST. FORCE FROM SPECTRAL GW P LEVS", "", "", "", ""] -atm_stashvar[6181] = ["GW HEATING TEMPERATURE INC", "", "", "", ""] -atm_stashvar[6185] = ["U WIND INCR: gwd scheme", "", "", "", ""] -atm_stashvar[6186] = ["V WIND INCR: gwd scheme", "", "", "", ""] -atm_stashvar[6201] = ["X COMPONENT OF GRAVITY WAVE STRESS", "", "", "", ""] -atm_stashvar[6202] = ["Y COMPONENT OF GRAVITY WAVE STRESS", "", "", "", ""] -atm_stashvar[6203] = ["STANDARD DEVIATION OF OROGRAPHY", "", "", "", ""] -atm_stashvar[6204] = ["OROGRAPHIC GRADIENT XX COMPONENT", "", "", "", ""] -atm_stashvar[6205] = ["OROGRAPHIC GRADIENT XY COMPONENT", "", "", "", ""] -atm_stashvar[6206] = ["OROGRAPHIC GRADIENT YY COMPONENT", "", "", "", ""] -atm_stashvar[6207] = ["U-ACCEL FROM SATURATED STRESS", "", "", "", ""] -atm_stashvar[6208] = ["V-ACCEL FROM SATURATED STRESS", "", "", "", ""] -atm_stashvar[6214] = ["U in the GWD surface layer", "", "", "", ""] -atm_stashvar[6215] = ["V in the GWD surface layer", "", "", "", ""] -atm_stashvar[6216] = ["N in the GWD surface layer", "", "", "", ""] -atm_stashvar[6217] = ["GWD Froude number", "", "", "", ""] -atm_stashvar[6218] = ["GWD Blocked Layer Depth", "", "", "", ""] -atm_stashvar[6222] = ["Percent of time with blocked flow", "", "", "", ""] -atm_stashvar[6223] = ["X COMPONENT OF GW SATURATION STRESS", "", "", "", ""] -atm_stashvar[6224] = ["Y COMPONENT OF GW SATURATION STRESS", "", "", "", ""] -atm_stashvar[6227] = ["X COMPONENT OF BLOCKED FLOW STRESS", "", "", "", ""] -atm_stashvar[6228] = ["Y COMPONENT OF BLOCKED FLOW STRESS", "", "", "", ""] -atm_stashvar[6231] = ["U-ACCEL FROM BLOCKED FLOW", "", "", "", ""] -atm_stashvar[6232] = ["V-ACCEL FROM BLOCKED FLOW", "", "", "", ""] -atm_stashvar[6233] = ["% of time num limiter invoked", "", "", "", ""] -atm_stashvar[6234] = ["% redn. of block stress by limiter", "", "", "", ""] -atm_stashvar[6235] = ["X-COMPONENT OF SURFACE SSO STRESS", "", "", "", ""] -atm_stashvar[6236] = ["Y-COMPONENT OF SURFACE SSO STRESS", "", "", "", ""] -atm_stashvar[6237] = ["Froude No. scaling of surface stress", "", "", "", ""] -atm_stashvar[6241] = ["X COMPT OF GRAV. WAVE STRESS P LEVS", "", "", "", ""] -atm_stashvar[6247] = ["U-ACCEL FROM SATURATED STRESS P LEVS", "", "", "", ""] -atm_stashvar[6248] = ["OROGRAPHIC SUB-GRID SLOPE", "", "", "", ""] -atm_stashvar[6249] = ["OROGRAPHIC SUB-GRID ANISOTROPY", "", "", "", ""] -atm_stashvar[6250] = ["OROGRAPHIC SUB-GRID ORIENTATION", "", "", "", ""] -atm_stashvar[8023] = ["SNOW MASS AFTER HYDROLOGY KG/M2", "snw", "kg m-2", "surface_snow_amount", "snw_afterhydrol"] -atm_stashvar[8201] = ["LAND SNOW MELT AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[8202] = ["LAND SNOW MELT HEAT FLUX W/M2", "", "", "", ""] -atm_stashvar[8204] = ["SFC RUNOFF AMOUNT:LAND MEAN KG/M2/TS", "", "", "", ""] -atm_stashvar[8205] = ["SUB-SFC RUNOFF AMT:LAND MN KG/M2/TS", "", "", "", ""] -atm_stashvar[8208] = ["SOIL MOISTURE CONTENT", "", "", "", ""] -atm_stashvar[8209] = ["CANOPY WATER CONTENT", "cw", "kg m-2", "", ""] -atm_stashvar[8223] = ["SOIL MOISTURE CONTENT IN A LAYER", "mrsos", "kg m-2", "moisture_content_of_soil_layer", ""] -atm_stashvar[8225] = ["DEEP SOIL TEMP. AFTER HYDROLOGY DEGK", "tsoil", "K", "soil_temperature", ""] -atm_stashvar[8229] = ["UNFROZEN SOIL MOISTURE FRACTION", "mrlqso", "1", "mass_fraction_of_unfrozen_water_in_soil_moisture", ""] -atm_stashvar[8230] = ["FROZEN SOIL MOISTURE FRACTION", "mrfsofr", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[8231] = ["LAND SNOW MELT RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[8233] = ["CANOPY THROUGHFALL RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[8234] = ["SURFACE RUNOFF RATE KG/M2/S", "mrros", "kg m-2 s-1", "surface_runoff_flux", ""] -atm_stashvar[8235] = ["SUB-SURFACE RUNOFF RATE KG/M2/S", "mrrob", "kg m-2 s-1", "subsurface_runoff_flux", ""] -atm_stashvar[8236] = ["SNOW AMOUNT ON TILES KG/M2", "", "", "", ""] -atm_stashvar[8237] = ["SNOW MELT RATE ON TILES KG/M2/S", "", "", "", ""] -atm_stashvar[8238] = ["SNOW GRAIN SIZE ON TILES MICRONS", "", "", "", ""] -atm_stashvar[8239] = ["BASE FLOW AMOUNT KG/M2/S", "", "", "", ""] -atm_stashvar[8240] = ["DUNNE RUNOFF KG/M2/S", "", "", "", ""] -atm_stashvar[8241] = ["BASE FLOW FROM ZW LAYER KG/M2/S", "", "", "", ""] -atm_stashvar[8242] = ["CH4 WETLAND FLUX(FOR UKCA) UG C/M2/S", "", "", "", ""] -atm_stashvar[8243] = ["MEAN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[8244] = ["STANDARD DEVN IN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[8245] = ["INLANDBASINFLOW ATM GRID KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[8246] = ["INTEGRATED GAMMA DISTRIBUTION", "", "", "", ""] -atm_stashvar[8247] = ["SURFACE SATURATION FRACTION", "", "", "", ""] -atm_stashvar[8248] = ["SURFACE WETLAND FRACTION", "", "", "", ""] -atm_stashvar[8249] = ["MEAN WATER TABLE DEPTH M", "", "", "", ""] -atm_stashvar[8250] = ["SATURATION FRAC IN DEEP LAYER", "", "", "", ""] -atm_stashvar[8251] = ["EXP DECAY IN SOIL SAT HYD CONDUCTY", "", "", "", ""] -atm_stashvar[8252] = ["DRAINAGE OUT OF SOIL MODEL KG/M2/S", "", "", "", ""] -atm_stashvar[8258] = ["ACCUM SURFACE RUNOFF RATE KG/M2/S", "", "", "", ""] -atm_stashvar[8259] = ["ACCUM SUB-SURFACE RUNOFF RATEKG/M2/S", "", "", "", ""] -atm_stashvar[8260] = ["CH4 WETLAND FLX(CS) KG C/M2/S", "", "", "", ""] -atm_stashvar[8261] = ["CH4 WETLAND FLX(NPP) KG C/M2/S", "", "", "", ""] -atm_stashvar[8262] = ["CH4 WETLAND FLX(SOIL RESP) KG C/M2/S", "", "", "", ""] -atm_stashvar[8376] = ["SNOW DEPTH ON GROUND ON TILES (M)", "", "", "", ""] -atm_stashvar[8576] = ["TEMP OF TILED SUBSURFACE (K)", "", "", "", ""] -atm_stashvar[8577] = ["TILED HEAT FLUX TO SUBSURFACE W/M2", "", "", "", ""] -atm_stashvar[8578] = ["TILED SNOW MASS BALANCE KG/M2/S", "", "", "", ""] -atm_stashvar[8579] = ["TILED SNOW TOTAL MELT RATE KG/M2/S", "", "", "", ""] -atm_stashvar[8580] = ["TILED SNOW TOTAL REFREEZE KG/M2/S", "", "", "", ""] -atm_stashvar[8581] = ["TILED SNOW SOLIDMASS CHANGE KG/M2/S", "", "", "", ""] -atm_stashvar[8582] = ["TILED SNOW LIQUID CHANGE KG/M2/S", "", "", "", ""] -atm_stashvar[8583] = ["TILED SNOW NET RUNOFF KG/M2/S", "", "", "", ""] -atm_stashvar[8700] = ["BURNT AREA FRACTION(POTEN) S-1", "", "", "", ""] -atm_stashvar[8701] = ["C EMISS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8702] = ["DPM C EMISS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8703] = ["RPM C EMISS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8710] = ["BURNT AREA FRAC ON PFTS (POTEN) S-1", "", "", "", ""] -atm_stashvar[8711] = ["C EMISS ON PFTS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8720] = ["CO2 EMISS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8721] = ["CO EMISS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8722] = ["CH4 EMISS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8723] = ["NOx EMISS (POTEN) KG NO/M2/S", "", "", "", ""] -atm_stashvar[8735] = ["CO2 EMISS ON PFTS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8736] = ["CO EMISS ON PFTS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8737] = ["CH4 EMISS ON PFTS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8738] = ["NOx EMISS ON PFTS (POT) KG NO/M2/S", "", "", "", ""] -atm_stashvar[8750] = ["SO2 EMISS (POTEN) KG SO2/M2/S", "", "", "", ""] -atm_stashvar[8751] = ["BC EMISS (POTEN) KG BC/M2/S", "", "", "", ""] -atm_stashvar[8752] = ["OC EMISS (POTEN) KG OC/M2/S", "", "", "", ""] -atm_stashvar[8765] = ["SO2 EMISS ON PFTS (POT) KG SO2/M2/S", "", "", "", ""] -atm_stashvar[8766] = ["BC EMISS ON PFTS (POT) KG BC/M2/S", "", "", "", ""] -atm_stashvar[8767] = ["OC EMISS ON PFTS (POT) KG OC/M2/S", "", "", "", ""] -atm_stashvar[9004] = ["TEMPERATURE AFTER MAIN DYN CLOUD", "", "", "", ""] -atm_stashvar[9010] = ["SPEC. HUMIDITY AFTER MAIN DYN CLOUD", "", "", "", ""] -atm_stashvar[9181] = ["TEMPERATURE INC: bdy layer + ls cld", "", "", "", ""] -atm_stashvar[9182] = ["SPEC HUMIDITY INC: bdy layr + ls cld", "", "", "", ""] -atm_stashvar[9183] = ["QCL INC: bdy layer + ls cld", "", "", "", ""] -atm_stashvar[9201] = ["BULK CLOUD AMOUNT AFTER MAIN CLOUD", "", "", "", ""] -atm_stashvar[9202] = ["VERY LOW CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9203] = ["LOW CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9204] = ["MEDIUM CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9205] = ["HIGH CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9206] = ["CLOUD LIQUID WATER AFTER MAIN CLOUD", "", "", "", ""] -atm_stashvar[9207] = ["CLOUD ICE CONTENT AFTER DYNAM CLOUD", "", "", "", ""] -atm_stashvar[9208] = ["CLOUD BASE ASL COVER.GT.0.1 OCTA KFT", "", "", "", ""] -atm_stashvar[9209] = ["CLOUD BASE ASL COVER.GT.1.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9210] = ["CLOUD BASE ASL COVER.GT.2.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9211] = ["CLOUD BASE ASL COVER.GT.3.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9212] = ["CLOUD BASE ASL COVER.GT.4.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9213] = ["CLOUD BASE ASL COVER.GT.5.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9214] = ["CLOUD BASE ASL COVER.GT.6.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9215] = ["CLOUD BASE ASL COVER.GT.7.9 OCTA KFT", "", "", "", ""] -atm_stashvar[9216] = ["TOTAL CLOUD AMOUNT - RANDOM OVERLAP", "", "", "", ""] -atm_stashvar[9217] = ["TOTAL CLOUD AMOUNT MAX/RANDOM OVERLP", "clt", "1", "cloud_area_fraction", ""] -atm_stashvar[9218] = ["CLOUD FRACTION BELOW 1000 FT ASL", "", "", "", ""] -atm_stashvar[9219] = ["LOW CLOUD BASE (FT ASL)", "", "", "", ""] -atm_stashvar[9220] = ["LOW CLOUD TOP (FT ASL)", "", "", "", ""] -atm_stashvar[9221] = ["WET BULB FREEZING LEV HEIGHT (M)", "", "", "", ""] -atm_stashvar[9222] = ["WET BULB TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[9223] = ["TOTAL CLOUD TOP HEIGHT (KFT)", "", "", "", ""] -atm_stashvar[9226] = ["LAYER CLOUD FREQUENCY IN EACH LAYER", "", "", "", ""] -atm_stashvar[9228] = ["CRITICAL RELATIVE HUMIDITY IN LAYERS", "", "", "", ""] -atm_stashvar[9229] = ["RELATIVE HUMIDITY AFTER MAIN CLOUD", "", "", "", ""] -atm_stashvar[9230] = ["VISIBILITY ON MODEL LEVELS M", "", "", "", ""] -atm_stashvar[9231] = ["COMBINED CLOUD AMOUNT IN EACH LAYER", "", "", "", ""] -atm_stashvar[9232] = ["CEILOMETER CLD AMT - RANDOM OVERLAP", "", "", "", ""] -atm_stashvar[9233] = ["CEILOMETER CLD AMT MAX/RANDOM OVERLP", "", "", "", ""] -atm_stashvar[9234] = ["CEILOMETER CLOUD AMT IN EACH LAYER", "", "", "", ""] -atm_stashvar[9238] = ["CLOUD TOP ASL COVER.GT.0.1 OCTA KFT", "", "", "", ""] -atm_stashvar[9239] = ["CLOUD TOP ASL COVER.GT.1.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9240] = ["CLOUD TOP ASL COVER.GT.2.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9241] = ["CLOUD TOP ASL COVER.GT.3.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9242] = ["CLOUD TOP ASL COVER.GT.4.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9243] = ["CLOUD TOP ASL COVER.GT.5.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9244] = ["CLOUD TOP ASL COVER.GT.6.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9245] = ["CLOUD TOP ASL COVER.GT.7.9 OCTA KFT", "", "", "", ""] -atm_stashvar[9310] = ["Icing Index II(RH)", "", "", "", ""] -atm_stashvar[9311] = ["Icing Index Flag II(RH)>0.1", "", "", "", ""] -atm_stashvar[9312] = ["Icing Index Flag II(RH)>0.2", "", "", "", ""] -atm_stashvar[9313] = ["Icing Index Flag II(RH)>0.3", "", "", "", ""] -atm_stashvar[9314] = ["Icing Index Flag II(RH)>0.4", "", "", "", ""] -atm_stashvar[9315] = ["Icing Index Flag II(RH)>0.5", "", "", "", ""] -atm_stashvar[9316] = ["Icing Index Flag II(RH)>0.6", "", "", "", ""] -atm_stashvar[9317] = ["Icing Index Flag II(RH)>0.7", "", "", "", ""] -atm_stashvar[9318] = ["Icing Index Flag II(RH)>0.8", "", "", "", ""] -atm_stashvar[9319] = ["Icing Index Flag II(RH)>0.9", "", "", "", ""] -atm_stashvar[9320] = ["Icing Index II(RHCldPres)", "", "", "", ""] -atm_stashvar[9321] = ["Icing Index Flag II(RHCldPres)>0.1", "", "", "", ""] -atm_stashvar[9322] = ["Icing Index Flag II(RHCldPres)>0.2", "", "", "", ""] -atm_stashvar[9323] = ["Icing Index Flag II(RHCldPres)>0.3", "", "", "", ""] -atm_stashvar[9324] = ["Icing Index Flag II(RHCldPres)>0.4", "", "", "", ""] -atm_stashvar[9325] = ["Icing Index Flag II(RHCldPres)>0.5", "", "", "", ""] -atm_stashvar[9326] = ["Icing Index Flag II(RHCldPres)>0.6", "", "", "", ""] -atm_stashvar[9327] = ["Icing Index Flag II(RHCldPres)>0.7", "", "", "", ""] -atm_stashvar[9328] = ["Icing Index Flag II(RHCldPres)>0.8", "", "", "", ""] -atm_stashvar[9329] = ["Icing Index Flag II(RHCldPres)>0.9", "", "", "", ""] -atm_stashvar[9330] = ["Icing Index II(CF)", "", "", "", ""] -atm_stashvar[9331] = ["Icing Index Flag II(CF)>0.1", "", "", "", ""] -atm_stashvar[9332] = ["Icing Index II(CF)>0.2", "", "", "", ""] -atm_stashvar[9333] = ["Icing Index Flag II(CF)>0.3", "", "", "", ""] -atm_stashvar[9334] = ["Icing Index Flag II(CF)>0.4", "", "", "", ""] -atm_stashvar[9335] = ["Icing Index Flag II(CF)>0.5", "", "", "", ""] -atm_stashvar[9336] = ["Icing Index Flag II(CF)>0.6", "", "", "", ""] -atm_stashvar[9337] = ["Icing Index Flag II(CF)>0.7", "", "", "", ""] -atm_stashvar[9338] = ["Icing Index Flag II(CF)>0.8", "", "", "", ""] -atm_stashvar[9339] = ["Icing Index Flag II(CF)>0.9", "", "", "", ""] -atm_stashvar[9340] = ["Icing Index II(LCF)", "", "", "", ""] -atm_stashvar[9341] = ["Icing Index Flag II(LCF)>0.1", "", "", "", ""] -atm_stashvar[9342] = ["Icing Index Flag II(LCF)>0.2", "", "", "", ""] -atm_stashvar[9343] = ["Icing Index Flag II(LCF)>0.3", "", "", "", ""] -atm_stashvar[9344] = ["Icing Index Flag II(LCF)>0.4", "", "", "", ""] -atm_stashvar[9345] = ["Icing Index Flag II(LCF)>0.5", "", "", "", ""] -atm_stashvar[9346] = ["Icing Index Flag II(LCF)>0.6", "", "", "", ""] -atm_stashvar[9347] = ["Icing Index Flag II(LCF)>0.7", "", "", "", ""] -atm_stashvar[9348] = ["Icing Index Flag II(LCF)>0.8", "", "", "", ""] -atm_stashvar[9349] = ["Icing Index Flag II(LCF)>0.9", "", "", "", ""] -atm_stashvar[9350] = ["Icing Index II(LWC)", "", "", "", ""] -atm_stashvar[9351] = ["Icing Index Flag II(LWC)>0.1", "", "", "", ""] -atm_stashvar[9352] = ["Icing Index Flag II(LWC)>0.2", "", "", "", ""] -atm_stashvar[9353] = ["Icing Index Flag II(LWC)>0.3", "", "", "", ""] -atm_stashvar[9354] = ["Icing Index Flag II(LWC)>0.4", "", "", "", ""] -atm_stashvar[9355] = ["Icing Index Flag II(LWC)>0.5", "", "", "", ""] -atm_stashvar[9356] = ["Icing Index Flag II(LWC)>0.6", "", "", "", ""] -atm_stashvar[9357] = ["Icing Index Flag II(LWC)>0.7", "", "", "", ""] -atm_stashvar[9358] = ["Icing Index Flag II(LWC)>0.8", "", "", "", ""] -atm_stashvar[9359] = ["Icing Index Flag II(LWC)>0.9", "", "", "", ""] -atm_stashvar[9360] = ["Icing Index II(icLWC)", "", "", "", ""] -atm_stashvar[9361] = ["Icing Index Flag II(icLWC)>0.1", "", "", "", ""] -atm_stashvar[9362] = ["Icing Index Flag II(icLWC)>0.2", "", "", "", ""] -atm_stashvar[9363] = ["Icing Index Flag II(icLWC)>0.3", "", "", "", ""] -atm_stashvar[9364] = ["Icing Index Flag II(icLWC)>0.4", "", "", "", ""] -atm_stashvar[9365] = ["Icing Index Flag II(icLWC)>0.5", "", "", "", ""] -atm_stashvar[9366] = ["Icing Index Flag II(icLWC)>0.6", "", "", "", ""] -atm_stashvar[9367] = ["Icing Index Flag II(icLWC)>0.7", "", "", "", ""] -atm_stashvar[9368] = ["Icing Index Flag II(icLWC)>0.8", "", "", "", ""] -atm_stashvar[9369] = ["Icing Index Flag II(icLWC)>0.9", "", "", "", ""] -atm_stashvar[9370] = ["Icing Index II(FROST-LN)", "", "", "", ""] -atm_stashvar[9371] = ["Icing Index Flag II(FROST-LN)>0.1", "", "", "", ""] -atm_stashvar[9372] = ["Icing Index Flag II(FROST-LN)>0.2", "", "", "", ""] -atm_stashvar[9373] = ["Icing Index Flag II(FROST-LN)>0.3", "", "", "", ""] -atm_stashvar[9374] = ["Icing Index Flag II(FROST-LN)>0.4", "", "", "", ""] -atm_stashvar[9375] = ["Icing Index Flag II(FROST-LN)>0.5", "", "", "", ""] -atm_stashvar[9376] = ["Icing Index Flag II(FROST-LN)>0.6", "", "", "", ""] -atm_stashvar[9377] = ["Icing Index Flag II(FROST-LN)>0.7", "", "", "", ""] -atm_stashvar[9378] = ["Icing Index Flag II(FROST-LN)>0.8", "", "", "", ""] -atm_stashvar[9379] = ["Icing Index Flag II(FROST-LN)>0.9", "", "", "", ""] -atm_stashvar[9380] = ["Icing Index II(FROST-Gamma)", "", "", "", ""] -atm_stashvar[9381] = ["Icing Index Flag II(FROSTGamma)>0.1", "", "", "", ""] -atm_stashvar[9382] = ["Icing Index Flag II(FROSTGamma)>0.2", "", "", "", ""] -atm_stashvar[9383] = ["Icing Index Flag II(FROSTGamma)>0.3", "", "", "", ""] -atm_stashvar[9384] = ["Icing Index Flag II(FROSTGamma)>0.4", "", "", "", ""] -atm_stashvar[9385] = ["Icing Index Flag II(FROSTGamma)>0.5", "", "", "", ""] -atm_stashvar[9386] = ["Icing Index Flag II(FROSTGamma)>0.6", "", "", "", ""] -atm_stashvar[9387] = ["Icing Index Flag II(FROSTGamma)>0.7", "", "", "", ""] -atm_stashvar[9388] = ["Icing Index Flag II(FROSTGamma)>0.8", "", "", "", ""] -atm_stashvar[9389] = ["Icing Index Flag II(FROSTGamma)>0.9", "", "", "", ""] -atm_stashvar[9391] = ["Icing Index 2d MaxRan II(RH)", "", "", "", ""] -atm_stashvar[9392] = ["Icing Index 2d MaxRan II(RHCldPres)", "", "", "", ""] -atm_stashvar[9393] = ["Icing Index 2d MaxRan II(CF)", "", "", "", ""] -atm_stashvar[9394] = ["Icing Index 2d MaxRan II(LCF)", "", "", "", ""] -atm_stashvar[9395] = ["Icing Index 2d MaxRan II(LWC)", "", "", "", ""] -atm_stashvar[9396] = ["Icing Index 2d MaxRan II(icLWC)", "", "", "", ""] -atm_stashvar[9397] = ["Icing Index 2d MaxRan II(FROST-LN)", "", "", "", ""] -atm_stashvar[9398] = ["Icing Index 2d MaxRan II(FROST-Gamma", "", "", "", ""] -atm_stashvar[10181] = ["dT SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[10185] = ["dU SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[10186] = ["dV SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[10187] = ["dW SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[12002] = ["U (MODEL LEVELS) AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12003] = ["V (MODEL LEVELS) AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12004] = ["TEMPERATURE AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12010] = ["SPECIFIC HUMIDITY AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12012] = ["QCF AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12170] = ["QCL INCR: advect positive", "", "", "", ""] -atm_stashvar[12171] = ["QCL INCR: advect negative", "", "", "", ""] -atm_stashvar[12172] = ["QCF INCR: advect positive", "", "", "", ""] -atm_stashvar[12173] = ["QCF INCR: advect negative", "", "", "", ""] -atm_stashvar[12176] = ["LIQ CLOUD VOL INCR: advect positive", "", "", "", ""] -atm_stashvar[12177] = ["LIQ CLOUD VOL INCR: advect negative", "", "", "", ""] -atm_stashvar[12178] = ["FROZEN CLOUD VOL INCR:advect positiv", "", "", "", ""] -atm_stashvar[12179] = ["FROZEN CLOUD VOL INCR:advect negativ", "", "", "", ""] -atm_stashvar[12181] = ["TEMPERATURE INCR: advect K/Timestep", "", "", "", ""] -atm_stashvar[12182] = ["Q INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12183] = ["QCL INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12184] = ["QCF INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12185] = ["U WIND INCR: advection", "", "", "", ""] -atm_stashvar[12186] = ["V WIND INCR: advection", "", "", "", ""] -atm_stashvar[12187] = ["W INCR: advect m/s/timestep", "", "", "", ""] -atm_stashvar[12189] = ["RAIN INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12190] = ["GRAUPEL INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12191] = ["QCF2 INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12192] = ["BULK CLOUD VOL INCR: advect", "", "", "", ""] -atm_stashvar[12193] = ["LIQUID CLOUD VOL INCR: advect", "", "", "", ""] -atm_stashvar[12194] = ["FROZEN CLOUD VOL INCR: advect", "", "", "", ""] -atm_stashvar[12195] = ["M_V INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12196] = ["M_CL INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12197] = ["M_CF INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12198] = ["M_RAIN INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12199] = ["M_GRAUP INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12200] = ["M_CF2 INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12203] = ["dz to w departure point m", "", "", "", ""] -atm_stashvar[12204] = ["lambda w departure point radians", "", "", "", ""] -atm_stashvar[12205] = ["phi w departure point radians", "", "", "", ""] -atm_stashvar[12254] = ["QCL AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12381] = ["TEMP INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12382] = ["Q INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12383] = ["QCL INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12384] = ["QCF INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12389] = ["RAIN INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12390] = ["GRAUPEL INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12391] = ["QCF2 INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12395] = ["M_V INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12396] = ["M_CL INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12397] = ["M_CF INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12398] = ["M_RAIN INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12399] = ["M_GRAUP INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12400] = ["M_CF2 INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[13181] = ["dT DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13182] = ["dQ DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13185] = ["dU DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13186] = ["dV DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13187] = ["dW DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13190] = ["SMAG: VISC_M", "", "", "", ""] -atm_stashvar[13191] = ["SMAG: VISC_H", "", "", "", ""] -atm_stashvar[13192] = ["SMAG: S (SHEAR TERM)", "", "", "", ""] -atm_stashvar[13193] = ["MIXING LENGTH RNEUTML", "", "", "", ""] -atm_stashvar[13201] = ["Indicator of local q diffusion", "", "", "", ""] -atm_stashvar[13381] = ["dT FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13385] = ["dU FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13386] = ["dV FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13387] = ["dW FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13388] = ["dEXNER FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13481] = ["dT FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13485] = ["dU FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13486] = ["dV FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13487] = ["dW FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[14181] = ["TEMPERATURE INCR: En cor K/Timestep", "", "", "", ""] -atm_stashvar[14201] = ["ATMOS ENERGY CORR'N IN COLUMN W/M2", "", "", "", ""] -atm_stashvar[15002] = ["U WIND ON MODEL LEVELS B GRID", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[15003] = ["V WIND ON MODEL LEVELS B GRID", "va", "m s-1", "northward_wind", ""] -atm_stashvar[15101] = ["H OF THETA MODEL LEVS FROM SEA LEVEL", "", "", "", ""] -atm_stashvar[15102] = ["H OF RHO MODEL LEVS FROM SEA LEVEL", "", "", "", ""] -atm_stashvar[15108] = ["PRESSURE ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15119] = ["THETA ON GEOMETRIC HEIGHT LEVELS", "", "K", "air_potential_temperature", ""] -atm_stashvar[15127] = ["RHO ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15142] = ["W ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15143] = ["U ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15144] = ["V ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15181] = ["dT INC FROM QT_BAL_CLD", "", "", "", ""] -atm_stashvar[15182] = ["DQ INC FROM QT_BAL_CLD", "", "", "", ""] -atm_stashvar[15183] = ["DQCL INC FROM QT_BAL_CLD", "", "", "", ""] -atm_stashvar[15201] = ["U WIND ON PRESSURE LEVELS B GRID", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[15202] = ["V WIND ON PRESSURE LEVELS B GRID", "va", "m s-1", "northward_wind", ""] -atm_stashvar[15212] = ["50 METRE WIND U-COMPONENT B GRID", "", "", "", ""] -atm_stashvar[15213] = ["50 METRE WIND V-COMPONENT B GRID", "", "", "", ""] -atm_stashvar[15214] = ["ERTEL POTENTIAL VORTICITY THETA SURF", "", "", "", ""] -atm_stashvar[15215] = ["THETA ON PV=+/-2 SURFACE", "", "K", "air_potential_temperature", ""] -atm_stashvar[15216] = ["THETA AT PV POINTS", "", "K", "air_potential_temperature", ""] -atm_stashvar[15217] = ["PV ON MODEL LEVELS(CALC PV)", "", "", "", ""] -atm_stashvar[15218] = ["PV on model theta levels", "", "", "", ""] -atm_stashvar[15229] = ["POTENTIAL VORTICITY ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[15231] = ["TEST FIELD ON V-GRID-SINGLE LEVEL", "", "", "", ""] -atm_stashvar[15232] = ["TEST FIELD ON P GRID-SINGLE LEVEL", "", "", "", ""] -atm_stashvar[15233] = ["TEST FIELD ON P GRID-PRESS LEVELS", "", "", "", ""] -atm_stashvar[15234] = ["TEST FIELD ON P GRID-MODEL LEVELS", "", "", "", ""] -atm_stashvar[15242] = ["W COMPNT (OF WIND) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[15243] = ["U WIND ON PRESSURE LEVELS", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[15244] = ["V WIND ON PRESSURE LEVELS", "va", "m s-1", "northward_wind", ""] -atm_stashvar[15245] = ["50 METRE WIND U-COMPONENT", "", "", "", ""] -atm_stashvar[15246] = ["50 METRE WIND V-COMPONENT", "", "", "", ""] -atm_stashvar[15260] = ["Rho*w on rho levels", "", "", "", ""] -atm_stashvar[15261] = ["Rho*u*w on rho levels", "", "", "", ""] -atm_stashvar[15262] = ["Rho*v*w on rho levels", "", "", "", ""] -atm_stashvar[15263] = ["Rho*w with w > 0m/s on rho levels", "", "", "", ""] -atm_stashvar[15264] = ["Rho*w with w < 0m/s on rho levels", "", "", "", ""] -atm_stashvar[15265] = ["Rho*w with w > 1m/s on rho levels", "", "", "", ""] -atm_stashvar[15266] = ["Rho*w with w < -1m/s on rho levels", "", "", "", ""] -atm_stashvar[15270] = ["SQU OF NORM OF FOURIER TRANS OF W", "", "", "", ""] -atm_stashvar[15271] = ["True unscaled density", "", "", "", ""] -atm_stashvar[16004] = ["TEMPERATURE ON THETA LEVELS", "ta", "K", "air_temperature", ""] -atm_stashvar[16140] = ["QCL INCR: pc2 init positive", "", "", "", ""] -atm_stashvar[16141] = ["QCL INCR: pc2 init negative", "", "", "", ""] -atm_stashvar[16142] = ["QCF INCR: pc2 init positive", "", "", "", ""] -atm_stashvar[16143] = ["QCF INCR: pc2 init negative", "", "", "", ""] -atm_stashvar[16146] = ["LIQ CLOUD VOL INCR: pc2 init positiv", "", "", "", ""] -atm_stashvar[16147] = ["LIQ CLOUD VOL INCR: pc2 init negativ", "", "", "", ""] -atm_stashvar[16148] = ["ICE CLOUD VOL INCR: pc2 init positiv", "", "", "", ""] -atm_stashvar[16149] = ["ICE CLOUD VOL INCR: pc2 init negativ", "", "", "", ""] -atm_stashvar[16150] = ["QCL INCR: pc2 pressure change positi", "", "", "", ""] -atm_stashvar[16151] = ["QCL INCR: pc2 pressure change negati", "", "", "", ""] -atm_stashvar[16156] = ["LIQ CLOUD VOL INCR: pc2 press positi", "", "", "", ""] -atm_stashvar[16157] = ["LIQ CLOUD VOL INCR: pc2 press negati", "", "", "", ""] -atm_stashvar[16161] = ["TEMPERATURE INCR: pc2 initialisation", "", "", "", ""] -atm_stashvar[16162] = ["SPECIFIC HUMIDITY INCR: pc2 initiali", "", "", "", ""] -atm_stashvar[16163] = ["QCL INCR: pc2 initialisation", "", "", "", ""] -atm_stashvar[16164] = ["QCF INCR: pc2 initialisation", "", "", "", ""] -atm_stashvar[16172] = ["BULK CLOUD VOL INCR: pc2 initialisat", "", "", "", ""] -atm_stashvar[16173] = ["LIQ CLOUD VOL INCR: pc2 init", "", "", "", ""] -atm_stashvar[16174] = ["ICE CLOUD VOL INCR: pc2 initialise", "", "", "", ""] -atm_stashvar[16181] = ["TEMPERATURE INCR: pc2 pres change", "", "", "", ""] -atm_stashvar[16182] = ["SPECIFIC HUMIDITY INCR: pc2 pressure", "", "", "", ""] -atm_stashvar[16183] = ["QCL INCR: pc2 pressure change", "", "", "", ""] -atm_stashvar[16184] = ["QCF INCR: from pc2 pressure change", "", "", "", ""] -atm_stashvar[16192] = ["BULK CLOUD VOL INCR: pc2 pres change", "", "", "", ""] -atm_stashvar[16193] = ["LIQ CLOUD VOL INCR: pc2 pressure cha", "", "", "", ""] -atm_stashvar[16194] = ["FROZEN CLOUD VOL INCR: pc2 pressure", "", "", "", ""] -atm_stashvar[16201] = ["GEOPOTENTIAL HEIGHT ON THETA LEVELS", "zg", "m", "geopotential_height", ""] -atm_stashvar[16202] = ["GEOPOTENTIAL HEIGHT ON P LEV/P GRID", "zg", "m", "geopotential_height", ""] -atm_stashvar[16203] = ["TEMPERATURE ON P LEV/P GRID", "ta", "K", "air_temperature", ""] -atm_stashvar[16204] = ["RH WRT ICE ON P LEV/P GRID", "hur", "%", "relative_humidity", ""] -atm_stashvar[16205] = ["WET BULB POTENTIAL TEMPERATURE K", "", "", "", ""] -atm_stashvar[16206] = ["CLOUD WATER CONTENT (qc)", "", "", "", ""] -atm_stashvar[16207] = ["TOTAL SPECIFIC HUMIDITY (qT)", "", "", "", ""] -atm_stashvar[16222] = ["PRESSURE AT MEAN SEA LEVEL", "psl", "Pa", "air_pressure_at_sea_level", ""] -atm_stashvar[16255] = ["GEOPOTENTIAL HEIGHT ON RHO LEVELS", "zg", "m", "geopotential_height", ""] -atm_stashvar[16256] = ["RH WRT WATER ON P LEV/P GRID", "hur", "%", "relative_humidity", ""] -atm_stashvar[17203] = ["MSA MASS MIXING RATIO FLUX KG/KG/S", "", "", "", ""] -atm_stashvar[17204] = ["NH3 DEPLETION KG/KG AFTER TSTEP", "", "", "", ""] -atm_stashvar[17205] = ["DIMETHYL SULPHIDE EMISSIONS", "", "", "", ""] -atm_stashvar[17206] = ["DMS DRY OXIDATION MMR FLUX KG/KG/S", "", "", "", ""] -atm_stashvar[17207] = ["DMS DRY OXIDATION TO SO2 KG/KG/S", "", "", "", ""] -atm_stashvar[17208] = ["DMS DRY OXIDATION TO SO4 ACC KG/KG/S", "", "", "", ""] -atm_stashvar[17209] = ["DMS DRY OXIDATION TO SO4 AIT KG/KG/S", "", "", "", ""] -atm_stashvar[17210] = ["SO2 DRY OXID BY OH MMR FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17211] = ["SO2 WET OXID BY H2O2 FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17212] = ["SO2 WET OXID BY O3 FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17213] = ["SO4 DIS TO ACC BY EVAP FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17214] = ["SO4 ACC TO DIS BY NUCL FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17215] = ["SO4 AIT TO DIS BY DIFF FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17216] = ["SO4 AIT TO ACC BY COAG FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17217] = ["SO2 DRY OXID TO SO4 ACC FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17218] = ["SO2 DRY OXID TO SO4 AIT FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17219] = ["SO4 AIT-ACC BY MODE MERGING kg/kg/s", "", "", "", ""] -atm_stashvar[17220] = ["PM10 CONCENTRATION", "", "", "", ""] -atm_stashvar[17221] = ["PM2.5 CONCENTRATION", "", "", "", ""] -atm_stashvar[17222] = ["SULPHATE CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17223] = ["SULPHATE CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17224] = ["BLACK CARBON CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17225] = ["BLACK CARBON CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17226] = ["BIOM BURNING CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17227] = ["BIOM BURNING CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17228] = ["OCFF CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17229] = ["OCFF CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17230] = ["SOA CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17231] = ["SOA CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17232] = ["SEA SALT CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17233] = ["SEA SALT CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17234] = ["DUST CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17235] = ["DUST CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17236] = ["NITRATE CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17237] = ["NITRATE CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17240] = ["NH3 OXID BY HNO3 MMR FLX KG[N]/KG/S", "", "", "", ""] -atm_stashvar[17241] = ["NIT ACC TO DIS BY NUC FLX KG[N]/KG/S", "", "", "", ""] -atm_stashvar[17242] = ["NIT DIS-ACC BY EVAP FLX KG[N]/KG/S", "", "", "", ""] -atm_stashvar[17257] = ["TOTAL DUST CONC (microg/m3)", "", "", "", ""] -atm_stashvar[19001] = ["VEGETATION CARBON ON PFTS KG C/M2", "", "", "", ""] -atm_stashvar[19002] = ["GRIDBOX MEAN VEG CARBON KG C/M2", "", "", "", ""] -atm_stashvar[19003] = ["PHENOLOGICAL LEAF TURNOVER RATE PFTS", "", "", "", ""] -atm_stashvar[19004] = ["LITTER CARBON ON PFTS KG C/M2/YEAR", "", "", "", ""] -atm_stashvar[19005] = ["GRIDBOX MEAN LITTER CARBN KGC/M2/YR", "", "", "", ""] -atm_stashvar[19006] = ["MEAN LEAF TRNVR RATE PFTS FOR PHENOL", "", "", "", ""] -atm_stashvar[19007] = ["LEAF AREA INDEX PFTS AFTER PHENOLOGY", "", "", "", ""] -atm_stashvar[19008] = ["MN LEAF TRNVR RATE PFTS FOR TRIFFID", "", "", "", ""] -atm_stashvar[19009] = ["MEAN NPP ON PFTS FOR TRIFFID", "", "", "", ""] -atm_stashvar[19010] = ["MEAN WOOD RESP ON PFTS FOR TRIFFID", "", "", "", ""] -atm_stashvar[19011] = ["MEAN SOIL RESPIRATION FOR TRIFFID", "", "", "", ""] -atm_stashvar[19012] = ["DISTURBED FRACTION OF VEGETATION", "", "", "", ""] -atm_stashvar[19013] = ["SURFACE TYPE FRACTIONS AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19014] = ["LEAF AREA INDEX PFTS AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19015] = ["CANOPY HEIGHT ON PFTS AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19016] = ["SOIL CARBON CONTENT AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19017] = ["DPM SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19018] = ["RPM SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19019] = ["BIO SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19020] = ["HUM SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19021] = ["DPM SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19022] = ["RPM SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19023] = ["BIO SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19024] = ["HUM SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19025] = ["LEAF CARBON ON PFTS KGC/M2", "", "", "", ""] -atm_stashvar[19026] = ["GRIDBOX MEAN LEAF CARBON KGC/M2", "", "", "", ""] -atm_stashvar[19027] = ["WOOD CARBON ON PFTS KGC/M2", "", "", "", ""] -atm_stashvar[19028] = ["GRIDBOX MEAN WOOD CARBON KGC/M2", "", "", "", ""] -atm_stashvar[19029] = ["ROOT CARBON ON PFTS KGC/M2", "", "", "", ""] -atm_stashvar[19030] = ["GRIDBOX MEAN ROOT CARBON KGC/M2", "", "", "", ""] -atm_stashvar[19031] = ["PREVIOUS DIST FRAC OF VEGETATION", "", "", "", ""] -atm_stashvar[19032] = ["FAST TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[19033] = ["MEDIUM TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[19034] = ["SLOW TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[19036] = ["LU C FLUX TO FAST POOL KGC/M2/YR", "", "", "", ""] -atm_stashvar[19037] = ["LU C FLUX TO MEDIUM POOL KGC/M2/YR", "", "", "", ""] -atm_stashvar[19038] = ["LU C FLUX TO SLOW POOL KGC/M2/YR", "", "", "", ""] -atm_stashvar[19039] = ["FAST POOL DECOMP C FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19040] = ["MEDIUM POOL DECOMP C FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19041] = ["SLOW POOL DECOMP C FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19042] = ["LANDUSE CO2 FLUX TO ATM KGC/M2/YR", "", "", "", ""] -atm_stashvar[19043] = ["HARVEST C ON PFTS KGC/M2/360d", "", "", "", ""] -atm_stashvar[19044] = ["HARVEST C (GBM) KGC/M2/360d", "", "", "", ""] -atm_stashvar[19045] = ["LANDUSE C TO SOIL ON PFTS KG/M2/YR", "", "", "", ""] -atm_stashvar[19046] = ["LANDUSE C TO SOIL (GBM) KGC/M2/YR", "", "", "", ""] -atm_stashvar[19047] = ["TRIFFID CO2 FLUX TO ATMOS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19048] = ["CARBON ERROR IN VEG2 KGC/M2", "", "", "", ""] -atm_stashvar[19049] = ["CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19050] = ["VEG CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19051] = ["SOIL CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19052] = ["WP CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19053] = ["SOIL TO ATMOS RESP FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19054] = ["FRAC. OF TOTAL LITTER GOING TO DPM", "", "", "", ""] -atm_stashvar[19101] = ["NPP ON PFTS POST N-LIMIT KGC/M2/YR", "", "", "", ""] -atm_stashvar[19102] = ["NPP POST N-LIMIT (GBM) KGC/M2/YR", "", "", "", ""] -atm_stashvar[19103] = ["EXUDATES ON PFTS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19104] = ["GRIDBOX MEAN EXUDATES KGC/M2/YR", "", "", "", ""] -atm_stashvar[19111] = ["NITROGEN DEPOSITION KGN/M2/YR", "", "", "", ""] -atm_stashvar[19112] = ["NITROGEN FIXATION PFTS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19113] = ["NITROGEN FIXATION (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19114] = ["NITROGEN LEACHING (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19115] = ["MINERALISED NIT. GAS LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19116] = ["INORG NITROGEN LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19117] = ["NITROGEN ATM GAS LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19118] = ["NITROGEN TOTAL LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19119] = ["HARVEST N ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19120] = ["HARVEST N (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19121] = ["NITROGEN LUC ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19122] = ["NITROGEN LUC (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19123] = ["NITROGEN LITTER ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19124] = ["NITROGEN LITTER (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19125] = ["N FERTILISER ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19126] = ["N FERTILISER (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19127] = ["LANDUSE N TO SOIL ON PFTS KG/M2/YR", "", "", "", ""] -atm_stashvar[19128] = ["LANDUSE N TO SOIL (GBM) KGC/M2/YR", "", "", "", ""] -atm_stashvar[19131] = ["NITROGEN STEM/WOOD KGN/M2", "", "", "", ""] -atm_stashvar[19132] = ["NITROGEN LEAF KGN/M2", "", "", "", ""] -atm_stashvar[19133] = ["NITROGEN ROOT KGN/M2", "", "", "", ""] -atm_stashvar[19134] = ["NITROGEN LEAF LABILE KGN/M2", "", "", "", ""] -atm_stashvar[19135] = ["NITROGEN LEAF ALLOCATED KGN/M2", "", "", "", ""] -atm_stashvar[19136] = ["NITROGEN VEG KGN/M2", "", "", "", ""] -atm_stashvar[19137] = ["NITROGEN VEG (GBM) KGN/M2", "", "", "", ""] -atm_stashvar[19141] = ["NITROGEN SOIL RPM KGN/M2", "", "", "", ""] -atm_stashvar[19142] = ["NITROGEN SOIL DPM KGN/M2", "", "", "", ""] -atm_stashvar[19143] = ["NITROGEN SOIL BIO KGN/M2", "", "", "", ""] -atm_stashvar[19144] = ["NITROGEN SOIL HUM KGN/M2", "", "", "", ""] -atm_stashvar[19145] = ["NITROGEN SOIL TOTAL KGN/M2", "", "", "", ""] -atm_stashvar[19146] = ["INORGANIC NITROGEN KGN/M2", "", "", "", ""] -atm_stashvar[19147] = ["NITROGEN TOTAL ECOSYSTEM KGN/M2", "", "", "", ""] -atm_stashvar[19152] = ["N DEMAND GROWTH KGN/M2/YR", "", "", "", ""] -atm_stashvar[19153] = ["N DEMAND SPREAD KGN/M2/YR", "", "", "", ""] -atm_stashvar[19154] = ["N DEMAND TOTAL KGN/M2/YR", "", "", "", ""] -atm_stashvar[19155] = ["N DEMAND TOTAL (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19156] = ["N UPTAKE TURNOVER KGN/M2/YR", "", "", "", ""] -atm_stashvar[19157] = ["N UPTAKE GROWTH KGN/M2/YR", "", "", "", ""] -atm_stashvar[19158] = ["N UPTAKE SPREAD KGN/M2/YR", "", "", "", ""] -atm_stashvar[19159] = ["N UPTAKE TOTAL KGN/M2/YR", "", "", "", ""] -atm_stashvar[19160] = ["N UPTAKE TOTAL (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19161] = ["N SOIL DECOMPOSITION RATE MODIFIER", "", "", "", ""] -atm_stashvar[19162] = ["N IMMOBILIS POTEN DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19163] = ["N IMMOBILIS POTEN RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19164] = ["N IMMOBILIS POTEN BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19165] = ["N IMMOBILIS POTEN HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19166] = ["N IMMOBILIS POTEN TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19167] = ["N IMMOBILIS DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19168] = ["N IMMOBILIS RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19169] = ["N IMMOBILIS BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19170] = ["N IMMOBILIS HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19171] = ["N IMMOBILIS TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19172] = ["N MINERALIS POTEN DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19173] = ["N MINERALIS POTEN RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19174] = ["N MINERALIS POTEN BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19175] = ["N MINERALIS POTEN HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19176] = ["N MINERALIS POTEN TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19177] = ["N MINERALIS DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19178] = ["N MINERALIS RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19179] = ["N MINERALIS BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19180] = ["N MINERALIS HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19181] = ["N MINERALIS TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19182] = ["GPP ON PFTS (KGC/M2/YR)", "", "", "", ""] -atm_stashvar[19183] = ["GPP GRIDBOX MEAN (KGC/M2/YR)", "", "", "", ""] -atm_stashvar[19184] = ["PLANT RESP AFT N LIM PFTS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19185] = ["PLANT RESP AFT N LIM GBM KGC/M2/YR", "", "", "", ""] -atm_stashvar[19186] = ["VEG NITROGEN ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19187] = ["SOIL NITROGEN ERROR TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19188] = ["INORG NITROGEN ERROR TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19189] = ["NITROGEN ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[20001] = ["THICKNESS : 1000-500 MB", "", "", "", ""] -atm_stashvar[20002] = ["THICKNESS : 1000-850 MB", "", "", "", ""] -atm_stashvar[20003] = ["WIND SPEEDS : 10 METRES B GRID", "", "", "", ""] -atm_stashvar[20004] = ["WIND SPEEDS : PRESSURE LEVEL", "", "", "", ""] -atm_stashvar[20005] = ["DIVERGENCE", "", "", "", ""] -atm_stashvar[20006] = ["RELATIVE VORTICITY", "", "", "", ""] -atm_stashvar[20007] = ["MOUNTAIN WAVE TURBULENCE PREDICTOR", "", "", "", ""] -atm_stashvar[20012] = ["CONVECTIVE CLOUD DEPTHS (kft)", "", "", "", ""] -atm_stashvar[20013] = ["TOTAL PRECIP ACCUMULATION : 6 HOURS", "", "", "", ""] -atm_stashvar[20014] = ["PRECIPITATION SYMBOL", "", "", "", ""] -atm_stashvar[20015] = ["PRESENT WEATHER CODE", "", "", "", ""] -atm_stashvar[20016] = ["CAT PREDICTOR", "", "", "", ""] -atm_stashvar[20017] = ["MAX CAT", "", "", "", ""] -atm_stashvar[20018] = ["MAX CAT PRESSURE", "", "", "", ""] -atm_stashvar[20020] = ["MAX WIND U-COMPONENT", "", "", "", ""] -atm_stashvar[20021] = ["MAX WIND V-COMPONENT", "", "", "", ""] -atm_stashvar[20022] = ["MAX WIND PRESSURE", "", "", "", ""] -atm_stashvar[20023] = ["MAX WIND ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20024] = ["TROPOPAUSE PRESSURE", "", "", "", ""] -atm_stashvar[20025] = ["TROPOPAUSE TEMPERATURE", "", "", "", ""] -atm_stashvar[20026] = ["TROPOPAUSE HEIGHT", "", "", "", ""] -atm_stashvar[20027] = ["TROPOPAUSE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20028] = ["SNOW PROBABILITY", "", "", "", ""] -atm_stashvar[20029] = ["CONTRAIL - LOWER LIMIT", "", "", "", ""] -atm_stashvar[20030] = ["CONTRAIL - UPPER LIMIT", "", "", "", ""] -atm_stashvar[20031] = ["THERMAL ADVECTION", "", "", "", ""] -atm_stashvar[20032] = ["MEAN THERMAL ADVECTION", "", "", "", ""] -atm_stashvar[20033] = ["FREEZING LEVEL GEOPOTENTIAL HEIGHT", "", "", "", ""] -atm_stashvar[20034] = ["FREEZING LEVEL PRESSURE", "", "", "", ""] -atm_stashvar[20035] = ["FREEZING LEVEL ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20036] = ["-20C ISOTHERM GEOPOTENTIAL HEIGHT", "", "", "", ""] -atm_stashvar[20037] = ["-20C ISOTHERM PRESSURE", "", "", "", ""] -atm_stashvar[20038] = ["-20C ISOTHERM ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20039] = ["CONV CLOUD BASE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20040] = ["CONV CLOUD TOP ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20041] = ["MAXIMUM WIND BASE - ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20042] = ["MAXIMUM WIND TOP - ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20043] = ["WAFC ICING POTENTIAL", "", "", "", ""] -atm_stashvar[20044] = ["WAFC ICING POTENTIAL (retired)", "", "", "", ""] -atm_stashvar[20045] = ["WAFC IN-CLOUD TURB POTENTIAL", "", "", "", ""] -atm_stashvar[20046] = ["WAFC IN-CLOUD TURB POTENTIAL (ret)", "", "", "", ""] -atm_stashvar[20047] = ["WAFC CAT POTENTIAL", "", "", "", ""] -atm_stashvar[20048] = ["WAFC CAT POTENTIAL (retired)", "", "", "", ""] -atm_stashvar[20049] = ["WAFC CB HORIZONTAL EXTENT", "", "", "", ""] -atm_stashvar[20050] = ["WAFC PRESSURE AT CB BASE", "", "", "", ""] -atm_stashvar[20051] = ["WAFC PRESSURE AT CB TOP", "", "", "", ""] -atm_stashvar[20052] = ["WAFC PRESSURE AT EMBD CB BASE", "", "", "", ""] -atm_stashvar[20053] = ["WAFC PRESSURE AT EMBD CB TOP", "", "", "", ""] -atm_stashvar[20054] = ["WAFC ICAO HEIGHT AT CB BASE", "", "", "", ""] -atm_stashvar[20055] = ["WAFC ICAO HEIGHT AT CB TOP", "", "", "", ""] -atm_stashvar[20056] = ["WAFC ICAO HGHT EMBD CB BASE", "", "", "", ""] -atm_stashvar[20057] = ["WAFC ICAO HGHT EMBD CB TOP", "", "", "", ""] -atm_stashvar[20058] = ["SURFACE DUST CONCENTRATION (g/m3)", "", "", "", ""] -atm_stashvar[20059] = ["2000-5000FT DUST CONCENTRATION(g/m3)", "", "", "", ""] -atm_stashvar[20060] = ["ZENITH TOTAL DELAY", "", "", "", ""] -atm_stashvar[20061] = ["-70C ISOTHERM GEOPOTENTIAL HEIGHT", "", "", "", ""] -atm_stashvar[20062] = ["-70C ISOTHERM PRESSURE", "", "", "", ""] -atm_stashvar[20063] = ["-70C ISOTHERM ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20064] = ["TROPOPAUSE PRESSURE", "", "", "", ""] -atm_stashvar[20065] = ["TROPOPAUSE TEMPERATURE", "", "", "", ""] -atm_stashvar[20066] = ["TROPOPAUSE HEIGHT", "", "", "", ""] -atm_stashvar[20067] = ["TROPOPAUSE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20068] = ["THINNED LS RAINFALL RATE KG/M2/S", "", "", "", ""] -atm_stashvar[20069] = ["THINNED TOTAL PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[20070] = ["VIS AT 1.5M (incl ppn and dust) M", "", "", "", ""] -atm_stashvar[20071] = ["VIS IN DUST ONLY AT 1.5M M", "", "", "", ""] -atm_stashvar[20072] = ["CONVECTIVE PRECIP RATE: kg/m2/s", "", "", "", ""] -atm_stashvar[20073] = ["EXTENDED CONV PRECIP RATE: kg/m2/s", "", "", "", ""] -atm_stashvar[20074] = ["COLSON-PANOFSKY TURB INDEX m2/s2", "", "", "", ""] -atm_stashvar[20075] = ["ELLRODS TI1 TURBULENCE INDEX s-2", "", "", "", ""] -atm_stashvar[20076] = ["INVERSE RICHARDSON NUMBER (-)", "", "", "", ""] -atm_stashvar[20077] = ["WAFC CAT POT. (Turp et al) (StaGE)", "", "", "", ""] -atm_stashvar[20080] = ["UPDRAFT HELICITY 2000-5000m M2/S2", "", "", "", ""] -atm_stashvar[20084] = ["TROPOPAUSE PRESSURE", "", "", "", ""] -atm_stashvar[20085] = ["TROPOPAUSE TEMPERATURE", "", "", "", ""] -atm_stashvar[20086] = ["TROPOPAUSE HEIGHT", "", "", "", ""] -atm_stashvar[20087] = ["TROPOPAUSE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[21100] = ["FLASH RATE S-1", "", "", "", ""] -atm_stashvar[21101] = ["STORM LOCATION FLAG", "", "", "", ""] -atm_stashvar[21102] = ["GRAUPEL WATER PATH IN ELEC KG M-2", "", "", "", ""] -atm_stashvar[21103] = ["TOTAL ICE WATER PATH IN ELEC KG M-2", "", "", "", ""] -atm_stashvar[21104] = ["NUMBER OF LIGHTNING FLASHES", "", "", "", ""] -atm_stashvar[21105] = ["FLASH RATE: GRAUP. FLX (MCCAUL) S-1", "", "", "", ""] -atm_stashvar[21106] = ["FLASH RATE: TOTAL ICE (MCCAUL) S-1", "", "", "", ""] -atm_stashvar[26001] = ["RIVER WATER STORAGE KG", "", "", "", ""] -atm_stashvar[26002] = ["GRIDBOX OUTFLOW KG/S", "", "kg s-1", "", ""] -atm_stashvar[26003] = ["GRIDBOX INFLOW KG/S", "", "kg s-1", "", ""] -atm_stashvar[26004] = ["RIVER OUTFLOW KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[26006] = ["INLANDBASINFLOW TRIP GRID KG/S", "", "kg s", "", ""] -atm_stashvar[30001] = ["U COMPNT OF WIND RHO GRID", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[30002] = ["V COMPNT OF WIND RHO GRID", "va", "m s-1", "northward_wind", ""] -atm_stashvar[30003] = ["W COMPNT OF WIND RHO GRID", "", "", "", ""] -atm_stashvar[30004] = ["TEMPERATURE RHO GRID", "ta", "K", "air_temperature", ""] -atm_stashvar[30005] = ["SPECIFIC HUMIDITY RHO GRID", "hus", "1", "specific_humidity", ""] -atm_stashvar[30006] = ["height model levels RHO GRID M", "", "", "", ""] -atm_stashvar[30007] = ["KE model levels RHO GRID m2/s2", "", "", "", ""] -atm_stashvar[30008] = ["OMEGA ON THETA LEVELS (C GRID)", "", "", "", ""] -atm_stashvar[30011] = ["U*U*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30012] = ["U*V*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30013] = ["U*W*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30014] = ["U*T*rho_dry*dr X1.E-5 kgK/ms", "", "", "", ""] -atm_stashvar[30015] = ["U*Q*rho_dry*dr X1.E-5 kg/ms", "", "", "", ""] -atm_stashvar[30016] = ["U*Z*rho_dry*dr X1.E-5 kg/s", "", "", "", ""] -atm_stashvar[30017] = ["U*KE*rho_dry*dr X1.E-5 kgm/s3", "", "", "", ""] -atm_stashvar[30022] = ["V*V*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30023] = ["V*W*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30024] = ["V*T*rho_dry*dr X1.E-5 kgK/ms", "", "", "", ""] -atm_stashvar[30025] = ["V*Q *rho_dry*dr X1.E-5 kg/ms", "", "", "", ""] -atm_stashvar[30026] = ["V*Z*rho_dry*dr X1.E-5 kg/s", "", "", "", ""] -atm_stashvar[30027] = ["V*KE*rho_dry*dr X1.E-5 kgm/s3", "", "", "", ""] -atm_stashvar[30033] = ["W*W*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30034] = ["W*T*rho_dry*dr X1.E-5 kgK/ms", "", "", "", ""] -atm_stashvar[30035] = ["W*Q *rho_dry*dr X1.E-5 kg/ms", "", "", "", ""] -atm_stashvar[30036] = ["W*Z*rho_dry*dr X1.E-5 kg/s", "", "", "", ""] -atm_stashvar[30037] = ["W*KE*rho_dry*dr X1.E-5 kgm/s3", "", "", "", ""] -atm_stashvar[30044] = ["T*T*rho_dry*dr X1.E-5 kgK2/m2", "", "", "", ""] -atm_stashvar[30045] = ["T*Q*rho_dry*dr X1.E-5 kgK/m2", "", "", "", ""] -atm_stashvar[30046] = ["TZ*rho_dry*dr X1.E-5 kgK/m", "", "", "", ""] -atm_stashvar[30047] = ["T*KE*rho_dry*dr X1.E-5 kgK/s2", "", "", "", ""] -atm_stashvar[30055] = ["QQ*rho_dry*dr X1.E-5 kg/m2", "", "", "", ""] -atm_stashvar[30056] = ["Q*Z*rho_dry*dr X1.E-5 kg", "", "", "", ""] -atm_stashvar[30057] = ["Q*KE*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30066] = ["Z*Z*rho_dry*dr X1.E-5 kg", "", "", "", ""] -atm_stashvar[30067] = ["Z*KE*rho_dry*dr X1.E-5 kg/ms2", "", "", "", ""] -atm_stashvar[30077] = ["KE*KE*rho_dry*dr X1.E-5 kg/m4s4", "", "", "", ""] -atm_stashvar[30078] = ["ZOM RHO GRID X1.E-16", "", "", "", ""] -atm_stashvar[30101] = ["U MASS WEIGHTED RHO GRID kgm/s", "", "", "", ""] -atm_stashvar[30102] = ["V MASS WEIGHTED RHO GRID kg/ms", "", "", "", ""] -atm_stashvar[30103] = ["W MASS WEIGHTED RHO GRID kg/ms", "", "", "", ""] -atm_stashvar[30104] = ["T MASS WEIGHTED RHO GRID kgK/m2", "", "", "", ""] -atm_stashvar[30105] = ["Q MASS WEIGHTED RHO GRID kg/m2", "", "", "", ""] -atm_stashvar[30106] = ["height mass weighted kg/m", "", "", "", ""] -atm_stashvar[30107] = ["KE mass weighted RHO GRID kg/s2", "", "", "", ""] -atm_stashvar[30111] = ["T AT EOT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30112] = ["WBIG Set to 1 if w GT 1.0m/s", "", "", "", ""] -atm_stashvar[30113] = ["RH on model levels at end timestep", "", "", "", ""] -atm_stashvar[30114] = ["WBIG Set to 1 if w GT 0.1m/s", "", "", "", ""] -atm_stashvar[30115] = ["DRY MASS WEIGHTING MODEL LEV KG/M2", "", "", "", ""] -atm_stashvar[30171] = ["dT**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30172] = ["dQ**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30173] = ["dQcl**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30174] = ["dQcf**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30175] = ["dU**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30176] = ["dV**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30177] = ["dW**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30178] = ["dRHO**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30181] = ["T TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30182] = ["Q TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30183] = ["QCL TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30184] = ["QCF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30185] = ["U TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30186] = ["V TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30187] = ["W TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30188] = ["RHO TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30189] = ["RAIN TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30190] = ["GRAUPEL TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30191] = ["QCF2 TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30192] = ["CF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30193] = ["CFL TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30194] = ["CFF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30195] = ["M_V TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30196] = ["M_CL TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30197] = ["M_CF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30198] = ["M_RAIN TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30199] = ["M_GRAUP TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30200] = ["M_CF2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30201] = ["U COMPNT OF WIND ON P LEV/UV GRID", "ua", "m s-1", "eastward_wind", "ua_plev"] -atm_stashvar[30202] = ["V COMPNT OF WIND ON P LEV/UV GRID", "va", "m s-1", "northward_wind", "va_plev"] -atm_stashvar[30203] = ["W COMPNT OF WIND ON P LEV/UV GRID", "wa", "m s-1", "upward_air_velocity", "wa_plev"] -atm_stashvar[30204] = ["TEMPERATURE ON P LEV/UV GRID", "ta", "K", "air_temperature", "ta_plev"] -atm_stashvar[30205] = ["SPECIFIC HUMIDITY ON P LEV/UV GRID", "hus", "1", "specific_humidity", "hus_plev"] -atm_stashvar[30206] = ["RELATIVE HUMIDITY ON P LEV/UV GRID", "hur", "%", "relative_humidity", "hur_plev"] -atm_stashvar[30207] = ["GEOPOTENTIAL HEIGHT ON P LEV/UV GRID", "zg", "m", "geopotential_height", "zg_plev"] -atm_stashvar[30208] = ["OMEGA ON P LEV/UV GRID", "wap", "Pa s-1", "lagrangian_tendency_of_air_pressure", "wap_plev"] -atm_stashvar[30211] = ["UU ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30212] = ["UV ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30213] = ["UW ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30214] = ["UT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30215] = ["UQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30217] = ["UZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30218] = ["UOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30222] = ["VV ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30223] = ["VW ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30224] = ["VT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30225] = ["VQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30227] = ["VZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30228] = ["VOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30233] = ["WW ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30234] = ["WT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30235] = ["WQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30237] = ["WZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30238] = ["WOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30244] = ["TT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30245] = ["TQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30247] = ["TZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30248] = ["TOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30255] = ["QQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30257] = ["QZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30258] = ["QOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30277] = ["ZZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30278] = ["ZOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30288] = ["OMOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30293] = ["W COMPNT OF WIND ON P LEV/T GRID", "", "", "", ""] -atm_stashvar[30294] = ["TEMPERATURE ON P LEV/T GRID", "ta", "K", "air_temperature", "ta_plev"] -atm_stashvar[30295] = ["SPECIFIC HUMIDITY ON P LEV/T GRID", "hus", "1", "specific_humidity", "hus_plev"] -atm_stashvar[30296] = ["RELATIVE HUMIDITY ON P LEV/T GRID", "hur", "%", "relative_humidity", "hur_plev"] -atm_stashvar[30297] = ["GEOPOTENTIAL HEIGHT ON P LEV/T GRID", "zg", "m", "geopotential_height", "zg_plev"] -atm_stashvar[30298] = ["OMEGA ON P LEV/T GRID", "wa", "Pa s-1", "lagrangian_tendency_of_air_pressure", "wap_plev"] -atm_stashvar[30301] = ["HEAVYSIDE FN ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30302] = ["VIRTUAL TEMPERATURE ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30303] = ["VIRTUAL TEMP*OMEGA ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30304] = ["HEAVYSIDE FN ON P LEV/T GRID", "", "", "", ""] -atm_stashvar[30310] = ["RESIDUAL MN MERID. CIRC. VSTARBAR", "", "", "", ""] -atm_stashvar[30311] = ["RESIDUAL MN MERID. CIRC. WSTARBAR", "", "", "", ""] -atm_stashvar[30312] = ["ELIASSEN-PALM FLUX (MERID. COMPNT)", "", "", "", ""] -atm_stashvar[30313] = ["ELIASSEN-PALM FLUX (VERT. COMPNT)", "", "", "", ""] -atm_stashvar[30314] = ["DIVERGENCE OF ELIASSEN-PALM FLUX", "", "", "", ""] -atm_stashvar[30315] = ["MERIDIONAL HEAT FLUX", "", "", "", ""] -atm_stashvar[30316] = ["MERIDIONAL MOMENTUM FLUX", "", "", "", ""] -atm_stashvar[30401] = ["TOTAL KE PER UNIT AREA RHO GRID", "", "", "", ""] -atm_stashvar[30402] = ["TOTAL KE PER UA WITH W RHO GRID", "", "", "", ""] -atm_stashvar[30403] = ["TOTAL COLUMN DRY MASS RHO GRID", "", "", "", ""] -atm_stashvar[30404] = ["TOTAL COLUMN WET MASS RHO GRID", "", "", "", ""] -atm_stashvar[30405] = ["TOTAL COLUMN QCL RHO GRID", "lwp", "kg m-2", "atmosphere_cloud_liquid_water_content", ""] -atm_stashvar[30406] = ["TOTAL COLUMN QCF RHO GRID", "clivi", "kg m-2", "atmosphere_cloud_ice_content", ""] -atm_stashvar[30407] = ["TOTAL WATER VAPOUR FLUX U RHO GRID", "", "", "", ""] -atm_stashvar[30408] = ["TOTAL WATER VAPOUR FLUX V RHO GRID", "", "", "", ""] -atm_stashvar[30409] = ["TOTAL WATER VAPOUR FLUX W RHO GRID", "", "", "", ""] -atm_stashvar[30410] = ["MOUNTAIN TORQUE PER UNIT AREA N/M", "", "", "", ""] -atm_stashvar[30411] = ["ANGULAR MOMENTUM M1 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30412] = ["ANGULAR MOMENTUM M2 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30413] = ["ANGULAR MOMENTUM M3 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30414] = ["ANGULAR MOMENTUM W1 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30415] = ["ANGULAR MOMENTUM W2 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30416] = ["ANGULAR MOMENTUM W3 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30417] = ["PSTAR P GRID", "", "Pa", "surface_air_pressure", ""] -atm_stashvar[30418] = ["PSTAR UV GRID", "", "", "", ""] -atm_stashvar[30419] = ["ENERGY CORR P GRID IN COLUMN W/M2", "", "", "", ""] -atm_stashvar[30420] = ["column integral cvT per unit area", "", "", "", ""] -atm_stashvar[30421] = ["column integral gr per unit area", "", "", "", ""] -atm_stashvar[30422] = ["dry mass col int u*gz per unit area", "", "", "", ""] -atm_stashvar[30423] = ["dry mass col int v*gz per unit area", "", "", "", ""] -atm_stashvar[30424] = ["dry mass col int w*gz per unit area", "", "", "", ""] -atm_stashvar[30425] = ["dry mass col int u*T per unit area", "", "", "", ""] -atm_stashvar[30426] = ["dry mass col int v*T per unit area", "", "", "", ""] -atm_stashvar[30427] = ["dry mass col int w*T per unit area", "", "", "", ""] -atm_stashvar[30428] = ["dry mass col int u*q per unit area", "", "", "", ""] -atm_stashvar[30429] = ["dry mass col int v*q per unit area", "", "", "", ""] -atm_stashvar[30430] = ["dry mass col int w*q per unit area", "", "", "", ""] -atm_stashvar[30431] = ["dry mass col int u*v per unit area", "", "", "", ""] -atm_stashvar[30432] = ["dry mass col int u*w per unit area", "", "", "", ""] -atm_stashvar[30433] = ["dry mass col int v*w per unit area", "", "", "", ""] -atm_stashvar[30434] = ["dry mass col int u*KE per unit area", "", "", "", ""] -atm_stashvar[30435] = ["dry mass col int v*KE per unit area", "", "", "", ""] -atm_stashvar[30436] = ["dry mass col int w*KE per unit area", "", "", "", ""] -atm_stashvar[30437] = ["dry mass col int u per unit area", "", "", "", ""] -atm_stashvar[30438] = ["dry mass col int v per unit area", "", "", "", ""] -atm_stashvar[30439] = ["dry mass col int w per unit area", "", "", "", ""] -atm_stashvar[30440] = ["mountain x-surf. pressure drag N/m-2", "", "", "", ""] -atm_stashvar[30441] = ["mountain y-surf. pressure drag N/m-2", "", "", "", ""] -atm_stashvar[30442] = ["COLUMN SATURATION FRACTION", "", "", "", ""] -atm_stashvar[30451] = ["Pressure at Tropopause Level", "", "", "", ""] -atm_stashvar[30452] = ["Temperature at Tropopause Level", "", "", "", ""] -atm_stashvar[30453] = ["Height at Tropopause Level", "", "", "", ""] -atm_stashvar[30454] = ["ICAO HT OF TROP- NEED HT,TEMP,PRESS", "", "", "", ""] -atm_stashvar[30455] = ["VORTICITY 850", "", "", "", ""] -atm_stashvar[30456] = ["FILTERED VORTICITY 850", "", "", "", ""] -atm_stashvar[30457] = ["VORTICITY TC", "", "", "", ""] -atm_stashvar[30458] = ["FILTERED VORTICITY TC", "", "", "", ""] -atm_stashvar[30459] = ["MEAN VORTICITY of req. levels", "", "", "", ""] -atm_stashvar[30460] = ["FIL MEAN VORT of req. levels", "", "", "", ""] -atm_stashvar[30461] = ["TOTAL COLUMN Q (WATER VAPOUR PATH)", "", "", "", ""] -atm_stashvar[30462] = ["TOTAL MOISTURE FLUX U RHO GRID", "", "", "", ""] -atm_stashvar[30463] = ["TOTAL MOISTURE FLUX V RHO GRID", "", "", "", ""] -atm_stashvar[30464] = ["ATMOSPHERIC CO2 BURDEN IN GtC", "", "", "", ""] -atm_stashvar[30465] = ["ATMOSPHERIC CO2 BURDEN IN kg(CO2)", "", "", "", ""] -atm_stashvar[30466] = ["CO2 CONCENTRATION (ppmv)", "", "", "", ""] -atm_stashvar[30467] = ["CO2 MASS MIXING RATIO (kg/kg)", "", "", "", ""] -atm_stashvar[30901] = ["THETA TOTAL INCR ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30902] = ["THETAVD TOTAL INCR ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30903] = ["DRY RHO TOTAL INCR ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[31001] = ["OROGRAPHY HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31002] = ["U HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31003] = ["V HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31004] = ["W HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31005] = ["DENSITY HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31006] = ["POTENTIAL TEMP HORIZ BOUND VALUE", "", "", "", ""] -atm_stashvar[31007] = ["SPECIFIC HUMIDTY HORIZ BOUND VALUE", "", "", "", ""] -atm_stashvar[31008] = ["QCL HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31009] = ["QCF HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31010] = ["EXNER PRESSURE HORIZ BOUND VALUE", "", "", "", ""] -atm_stashvar[31011] = ["U_ADV HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31012] = ["V_ADV HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31013] = ["W_ADV HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31014] = ["CLD ICE (CRY) HORIZ. BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31015] = ["RAIN HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31016] = ["GRAUPEL HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31017] = ["TOTAL CLOUD FRACTION BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31018] = ["LIQUID CLOUD FRACTION BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31019] = ["FROZEN CLOUD FRACTION BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31020] = ["TOTAL AEROSOL (MURK) BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31023] = ["DUST DIV 1 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31024] = ["DUST DIV 2 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31025] = ["DUST DIV 3 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31026] = ["DUST DIV 4 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31027] = ["DUST DIV 5 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31028] = ["DUST DIV 6 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31029] = ["SO2 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31030] = ["DMS BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31031] = ["SO4_AITKEN BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31032] = ["SO4_ACCU BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31033] = ["SO4_DISS BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31035] = ["NH3 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31036] = ["SOOT_NEW BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31037] = ["SOOT_AGD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31038] = ["SOOT_CLD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31039] = ["BMASS_NEW BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31040] = ["BMASS_AGD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31041] = ["BMASS_CLD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31042] = ["OCFF_NEW BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31043] = ["OCFF_AGD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31044] = ["OCFF_CLD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31045] = ["NITR_ACC BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31046] = ["NITR_DISS BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31257] = ["U HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31258] = ["V HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31259] = ["W HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31260] = ["DENSITY HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31261] = ["POTENTIAL TEMP HORIZ BOUND TENDENCY", "", "", "", ""] -atm_stashvar[31262] = ["SPECIFIC HUMIDTY HORIZ BOUND TEND", "", "", "", ""] -atm_stashvar[31263] = ["QCL HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31264] = ["QCF HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31265] = ["EXNER PRESSURE HORIZ BOUND TENDENCY", "", "", "", ""] -atm_stashvar[31266] = ["U_ADV HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31267] = ["V_ADV HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31268] = ["W_ADV HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31269] = ["CLD ICE (CRY) HORIZ. BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31270] = ["RAIN HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31271] = ["GRAUPEL HORIZONTAL BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31272] = ["TOTAL CLOUD FRACTN BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31273] = ["LIQUID CLOUD FRACN BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31274] = ["FROZEN CLOUD FRACN BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31275] = ["TOTAL AEROSOL (MURK) BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31276] = ["DUST DIV 1 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31277] = ["DUST DIV 2 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31278] = ["DUST DIV 3 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31279] = ["DUST DIV 4 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31280] = ["DUST DIV 5 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31281] = ["DUST DIV 6 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31282] = ["SO2 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31283] = ["DMS BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31284] = ["SO4_AITKEN BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31285] = ["SO4_ACCU BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31286] = ["SO4_DISS BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31288] = ["NH3 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31289] = ["SOOT_NEW BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31290] = ["SOOT_AGD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31291] = ["SOOT_CLD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31292] = ["BMASS_NEW BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31293] = ["BMASS_AGD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31294] = ["BMASS_CLD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31295] = ["OCFF_NEW BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31296] = ["OCFF_AGD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31297] = ["OCFF_CLD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31298] = ["NITR_ACC BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31299] = ["NITR_DISS BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[32001] = ["OROGRAPHY HORIZONTAL BV OUT retired", "", "", "", ""] -atm_stashvar[32002] = ["U HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32003] = ["V HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32004] = ["W HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32005] = ["DENSITY HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32006] = ["POTENTIAL TEMP HORIZ BV OUT(retired)", "", "", "", ""] -atm_stashvar[32007] = ["SPECIFIC HUMIDTY HORIZ BV OUT (retd)", "", "", "", ""] -atm_stashvar[32008] = ["QCL HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32009] = ["QCF HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32010] = ["EXNER PRESSURE HORIZ BV OUT(retired)", "", "", "", ""] -atm_stashvar[32011] = ["U_ADV HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32012] = ["V_ADV HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32013] = ["W_ADV HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32014] = ["CLOUD ICE HORIZONTAL BV OUT retired", "", "", "", ""] -atm_stashvar[32015] = ["RAIN HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32016] = ["GRAUPEL HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32017] = ["TOTAL CLOUD FRACTION BV OUT(retired)", "", "", "", ""] -atm_stashvar[32018] = ["LIQUID CLOUD FRACTION BV OUT", "", "", "", ""] -atm_stashvar[32019] = ["FROZEN CLOUD FRACTION BV OUT (retd)", "", "", "", ""] -atm_stashvar[32020] = ["TOTAL AEROSOL (MURK) BV OUT (retd)", "", "", "", ""] -atm_stashvar[32021] = ["ATM FREE TRACER BOUND VAL. OUT retd", "", "", "", ""] -atm_stashvar[32022] = ["UKCA TRACER BOUND VAL. OUT (retired)", "", "", "", ""] -atm_stashvar[32023] = ["DUST DIV 1 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32024] = ["DUST DIV 2 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32025] = ["DUST DIV 3 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32026] = ["DUST DIV 4 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32027] = ["DUST DIV 5 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32028] = ["DUST DIV 6 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32029] = ["SO2 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32030] = ["DMS BV OUT (retired)", "", "", "", ""] -atm_stashvar[32031] = ["SO4_AITKEN BV OUT (retired)", "", "", "", ""] -atm_stashvar[32032] = ["SO4_ACCU BV OUT (retired)", "", "", "", ""] -atm_stashvar[32033] = ["SO4_DISS BV OUT (retired)", "", "", "", ""] -atm_stashvar[32035] = ["NH3 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32036] = ["SOOT_NEW BV OUT (retired)", "", "", "", ""] -atm_stashvar[32037] = ["SOOT_AGD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32038] = ["SOOT_CLD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32039] = ["BMASS_NEW BV OUT (retired)", "", "", "", ""] -atm_stashvar[32040] = ["BMASS_AGD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32041] = ["BMASS_CLD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32042] = ["OCFF_NEW BV OUT (retired)", "", "", "", ""] -atm_stashvar[32043] = ["OCFF_AGD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32044] = ["OCFF_CLD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32045] = ["NITR_ACC BV OUT (retired)", "", "", "", ""] -atm_stashvar[32046] = ["NITR_DISS BV OUT (retired)", "", "", "", ""] -atm_stashvar[33001] = ["ATM TRACER 1 AFTER TS", "", "", "", ""] -atm_stashvar[33002] = ["ATM TRACER 2 AFTER TS", "", "", "", ""] -atm_stashvar[33003] = ["ATM TRACER 3 AFTER TS", "", "", "", ""] -atm_stashvar[33004] = ["ATM TRACER 4 AFTER TS", "", "", "", ""] -atm_stashvar[33005] = ["ATM TRACER 5 AFTER TS", "", "", "", ""] -atm_stashvar[33006] = ["ATM TRACER 6 AFTER TS", "", "", "", ""] -atm_stashvar[33007] = ["ATM TRACER 7 AFTER TS", "", "", "", ""] -atm_stashvar[33008] = ["ATM TRACER 8 AFTER TS", "", "", "", ""] -atm_stashvar[33009] = ["ATM TRACER 9 AFTER TS", "", "", "", ""] -atm_stashvar[33010] = ["ATM TRACER 10 AFTER TS", "", "", "", ""] -atm_stashvar[33011] = ["ATM TRACER 11 AFTER TS", "", "", "", ""] -atm_stashvar[33012] = ["ATM TRACER 12 AFTER TS", "", "", "", ""] -atm_stashvar[33013] = ["ATM TRACER 13 AFTER TS", "", "", "", ""] -atm_stashvar[33014] = ["ATM TRACER 14 AFTER TS", "", "", "", ""] -atm_stashvar[33015] = ["ATM TRACER 15 AFTER TS", "", "", "", ""] -atm_stashvar[33016] = ["ATM TRACER 16 AFTER TS", "", "", "", ""] -atm_stashvar[33017] = ["ATM TRACER 17 AFTER TS", "", "", "", ""] -atm_stashvar[33018] = ["ATM TRACER 18 AFTER TS", "", "", "", ""] -atm_stashvar[33019] = ["ATM TRACER 19 AFTER TS", "", "", "", ""] -atm_stashvar[33020] = ["ATM TRACER 20 AFTER TS", "", "", "", ""] -atm_stashvar[33021] = ["ATM TRACER 21 AFTER TS", "", "", "", ""] -atm_stashvar[33022] = ["ATM TRACER 22 AFTER TS", "", "", "", ""] -atm_stashvar[33023] = ["ATM TRACER 23 AFTER TS", "", "", "", ""] -atm_stashvar[33024] = ["ATM TRACER 24 AFTER TS", "", "", "", ""] -atm_stashvar[33025] = ["ATM TRACER 25 AFTER TS", "", "", "", ""] -atm_stashvar[33026] = ["ATM TRACER 26 AFTER TS", "", "", "", ""] -atm_stashvar[33027] = ["ATM TRACER 27 AFTER TS", "", "", "", ""] -atm_stashvar[33028] = ["ATM TRACER 28 AFTER TS", "", "", "", ""] -atm_stashvar[33029] = ["ATM TRACER 29 AFTER TS", "", "", "", ""] -atm_stashvar[33030] = ["ATM TRACER 30 AFTER TS", "", "", "", ""] -atm_stashvar[33031] = ["ATM TRACER 31 AFTER TS", "", "", "", ""] -atm_stashvar[33032] = ["ATM TRACER 32 AFTER TS", "", "", "", ""] -atm_stashvar[33033] = ["ATM TRACER 33 AFTER TS", "", "", "", ""] -atm_stashvar[33034] = ["ATM TRACER 34 AFTER TS", "", "", "", ""] -atm_stashvar[33035] = ["ATM TRACER 35 AFTER TS", "", "", "", ""] -atm_stashvar[33036] = ["ATM TRACER 36 AFTER TS", "", "", "", ""] -atm_stashvar[33037] = ["ATM TRACER 37 AFTER TS", "", "", "", ""] -atm_stashvar[33038] = ["ATM TRACER 38 AFTER TS", "", "", "", ""] -atm_stashvar[33039] = ["ATM TRACER 39 AFTER TS", "", "", "", ""] -atm_stashvar[33040] = ["ATM TRACER 40 AFTER TS", "", "", "", ""] -atm_stashvar[33041] = ["ATM TRACER 41 AFTER TS", "", "", "", ""] -atm_stashvar[33042] = ["ATM TRACER 42 AFTER TS", "", "", "", ""] -atm_stashvar[33043] = ["ATM TRACER 43 AFTER TS", "", "", "", ""] -atm_stashvar[33044] = ["ATM TRACER 44 AFTER TS", "", "", "", ""] -atm_stashvar[33045] = ["ATM TRACER 45 AFTER TS", "", "", "", ""] -atm_stashvar[33046] = ["ATM TRACER 46 AFTER TS", "", "", "", ""] -atm_stashvar[33047] = ["ATM TRACER 47 AFTER TS", "", "", "", ""] -atm_stashvar[33048] = ["ATM TRACER 48 AFTER TS", "", "", "", ""] -atm_stashvar[33049] = ["ATM TRACER 49 AFTER TS", "", "", "", ""] -atm_stashvar[33050] = ["ATM TRACER 50 AFTER TS", "", "", "", ""] -atm_stashvar[33051] = ["ATM TRACER 51 AFTER TS", "", "", "", ""] -atm_stashvar[33052] = ["ATM TRACER 52 AFTER TS", "", "", "", ""] -atm_stashvar[33053] = ["ATM TRACER 53 AFTER TS", "", "", "", ""] -atm_stashvar[33054] = ["ATM TRACER 54 AFTER TS", "", "", "", ""] -atm_stashvar[33055] = ["ATM TRACER 55 AFTER TS", "", "", "", ""] -atm_stashvar[33056] = ["ATM TRACER 56 AFTER TS", "", "", "", ""] -atm_stashvar[33057] = ["ATM TRACER 57 AFTER TS", "", "", "", ""] -atm_stashvar[33058] = ["ATM TRACER 58 AFTER TS", "", "", "", ""] -atm_stashvar[33059] = ["ATM TRACER 59 AFTER TS", "", "", "", ""] -atm_stashvar[33060] = ["ATM TRACER 60 AFTER TS", "", "", "", ""] -atm_stashvar[33061] = ["ATM TRACER 61 AFTER TS", "", "", "", ""] -atm_stashvar[33062] = ["ATM TRACER 62 AFTER TS", "", "", "", ""] -atm_stashvar[33063] = ["ATM TRACER 63 AFTER TS", "", "", "", ""] -atm_stashvar[33064] = ["ATM TRACER 64 AFTER TS", "", "", "", ""] -atm_stashvar[33065] = ["ATM TRACER 65 AFTER TS", "", "", "", ""] -atm_stashvar[33066] = ["ATM TRACER 66 AFTER TS", "", "", "", ""] -atm_stashvar[33067] = ["ATM TRACER 67 AFTER TS", "", "", "", ""] -atm_stashvar[33068] = ["ATM TRACER 68 AFTER TS", "", "", "", ""] -atm_stashvar[33069] = ["ATM TRACER 69 AFTER TS", "", "", "", ""] -atm_stashvar[33070] = ["ATM TRACER 70 AFTER TS", "", "", "", ""] -atm_stashvar[33071] = ["ATM TRACER 71 AFTER TS", "", "", "", ""] -atm_stashvar[33072] = ["ATM TRACER 72 AFTER TS", "", "", "", ""] -atm_stashvar[33073] = ["ATM TRACER 73 AFTER TS", "", "", "", ""] -atm_stashvar[33074] = ["ATM TRACER 74 AFTER TS", "", "", "", ""] -atm_stashvar[33075] = ["ATM TRACER 75 AFTER TS", "", "", "", ""] -atm_stashvar[33076] = ["ATM TRACER 76 AFTER TS", "", "", "", ""] -atm_stashvar[33077] = ["ATM TRACER 77 AFTER TS", "", "", "", ""] -atm_stashvar[33078] = ["ATM TRACER 78 AFTER TS", "", "", "", ""] -atm_stashvar[33079] = ["ATM TRACER 79 AFTER TS", "", "", "", ""] -atm_stashvar[33080] = ["ATM TRACER 80 AFTER TS", "", "", "", ""] -atm_stashvar[33081] = ["ATM TRACER 81 AFTER TS", "", "", "", ""] -atm_stashvar[33082] = ["ATM TRACER 82 AFTER TS", "", "", "", ""] -atm_stashvar[33083] = ["ATM TRACER 83 AFTER TS", "", "", "", ""] -atm_stashvar[33084] = ["ATM TRACER 84 AFTER TS", "", "", "", ""] -atm_stashvar[33085] = ["ATM TRACER 85 AFTER TS", "", "", "", ""] -atm_stashvar[33086] = ["ATM TRACER 86 AFTER TS", "", "", "", ""] -atm_stashvar[33087] = ["ATM TRACER 87 AFTER TS", "", "", "", ""] -atm_stashvar[33088] = ["ATM TRACER 88 AFTER TS", "", "", "", ""] -atm_stashvar[33089] = ["ATM TRACER 89 AFTER TS", "", "", "", ""] -atm_stashvar[33090] = ["ATM TRACER 90 AFTER TS", "", "", "", ""] -atm_stashvar[33091] = ["ATM TRACER 91 AFTER TS", "", "", "", ""] -atm_stashvar[33092] = ["ATM TRACER 92 AFTER TS", "", "", "", ""] -atm_stashvar[33093] = ["ATM TRACER 93 AFTER TS", "", "", "", ""] -atm_stashvar[33094] = ["ATM TRACER 94 AFTER TS", "", "", "", ""] -atm_stashvar[33095] = ["ATM TRACER 95 AFTER TS", "", "", "", ""] -atm_stashvar[33096] = ["ATM TRACER 96 AFTER TS", "", "", "", ""] -atm_stashvar[33097] = ["ATM TRACER 97 AFTER TS", "", "", "", ""] -atm_stashvar[33098] = ["ATM TRACER 98 AFTER TS", "", "", "", ""] -atm_stashvar[33099] = ["ATM TRACER 99 AFTER TS", "", "", "", ""] -atm_stashvar[33100] = ["ATM TRACER100 AFTER TS", "", "", "", ""] -atm_stashvar[33101] = ["ATM TRACER101 AFTER TS", "", "", "", ""] -atm_stashvar[33102] = ["ATM TRACER102 AFTER TS", "", "", "", ""] -atm_stashvar[33103] = ["ATM TRACER103 AFTER TS", "", "", "", ""] -atm_stashvar[33104] = ["ATM TRACER104 AFTER TS", "", "", "", ""] -atm_stashvar[33105] = ["ATM TRACER105 AFTER TS", "", "", "", ""] -atm_stashvar[33106] = ["ATM TRACER106 AFTER TS", "", "", "", ""] -atm_stashvar[33107] = ["ATM TRACER107 AFTER TS", "", "", "", ""] -atm_stashvar[33108] = ["ATM TRACER108 AFTER TS", "", "", "", ""] -atm_stashvar[33109] = ["ATM TRACER109 AFTER TS", "", "", "", ""] -atm_stashvar[33110] = ["ATM TRACER110 AFTER TS", "", "", "", ""] -atm_stashvar[33111] = ["ATM TRACER111 AFTER TS", "", "", "", ""] -atm_stashvar[33112] = ["ATM TRACER112 AFTER TS", "", "", "", ""] -atm_stashvar[33113] = ["ATM TRACER113 AFTER TS", "", "", "", ""] -atm_stashvar[33114] = ["ATM TRACER114 AFTER TS", "", "", "", ""] -atm_stashvar[33115] = ["ATM TRACER115 AFTER TS", "", "", "", ""] -atm_stashvar[33116] = ["ATM TRACER116 AFTER TS", "", "", "", ""] -atm_stashvar[33117] = ["ATM TRACER117 AFTER TS", "", "", "", ""] -atm_stashvar[33118] = ["ATM TRACER118 AFTER TS", "", "", "", ""] -atm_stashvar[33119] = ["ATM TRACER119 AFTER TS", "", "", "", ""] -atm_stashvar[33120] = ["ATM TRACER120 AFTER TS", "", "", "", ""] -atm_stashvar[33121] = ["ATM TRACER121 AFTER TS", "", "", "", ""] -atm_stashvar[33122] = ["ATM TRACER122 AFTER TS", "", "", "", ""] -atm_stashvar[33123] = ["ATM TRACER123 AFTER TS", "", "", "", ""] -atm_stashvar[33124] = ["ATM TRACER124 AFTER TS", "", "", "", ""] -atm_stashvar[33125] = ["ATM TRACER125 AFTER TS", "", "", "", ""] -atm_stashvar[33126] = ["ATM TRACER126 AFTER TS", "", "", "", ""] -atm_stashvar[33127] = ["ATM TRACER127 AFTER TS", "", "", "", ""] -atm_stashvar[33128] = ["ATM TRACER128 AFTER TS", "", "", "", ""] -atm_stashvar[33129] = ["ATM TRACER129 AFTER TS", "", "", "", ""] -atm_stashvar[33130] = ["ATM TRACER130 AFTER TS", "", "", "", ""] -atm_stashvar[33131] = ["ATM TRACER131 AFTER TS", "", "", "", ""] -atm_stashvar[33132] = ["ATM TRACER132 AFTER TS", "", "", "", ""] -atm_stashvar[33133] = ["ATM TRACER133 AFTER TS", "", "", "", ""] -atm_stashvar[33134] = ["ATM TRACER134 AFTER TS", "", "", "", ""] -atm_stashvar[33135] = ["ATM TRACER135 AFTER TS", "", "", "", ""] -atm_stashvar[33136] = ["ATM TRACER136 AFTER TS", "", "", "", ""] -atm_stashvar[33137] = ["ATM TRACER137 AFTER TS", "", "", "", ""] -atm_stashvar[33138] = ["ATM TRACER138 AFTER TS", "", "", "", ""] -atm_stashvar[33139] = ["ATM TRACER139 AFTER TS", "", "", "", ""] -atm_stashvar[33140] = ["ATM TRACER140 AFTER TS", "", "", "", ""] -atm_stashvar[33141] = ["ATM TRACER141 AFTER TS", "", "", "", ""] -atm_stashvar[33142] = ["ATM TRACER142 AFTER TS", "", "", "", ""] -atm_stashvar[33143] = ["ATM TRACER143 AFTER TS", "", "", "", ""] -atm_stashvar[33144] = ["ATM TRACER144 AFTER TS", "", "", "", ""] -atm_stashvar[33145] = ["ATM TRACER145 AFTER TS", "", "", "", ""] -atm_stashvar[33146] = ["ATM TRACER146 AFTER TS", "", "", "", ""] -atm_stashvar[33147] = ["ATM TRACER147 AFTER TS", "", "", "", ""] -atm_stashvar[33148] = ["ATM TRACER148 AFTER TS", "", "", "", ""] -atm_stashvar[33149] = ["ATM TRACER149 AFTER TS", "", "", "", ""] -atm_stashvar[33150] = ["ATM TRACER150 AFTER TS", "", "", "", ""] -atm_stashvar[34001] = ["O3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34002] = ["NO MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34003] = ["NO3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34004] = ["NO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34005] = ["N2O5 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34006] = ["HO2NO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34007] = ["HONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34008] = ["H2O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34009] = ["CH4 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34010] = ["CO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34011] = ["HCHO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34012] = ["MeOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34013] = ["HONO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34014] = ["C2H6 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34015] = ["EtOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34016] = ["MeCHO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34017] = ["PAN MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34018] = ["C3H8 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34019] = ["n-PrOOH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34020] = ["i-PrOOH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34021] = ["EtCHO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34022] = ["Me2CO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34023] = ["MeCOCH2OOH MASS MIXING RATIO AFT TS", "", "", "", ""] -atm_stashvar[34024] = ["PPAN MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34025] = ["MeONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34026] = ["O3S MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34027] = ["C5H8 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34028] = ["ISOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34029] = ["ISON MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34030] = ["MACR MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34031] = ["MACROOH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34032] = ["MPAN MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34033] = ["HACET MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34034] = ["MGLY MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34035] = ["NALD MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34036] = ["HCOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34037] = ["MeCO3H MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34038] = ["MeCO2H MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34039] = ["MVK MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34040] = ["MVKOOH MASS MIXING RATIO AFTER T", "", "", "", ""] -atm_stashvar[34041] = ["Cl MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34042] = ["ClO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34043] = ["Cl2O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34044] = ["OClO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34045] = ["Br MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34047] = ["BrCl MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34048] = ["BrONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34049] = ["N2O MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34051] = ["HOCl MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34052] = ["HBr MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34053] = ["HOBr MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34054] = ["ClONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34055] = ["CFCl3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34056] = ["CF2Cl2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34057] = ["MeBr MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34058] = ["N MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34059] = ["O3P MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34060] = ["ORGNIT MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34069] = ["CH3OH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34070] = ["H2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34071] = ["DMS MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34072] = ["SO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34073] = ["H2SO4 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34074] = ["MSA MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34075] = ["DMSO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34076] = ["NH3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34077] = ["CS2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34078] = ["COS MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34079] = ["H2S MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34080] = ["H MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34081] = ["OH MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34082] = ["HO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34083] = ["MeOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34084] = ["EtOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34085] = ["MeCO3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34086] = ["n-PrOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34087] = ["i-PrOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34088] = ["EtCO3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34089] = ["MeCOCH2OO MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34090] = ["MeOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34091] = ["MONOTERPENE MASS MIXING RATIO AFT TS", "", "", "", ""] -atm_stashvar[34092] = ["SEC_ORG MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34093] = ["C3H6 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34094] = ["SO3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34095] = ["C4H9OOH MASS MIXING RATIO AFT TSTEP", "", "", "", ""] -atm_stashvar[34096] = ["MEK MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34097] = ["TOLUENE MASS MIXING RATIO AFT TSTEP", "", "", "", ""] -atm_stashvar[34098] = ["LUMPED N (as NO2) MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34099] = ["LUMPED Br (as BrO) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34100] = ["LUMPED Cl (as HCl) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34101] = ["NUCLEATION MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34102] = ["NUCLEATION MODE (SOLUBLE) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34103] = ["AITKEN MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34104] = ["AITKEN MODE (SOLUBLE) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34105] = ["AITKEN MODE (SOLUBLE) BC MMR", "", "", "", ""] -atm_stashvar[34106] = ["AITKEN MODE (SOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34107] = ["ACCUMULATION MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34108] = ["ACCUMULATION MODE (SOL) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34109] = ["ACCUMULATION MODE (SOL) BC MMR", "", "", "", ""] -atm_stashvar[34110] = ["ACCUMULATION MODE (SOL) OM MMR", "", "", "", ""] -atm_stashvar[34111] = ["ACCUMULATION MODE (SOL) SEA SALT MMR", "", "", "", ""] -atm_stashvar[34112] = ["ACCUMULATION MODE (SOL) DUST MMR", "", "", "", ""] -atm_stashvar[34113] = ["COARSE MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34114] = ["COARSE MODE (SOLUBLE) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34115] = ["COARSE MODE (SOLUBLE) BC MMR", "", "", "", ""] -atm_stashvar[34116] = ["COARSE MODE (SOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34117] = ["COARSE MODE (SOLUBLE) SEA SALT MMR", "", "", "", ""] -atm_stashvar[34118] = ["COARSE MODE (SOLUBLE) DUST MMR", "", "", "", ""] -atm_stashvar[34119] = ["AITKEN MODE (INSOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34120] = ["AITKEN MODE (INSOLUBLE) BC MMR", "", "", "", ""] -atm_stashvar[34121] = ["AITKEN MODE (INSOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34122] = ["ACCUMULATION MODE (INSOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34123] = ["ACCUMULATION MODE (INSOLUBLE) DUST", "", "", "", ""] -atm_stashvar[34124] = ["COARSE MODE (INSOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34125] = ["COARSE MODE (INSOLUBLE) DUST MMR", "", "", "", ""] -atm_stashvar[34126] = ["NUCLEATION MODE (SOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34127] = ["AITKEN MODE (SOLUBLE) SEA SALT MMR", "", "", "", ""] -atm_stashvar[34128] = ["NUCLEATION MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34129] = ["AITKEN MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34130] = ["ACCUMULATION MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34131] = ["COARSE MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34132] = ["NUCLEATION MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34133] = ["AITKEN MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34134] = ["ACCUMULATION MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34135] = ["COARSE MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34136] = ["NUCLEATION MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34137] = ["AITKEN MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34138] = ["ACCUMULATION MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34139] = ["COARSE MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34149] = ["PASSIVE O3 MASS MIXING RATIO", "", "", "", ""] -atm_stashvar[34150] = ["AGE OF AIR IN SECONDS", "", "", "", ""] -atm_stashvar[34151] = ["UKCA NON-TRANSP SPECIES 151 RETIRED", "", "", "", ""] -atm_stashvar[34152] = ["UKCA NON-TRANSP SPECIES 152 RETIRED", "", "", "", ""] -atm_stashvar[34153] = ["UKCA NON-TRANSP SPECIES 153 RETIRED", "", "", "", ""] -atm_stashvar[34154] = ["UKCA NON-TRANSP SPECIES 154 RETIRED", "", "", "", ""] -atm_stashvar[34155] = ["UKCA NON-TRANSP SPECIES 155 RETIRED", "", "", "", ""] -atm_stashvar[34156] = ["UKCA NON-TRANSP SPECIES 156 RETIRED", "", "", "", ""] -atm_stashvar[34157] = ["UKCA NON-TRANSP SPECIES 157 RETIRED", "", "", "", ""] -atm_stashvar[34158] = ["UKCA NON-TRANSP SPECIES 158 RETIRED", "", "", "", ""] -atm_stashvar[34159] = ["UKCA NON-TRANSP SPECIES 159 RETIRED", "", "", "", ""] -atm_stashvar[34160] = ["UKCA NON-TRANSP SPECIES 160 RETIRED", "", "", "", ""] -atm_stashvar[34161] = ["UKCA NON-TRANSP SPECIES 161 RETIRED", "", "", "", ""] -atm_stashvar[34162] = ["UKCA NON-TRANSP SPECIES 162 RETIRED", "", "", "", ""] -atm_stashvar[34163] = ["UKCA NON-TRANSP SPECIES 163 RETIRED", "", "", "", ""] -atm_stashvar[34164] = ["UKCA NON-TRANSP SPECIES 164 RETIRED", "", "", "", ""] -atm_stashvar[34165] = ["UKCA NON-TRANSP SPECIES 165 RETIRED", "", "", "", ""] -atm_stashvar[34166] = ["UKCA NON-TRANSP SPECIES 166 RETIRED", "", "", "", ""] -atm_stashvar[34167] = ["UKCA NON-TRANSP SPECIES 167 RETIRED", "", "", "", ""] -atm_stashvar[34168] = ["UKCA NON-TRANSP SPECIES 168 RETIRED", "", "", "", ""] -atm_stashvar[34169] = ["UKCA NON-TRANSP SPECIES 169 RETIRED", "", "", "", ""] -atm_stashvar[34170] = ["UKCA NON-TRANSP SPECIES 170 RETIRED", "", "", "", ""] -atm_stashvar[34171] = ["UKCA NON-TRANSP SPECIES 171 RETIRED", "", "", "", ""] -atm_stashvar[34172] = ["UKCA NON-TRANSP SPECIES 172 RETIRED", "", "", "", ""] -atm_stashvar[34921] = ["DRY PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[34922] = ["DRY PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[34923] = ["DRY PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[34924] = ["DRY PARTICLE DIAMETER AITKEN-INS", "", "", "", ""] -atm_stashvar[34925] = ["DRY PARTICLE DIAMETER ACCUMULATN-INS", "", "", "", ""] -atm_stashvar[34926] = ["DRY PARTICLE DIAMETER COARSE-INSOL", "", "", "", ""] -atm_stashvar[34927] = ["WET PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[34928] = ["WET PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[34929] = ["WET PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[34930] = ["PTCL MASS DENSITY AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[34931] = ["PTCL MASS DENSITY ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[34932] = ["PTCL MASS DENSITY COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[34933] = ["PTCL MASS DENSITY AITKEN-INS", "", "", "", ""] -atm_stashvar[34934] = ["PTCL MASS DENSITY ACCUM.-INS", "", "", "", ""] -atm_stashvar[34935] = ["PTCL MASS DENSITY COARSE-INS", "", "", "", ""] -atm_stashvar[34936] = ["H2SO4 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34937] = ["BC PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34938] = ["OM1 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34939] = ["NO3 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34940] = ["OM2 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34941] = ["H2O PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34942] = ["H2SO4 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34943] = ["BC PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34944] = ["OM1 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34945] = ["SS PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34946] = ["NO3 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34947] = ["DU PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34948] = ["OM2 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34949] = ["CL PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34950] = ["NA PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34951] = ["H2O PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34952] = ["H2SO4 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34953] = ["BC PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34954] = ["OM1 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34955] = ["SSALT PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34956] = ["NO3 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34957] = ["DU PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34958] = ["OM2 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34959] = ["CL PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34960] = ["NA PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34961] = ["H2O PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34962] = ["BC PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[34963] = ["OM1 PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[34964] = ["DU PARTIAL VOLUME CONC (ACC-INS)", "", "", "", ""] -atm_stashvar[34965] = ["DU PARTIAL VOLUME CONC (COR-INS)", "", "", "", ""] -atm_stashvar[34966] = ["Aerosol surface area dens (cm2/cm3)", "", "", "", ""] -atm_stashvar[34967] = ["Cloud Droplet No. Conc. ^-1/3 (m-1)", "", "", "", ""] -atm_stashvar[34968] = ["Cloud Droplet No. Conc. (m-3)", "", "", "", ""] -atm_stashvar[34969] = ["Stratospheric HO2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34970] = ["Stratospheric OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34971] = ["Stratospheric O(1D) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34972] = ["Stratospheric O(3P) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34973] = ["Self reaction of HO2 on aerosol (s-1)", "", "", "", ""] -atm_stashvar[34974] = ["Loss rate of N2O5 on aerosol (s-1)", "", "", "", ""] -atm_stashvar[34975] = ["HOC6H5CH3O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34976] = ["HOC5H8O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34977] = ["CH3COCH(O2)CH2OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34978] = ["CHOCH(OH)CO2CH3CHO MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34979] = ["C6H5CH2O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34980] = ["CH3CHO2CH2OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34981] = ["CH2O2CH2OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34982] = ["CH3COCH(O2)CH3 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34983] = ["CH3COCH2O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34984] = ["CH3COC2O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34985] = ["C2H5COO2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34986] = ["i-C2H7O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34987] = ["s-C4H9O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34988] = ["n-C2H7O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34989] = ["CH3COO2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34990] = ["C2H5O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34991] = ["CH3O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34992] = ["HCl MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34993] = ["HO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34994] = ["BrO MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34995] = ["OH MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34996] = ["NO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34997] = ["O(1D) MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34998] = ["O(3P) MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[35001] = ["U COMPNT OF WIND AFTER SKEB2", "", "", "", ""] -atm_stashvar[35002] = ["V COMPNT OF WIND AFTER SKEB2", "", "", "", ""] -atm_stashvar[35003] = ["U COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35004] = ["V COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35005] = ["ROT U COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35006] = ["ROT V COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35007] = ["DIV U COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35008] = ["DIV V COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35009] = ["SKEB2 DISSIPATION FROM SMAG", "", "", "", ""] -atm_stashvar[35010] = ["SKEB2 DISSIPATION FROM CONVECTION", "", "", "", ""] -atm_stashvar[35011] = ["SKEB2 DISS FROM SKEB1-TYPE PATTERN", "", "", "", ""] -atm_stashvar[35012] = ["SKEB2 SMOOTHED MODULATING FIELD", "", "", "", ""] -atm_stashvar[35013] = ["SKEB2 STREAMFUNCTION FORC FIELD", "", "", "", ""] -atm_stashvar[35014] = ["SKEB2 INITIAL RANDOM PATTERN", "", "", "", ""] -atm_stashvar[35015] = ["MASS VERT INT OF STRM FORC FIELD", "", "", "", ""] -atm_stashvar[35016] = ["VERT INTEG NUMERICAL DISSP (W/M^2)", "", "", "", ""] -atm_stashvar[35017] = ["VERT INTEG CONVECTVE DISSP (W/M^2)", "", "", "", ""] -atm_stashvar[35018] = ["VERT INTEG SKEB1-TYPE DISS (W/M^2)", "", "", "", ""] -atm_stashvar[35019] = ["MASS VERT INT OF MODULATED STRMFUNC", "", "", "", ""] -atm_stashvar[35020] = ["V INT KE WIND INCR PRE SKEB2 (J/M^2)", "", "", "", ""] -atm_stashvar[35021] = ["V INT KE WIND INCR SKEB2 (J/M^2)", "", "", "", ""] -atm_stashvar[35022] = ["V INT KE WIND INCR POST SKEB2(J/M^2)", "", "", "", ""] -atm_stashvar[35023] = ["SPT FORCING PATTERN", "", "", "", ""] -atm_stashvar[35024] = ["THETA TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35025] = ["Q TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35026] = ["U TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35027] = ["V TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35028] = ["CFL criteria breached", "", "", "", ""] -atm_stashvar[35029] = ["T TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[36001] = ["ATM TRACER 1 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36002] = ["ATM TRACER 2 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36003] = ["ATM TRACER 3 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36004] = ["ATM TRACER 4 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36005] = ["ATM TRACER 5 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36006] = ["ATM TRACER 6 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36007] = ["ATM TRACER 7 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36008] = ["ATM TRACER 8 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36009] = ["ATM TRACER 9 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36010] = ["ATM TRACER 10 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36011] = ["ATM TRACER 11 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36012] = ["ATM TRACER 12 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36013] = ["ATM TRACER 13 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36014] = ["ATM TRACER 14 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36015] = ["ATM TRACER 15 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36016] = ["ATM TRACER 16 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36017] = ["ATM TRACER 17 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36018] = ["ATM TRACER 18 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36019] = ["ATM TRACER 19 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36020] = ["ATM TRACER 20 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36021] = ["ATM TRACER 21 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36022] = ["ATM TRACER 22 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36023] = ["ATM TRACER 23 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36024] = ["ATM TRACER 24 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36025] = ["ATM TRACER 25 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36026] = ["ATM TRACER 26 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36027] = ["ATM TRACER 27 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36028] = ["ATM TRACER 28 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36029] = ["ATM TRACER 29 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36030] = ["ATM TRACER 30 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36031] = ["ATM TRACER 31 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36032] = ["ATM TRACER 32 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36033] = ["ATM TRACER 33 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36034] = ["ATM TRACER 34 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36035] = ["ATM TRACER 35 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36036] = ["ATM TRACER 36 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36037] = ["ATM TRACER 37 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36038] = ["ATM TRACER 38 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36039] = ["ATM TRACER 39 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36040] = ["ATM TRACER 40 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36041] = ["ATM TRACER 41 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36042] = ["ATM TRACER 42 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36043] = ["ATM TRACER 43 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36044] = ["ATM TRACER 44 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36045] = ["ATM TRACER 45 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36046] = ["ATM TRACER 46 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36047] = ["ATM TRACER 47 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36048] = ["ATM TRACER 48 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36049] = ["ATM TRACER 49 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36050] = ["ATM TRACER 50 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36051] = ["ATM TRACER 51 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36052] = ["ATM TRACER 52 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36053] = ["ATM TRACER 53 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36054] = ["ATM TRACER 54 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36055] = ["ATM TRACER 55 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36056] = ["ATM TRACER 56 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36057] = ["ATM TRACER 57 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36058] = ["ATM TRACER 58 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36059] = ["ATM TRACER 59 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36060] = ["ATM TRACER 60 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36061] = ["ATM TRACER 61 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36062] = ["ATM TRACER 62 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36063] = ["ATM TRACER 63 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36064] = ["ATM TRACER 64 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36065] = ["ATM TRACER 65 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36066] = ["ATM TRACER 66 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36067] = ["ATM TRACER 67 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36068] = ["ATM TRACER 68 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36069] = ["ATM TRACER 69 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36070] = ["ATM TRACER 70 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36071] = ["ATM TRACER 71 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36072] = ["ATM TRACER 72 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36073] = ["ATM TRACER 73 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36074] = ["ATM TRACER 74 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36075] = ["ATM TRACER 75 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36076] = ["ATM TRACER 76 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36077] = ["ATM TRACER 77 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36078] = ["ATM TRACER 78 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36079] = ["ATM TRACER 79 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36080] = ["ATM TRACER 80 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36081] = ["ATM TRACER 81 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36082] = ["ATM TRACER 82 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36083] = ["ATM TRACER 83 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36084] = ["ATM TRACER 84 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36085] = ["ATM TRACER 85 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36086] = ["ATM TRACER 86 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36087] = ["ATM TRACER 87 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36088] = ["ATM TRACER 88 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36089] = ["ATM TRACER 89 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36090] = ["ATM TRACER 90 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36091] = ["ATM TRACER 91 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36092] = ["ATM TRACER 92 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36093] = ["ATM TRACER 93 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36094] = ["ATM TRACER 94 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36095] = ["ATM TRACER 95 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36096] = ["ATM TRACER 96 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36097] = ["ATM TRACER 97 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36098] = ["ATM TRACER 98 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36099] = ["ATM TRACER 99 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36100] = ["ATM TRACER 100 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36101] = ["ATM TRACER 101 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36102] = ["ATM TRACER 102 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36103] = ["ATM TRACER 103 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36104] = ["ATM TRACER 104 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36105] = ["ATM TRACER 105 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36106] = ["ATM TRACER 106 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36107] = ["ATM TRACER 107 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36108] = ["ATM TRACER 108 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36109] = ["ATM TRACER 109 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36110] = ["ATM TRACER 110 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36111] = ["ATM TRACER 111 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36112] = ["ATM TRACER 112 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36113] = ["ATM TRACER 113 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36114] = ["ATM TRACER 114 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36115] = ["ATM TRACER 115 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36116] = ["ATM TRACER 116 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36117] = ["ATM TRACER 117 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36118] = ["ATM TRACER 118 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36119] = ["ATM TRACER 119 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36120] = ["ATM TRACER 120 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36121] = ["ATM TRACER 121 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36122] = ["ATM TRACER 122 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36123] = ["ATM TRACER 123 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36124] = ["ATM TRACER 124 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36125] = ["ATM TRACER 125 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36126] = ["ATM TRACER 126 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36127] = ["ATM TRACER 127 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36128] = ["ATM TRACER 128 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36129] = ["ATM TRACER 129 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36130] = ["ATM TRACER 130 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36131] = ["ATM TRACER 131 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36132] = ["ATM TRACER 132 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36133] = ["ATM TRACER 133 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36134] = ["ATM TRACER 134 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36135] = ["ATM TRACER 135 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36136] = ["ATM TRACER 136 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36137] = ["ATM TRACER 137 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36138] = ["ATM TRACER 138 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36139] = ["ATM TRACER 139 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36140] = ["ATM TRACER 140 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36141] = ["ATM TRACER 141 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36142] = ["ATM TRACER 142 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36143] = ["ATM TRACER 143 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36144] = ["ATM TRACER 144 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36145] = ["ATM TRACER 145 LATERAL BOUNDARY", "", "", "", ""] -atm_stashvar[36146] = ["ATM TRACER 146 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36147] = ["ATM TRACER 147 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36148] = ["ATM TRACER 148 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36149] = ["ATM TRACER 149 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36150] = ["ATM TRACER 150 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36257] = ["ATM TRACER 1 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36258] = ["ATM TRACER 2 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36259] = ["ATM TRACER 3 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36260] = ["ATM TRACER 4 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36261] = ["ATM TRACER 5 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36262] = ["ATM TRACER 6 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36263] = ["ATM TRACER 7 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36264] = ["ATM TRACER 8 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36265] = ["ATM TRACER 9 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36266] = ["ATM TRACER 10 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36267] = ["ATM TRACER 11 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36268] = ["ATM TRACER 12 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36269] = ["ATM TRACER 13 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36270] = ["ATM TRACER 14 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36271] = ["ATM TRACER 15 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36272] = ["ATM TRACER 16 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36273] = ["ATM TRACER 17 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36274] = ["ATM TRACER 18 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36275] = ["ATM TRACER 19 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36276] = ["ATM TRACER 20 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36277] = ["ATM TRACER 21 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36278] = ["ATM TRACER 22 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36279] = ["ATM TRACER 23 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36280] = ["ATM TRACER 24 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36281] = ["ATM TRACER 25 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36282] = ["ATM TRACER 26 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36283] = ["ATM TRACER 27 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36284] = ["ATM TRACER 28 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36285] = ["ATM TRACER 29 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36286] = ["ATM TRACER 30 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36287] = ["ATM TRACER 31 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36288] = ["ATM TRACER 32 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36289] = ["ATM TRACER 33 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36290] = ["ATM TRACER 34 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36291] = ["ATM TRACER 35 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36292] = ["ATM TRACER 36 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36293] = ["ATM TRACER 37 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36294] = ["ATM TRACER 38 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36295] = ["ATM TRACER 39 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36296] = ["ATM TRACER 40 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36297] = ["ATM TRACER 41 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36298] = ["ATM TRACER 42 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36299] = ["ATM TRACER 43 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36300] = ["ATM TRACER 44 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36301] = ["ATM TRACER 45 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36302] = ["ATM TRACER 46 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36303] = ["ATM TRACER 47 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36304] = ["ATM TRACER 48 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36305] = ["ATM TRACER 49 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36306] = ["ATM TRACER 50 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36307] = ["ATM TRACER 51 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36308] = ["ATM TRACER 52 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36309] = ["ATM TRACER 53 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36310] = ["ATM TRACER 54 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36311] = ["ATM TRACER 55 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36312] = ["ATM TRACER 56 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36313] = ["ATM TRACER 57 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36314] = ["ATM TRACER 58 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36315] = ["ATM TRACER 59 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36316] = ["ATM TRACER 60 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36317] = ["ATM TRACER 61 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36318] = ["ATM TRACER 62 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36319] = ["ATM TRACER 63 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36320] = ["ATM TRACER 64 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36321] = ["ATM TRACER 65 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36322] = ["ATM TRACER 66 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36323] = ["ATM TRACER 67 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36324] = ["ATM TRACER 68 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36325] = ["ATM TRACER 69 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36326] = ["ATM TRACER 70 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36327] = ["ATM TRACER 71 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36328] = ["ATM TRACER 72 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36329] = ["ATM TRACER 73 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36330] = ["ATM TRACER 74 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36331] = ["ATM TRACER 75 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36332] = ["ATM TRACER 76 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36333] = ["ATM TRACER 77 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36334] = ["ATM TRACER 78 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36335] = ["ATM TRACER 79 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36336] = ["ATM TRACER 80 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36337] = ["ATM TRACER 81 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36338] = ["ATM TRACER 82 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36339] = ["ATM TRACER 83 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36340] = ["ATM TRACER 84 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36341] = ["ATM TRACER 85 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36342] = ["ATM TRACER 86 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36343] = ["ATM TRACER 87 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36344] = ["ATM TRACER 88 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36345] = ["ATM TRACER 89 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36346] = ["ATM TRACER 90 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36347] = ["ATM TRACER 91 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36348] = ["ATM TRACER 92 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36349] = ["ATM TRACER 93 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36350] = ["ATM TRACER 94 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36351] = ["ATM TRACER 95 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36352] = ["ATM TRACER 96 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36353] = ["ATM TRACER 97 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36354] = ["ATM TRACER 98 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36355] = ["ATM TRACER 99 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36356] = ["ATM TRACER 100 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36357] = ["ATM TRACER 101 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36358] = ["ATM TRACER 102 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36359] = ["ATM TRACER 103 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36360] = ["ATM TRACER 104 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36361] = ["ATM TRACER 105 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36362] = ["ATM TRACER 106 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36363] = ["ATM TRACER 107 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36364] = ["ATM TRACER 108 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36365] = ["ATM TRACER 109 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36366] = ["ATM TRACER 110 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36367] = ["ATM TRACER 111 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36368] = ["ATM TRACER 112 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36369] = ["ATM TRACER 113 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36370] = ["ATM TRACER 114 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36371] = ["ATM TRACER 115 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36372] = ["ATM TRACER 116 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36373] = ["ATM TRACER 117 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36374] = ["ATM TRACER 118 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36375] = ["ATM TRACER 119 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36376] = ["ATM TRACER 120 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36377] = ["ATM TRACER 121 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36378] = ["ATM TRACER 122 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36379] = ["ATM TRACER 123 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36380] = ["ATM TRACER 124 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36381] = ["ATM TRACER 125 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36382] = ["ATM TRACER 126 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36383] = ["ATM TRACER 127 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36384] = ["ATM TRACER 128 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36385] = ["ATM TRACER 129 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36386] = ["ATM TRACER 130 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36387] = ["ATM TRACER 131 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36388] = ["ATM TRACER 132 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36389] = ["ATM TRACER 133 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36390] = ["ATM TRACER 134 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36391] = ["ATM TRACER 135 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36392] = ["ATM TRACER 136 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36393] = ["ATM TRACER 137 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36394] = ["ATM TRACER 138 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36395] = ["ATM TRACER 139 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36396] = ["ATM TRACER 140 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36397] = ["ATM TRACER 141 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36398] = ["ATM TRACER 142 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36399] = ["ATM TRACER 143 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36400] = ["ATM TRACER 144 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36401] = ["ATM TRACER 145 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36402] = ["ATM TRACER 146 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36403] = ["ATM TRACER 147 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36404] = ["ATM TRACER 148 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36405] = ["ATM TRACER 149 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36406] = ["ATM TRACER 150 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37001] = ["UKCA TRACER 1 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37002] = ["UKCA TRACER 2 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37003] = ["UKCA TRACER 3 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37004] = ["UKCA TRACER 4 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37005] = ["UKCA TRACER 5 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37006] = ["UKCA TRACER 6 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37007] = ["UKCA TRACER 7 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37008] = ["UKCA TRACER 8 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37009] = ["UKCA TRACER 9 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37010] = ["UKCA TRACER 10 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37011] = ["UKCA TRACER 11 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37012] = ["UKCA TRACER 12 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37013] = ["UKCA TRACER 13 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37014] = ["UKCA TRACER 14 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37015] = ["UKCA TRACER 15 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37016] = ["UKCA TRACER 16 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37017] = ["UKCA TRACER 17 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37018] = ["UKCA TRACER 18 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37019] = ["UKCA TRACER 19 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37020] = ["UKCA TRACER 20 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37021] = ["UKCA TRACER 21 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37022] = ["UKCA TRACER 22 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37023] = ["UKCA TRACER 23 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37024] = ["UKCA TRACER 24 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37025] = ["UKCA TRACER 25 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37026] = ["UKCA TRACER 26 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37027] = ["UKCA TRACER 27 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37028] = ["UKCA TRACER 28 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37029] = ["UKCA TRACER 29 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37030] = ["UKCA TRACER 30 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37031] = ["UKCA TRACER 31 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37032] = ["UKCA TRACER 32 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37033] = ["UKCA TRACER 33 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37034] = ["UKCA TRACER 34 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37035] = ["UKCA TRACER 35 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37036] = ["UKCA TRACER 36 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37037] = ["UKCA TRACER 37 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37038] = ["UKCA TRACER 38 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37039] = ["UKCA TRACER 39 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37040] = ["UKCA TRACER 40 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37041] = ["UKCA TRACER 41 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37042] = ["UKCA TRACER 42 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37043] = ["UKCA TRACER 43 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37044] = ["UKCA TRACER 44 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37045] = ["UKCA TRACER 45 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37046] = ["UKCA TRACER 46 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37047] = ["UKCA TRACER 47 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37048] = ["UKCA TRACER 48 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37049] = ["UKCA TRACER 49 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37050] = ["UKCA TRACER 50 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37051] = ["UKCA TRACER 51 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37052] = ["UKCA TRACER 52 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37053] = ["UKCA TRACER 53 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37054] = ["UKCA TRACER 54 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37055] = ["UKCA TRACER 55 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37056] = ["UKCA TRACER 56 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37057] = ["UKCA TRACER 57 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37058] = ["UKCA TRACER 58 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37059] = ["UKCA TRACER 59 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37060] = ["UKCA TRACER 60 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37061] = ["UKCA TRACER 61 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37062] = ["UKCA TRACER 62 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37063] = ["UKCA TRACER 63 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37064] = ["UKCA TRACER 64 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37065] = ["UKCA TRACER 65 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37066] = ["UKCA TRACER 66 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37067] = ["UKCA TRACER 67 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37068] = ["UKCA TRACER 68 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37069] = ["UKCA TRACER 69 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37070] = ["UKCA TRACER 70 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37071] = ["UKCA TRACER 71 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37072] = ["UKCA TRACER 72 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37073] = ["UKCA TRACER 73 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37074] = ["UKCA TRACER 74 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37075] = ["UKCA TRACER 75 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37076] = ["UKCA TRACER 76 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37077] = ["UKCA TRACER 77 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37078] = ["UKCA TRACER 78 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37079] = ["UKCA TRACER 79 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37080] = ["UKCA TRACER 80 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37081] = ["UKCA TRACER 81 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37082] = ["UKCA TRACER 82 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37083] = ["UKCA TRACER 83 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37084] = ["UKCA TRACER 84 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37085] = ["UKCA TRACER 85 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37086] = ["UKCA TRACER 86 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37087] = ["UKCA TRACER 87 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37088] = ["UKCA TRACER 88 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37089] = ["UKCA TRACER 89 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37090] = ["UKCA TRACER 90 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37091] = ["UKCA TRACER 91 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37092] = ["UKCA TRACER 92 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37093] = ["UKCA TRACER 93 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37094] = ["UKCA TRACER 94 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37095] = ["UKCA TRACER 95 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37096] = ["UKCA TRACER 96 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37097] = ["UKCA TRACER 97 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37098] = ["UKCA TRACER 98 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37099] = ["UKCA TRACER 99 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37100] = ["UKCA TRACER 100 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37101] = ["UKCA TRACER 101 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37102] = ["UKCA TRACER 102 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37103] = ["UKCA TRACER 103 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37104] = ["UKCA TRACER 104 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37105] = ["UKCA TRACER 105 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37106] = ["UKCA TRACER 106 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37107] = ["UKCA TRACER 107 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37108] = ["UKCA TRACER 108 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37109] = ["UKCA TRACER 109 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37110] = ["UKCA TRACER 110 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37111] = ["UKCA TRACER 111 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37112] = ["UKCA TRACER 112 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37113] = ["UKCA TRACER 113 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37114] = ["UKCA TRACER 114 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37115] = ["UKCA TRACER 115 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37116] = ["UKCA TRACER 116 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37117] = ["UKCA TRACER 117 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37118] = ["UKCA TRACER 118 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37119] = ["UKCA TRACER 119 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37120] = ["UKCA TRACER 120 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37121] = ["UKCA TRACER 121 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37122] = ["UKCA TRACER 122 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37123] = ["UKCA TRACER 123 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37124] = ["UKCA TRACER 124 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37125] = ["UKCA TRACER 125 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37126] = ["UKCA TRACER 126 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37127] = ["UKCA TRACER 127 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37128] = ["UKCA TRACER 128 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37129] = ["UKCA TRACER 129 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37130] = ["UKCA TRACER 130 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37131] = ["UKCA TRACER 131 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37132] = ["UKCA TRACER 132 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37133] = ["UKCA TRACER 133 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37134] = ["UKCA TRACER 134 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37135] = ["UKCA TRACER 135 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37136] = ["UKCA TRACER 136 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37137] = ["UKCA TRACER 137 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37138] = ["UKCA TRACER 138 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37139] = ["UKCA TRACER 139 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37140] = ["UKCA TRACER 140 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37141] = ["UKCA TRACER 141 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37142] = ["UKCA TRACER 142 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37143] = ["UKCA TRACER 143 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37144] = ["UKCA TRACER 144 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37145] = ["UKCA TRACER 145 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37146] = ["UKCA TRACER 146 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37147] = ["UKCA TRACER 147 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37148] = ["UKCA TRACER 148 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37149] = ["UKCA TRACER 149 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37150] = ["UKCA TRACER 150 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37257] = ["UKCA TRACER 1 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37258] = ["UKCA TRACER 2 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37259] = ["UKCA TRACER 3 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37260] = ["UKCA TRACER 4 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37261] = ["UKCA TRACER 5 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37262] = ["UKCA TRACER 6 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37263] = ["UKCA TRACER 7 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37264] = ["UKCA TRACER 8 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37265] = ["UKCA TRACER 9 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37266] = ["UKCA TRACER 10 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37267] = ["UKCA TRACER 11 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37268] = ["UKCA TRACER 12 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37269] = ["UKCA TRACER 13 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37270] = ["UKCA TRACER 14 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37271] = ["UKCA TRACER 15 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37272] = ["UKCA TRACER 16 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37273] = ["UKCA TRACER 17 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37274] = ["UKCA TRACER 18 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37275] = ["UKCA TRACER 19 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37276] = ["UKCA TRACER 20 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37277] = ["UKCA TRACER 21 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37278] = ["UKCA TRACER 22 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37279] = ["UKCA TRACER 23 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37280] = ["UKCA TRACER 24 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37281] = ["UKCA TRACER 25 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37282] = ["UKCA TRACER 26 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37283] = ["UKCA TRACER 27 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37284] = ["UKCA TRACER 28 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37285] = ["UKCA TRACER 29 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37286] = ["UKCA TRACER 30 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37287] = ["UKCA TRACER 31 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37288] = ["UKCA TRACER 32 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37289] = ["UKCA TRACER 33 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37290] = ["UKCA TRACER 34 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37291] = ["UKCA TRACER 35 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37292] = ["UKCA TRACER 36 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37293] = ["UKCA TRACER 37 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37294] = ["UKCA TRACER 38 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37295] = ["UKCA TRACER 39 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37296] = ["UKCA TRACER 40 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37297] = ["UKCA TRACER 41 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37298] = ["UKCA TRACER 42 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37299] = ["UKCA TRACER 43 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37300] = ["UKCA TRACER 44 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37301] = ["UKCA TRACER 45 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37302] = ["UKCA TRACER 46 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37303] = ["UKCA TRACER 47 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37304] = ["UKCA TRACER 48 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37305] = ["UKCA TRACER 49 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37306] = ["UKCA TRACER 50 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37307] = ["UKCA TRACER 51 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37308] = ["UKCA TRACER 52 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37309] = ["UKCA TRACER 53 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37310] = ["UKCA TRACER 54 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37311] = ["UKCA TRACER 55 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37312] = ["UKCA TRACER 56 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37313] = ["UKCA TRACER 57 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37314] = ["UKCA TRACER 58 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37315] = ["UKCA TRACER 59 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37316] = ["UKCA TRACER 60 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37317] = ["UKCA TRACER 61 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37318] = ["UKCA TRACER 62 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37319] = ["UKCA TRACER 63 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37320] = ["UKCA TRACER 64 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37321] = ["UKCA TRACER 65 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37322] = ["UKCA TRACER 66 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37323] = ["UKCA TRACER 67 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37324] = ["UKCA TRACER 68 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37325] = ["UKCA TRACER 69 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37326] = ["UKCA TRACER 70 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37327] = ["UKCA TRACER 71 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37328] = ["UKCA TRACER 72 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37329] = ["UKCA TRACER 73 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37330] = ["UKCA TRACER 74 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37331] = ["UKCA TRACER 75 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37332] = ["UKCA TRACER 76 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37333] = ["UKCA TRACER 77 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37334] = ["UKCA TRACER 78 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37335] = ["UKCA TRACER 79 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37336] = ["UKCA TRACER 80 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37337] = ["UKCA TRACER 81 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37338] = ["UKCA TRACER 82 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37339] = ["UKCA TRACER 83 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37340] = ["UKCA TRACER 84 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37341] = ["UKCA TRACER 85 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37342] = ["UKCA TRACER 86 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37343] = ["UKCA TRACER 87 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37344] = ["UKCA TRACER 88 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37345] = ["UKCA TRACER 89 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37346] = ["UKCA TRACER 90 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37347] = ["UKCA TRACER 91 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37348] = ["UKCA TRACER 92 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37349] = ["UKCA TRACER 93 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37350] = ["UKCA TRACER 94 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37351] = ["UKCA TRACER 95 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37352] = ["UKCA TRACER 96 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37353] = ["UKCA TRACER 97 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37354] = ["UKCA TRACER 98 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37355] = ["UKCA TRACER 99 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37356] = ["UKCA TRACER 100 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37357] = ["UKCA TRACER 101 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37358] = ["UKCA TRACER 102 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37359] = ["UKCA TRACER 103 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37360] = ["UKCA TRACER 104 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37361] = ["UKCA TRACER 105 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37362] = ["UKCA TRACER 106 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37363] = ["UKCA TRACER 107 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37364] = ["UKCA TRACER 108 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37365] = ["UKCA TRACER 109 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37366] = ["UKCA TRACER 110 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37367] = ["UKCA TRACER 111 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37368] = ["UKCA TRACER 112 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37369] = ["UKCA TRACER 113 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37370] = ["UKCA TRACER 114 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37371] = ["UKCA TRACER 115 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37372] = ["UKCA TRACER 116 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37373] = ["UKCA TRACER 117 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37374] = ["UKCA TRACER 118 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37375] = ["UKCA TRACER 119 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37376] = ["UKCA TRACER 120 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37377] = ["UKCA TRACER 121 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37378] = ["UKCA TRACER 122 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37379] = ["UKCA TRACER 123 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37380] = ["UKCA TRACER 124 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37381] = ["UKCA TRACER 125 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37382] = ["UKCA TRACER 126 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37383] = ["UKCA TRACER 127 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37384] = ["UKCA TRACER 128 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37385] = ["UKCA TRACER 129 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37386] = ["UKCA TRACER 130 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37387] = ["UKCA TRACER 131 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37388] = ["UKCA TRACER 132 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37389] = ["UKCA TRACER 133 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37390] = ["UKCA TRACER 134 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37391] = ["UKCA TRACER 135 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37392] = ["UKCA TRACER 136 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37393] = ["UKCA TRACER 137 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37394] = ["UKCA TRACER 138 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37395] = ["UKCA TRACER 139 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37396] = ["UKCA TRACER 140 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37397] = ["UKCA TRACER 141 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37398] = ["UKCA TRACER 142 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37399] = ["UKCA TRACER 143 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37400] = ["UKCA TRACER 144 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37401] = ["UKCA TRACER 145 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37402] = ["UKCA TRACER 146 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37403] = ["UKCA TRACER 147 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37404] = ["UKCA TRACER 148 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37405] = ["UKCA TRACER 149 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37406] = ["UKCA TRACER 150 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[38201] = ["PRIMARY H2SO4 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38202] = ["PRIMARY H2SO4 TO ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38203] = ["PRIMARY H2SO4 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38204] = ["PRIMARY SEA-SALT TO ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38205] = ["PRIMARY SEA-SALT TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38206] = ["PRIMARY BLACK CARBON TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38207] = ["PRIMARY BLACK CARBON TO AITKEN (INS)", "", "", "", ""] -atm_stashvar[38208] = ["PRIMARY OM TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38209] = ["PRIMARY OM TO AITKEN (INS)", "", "", "", ""] -atm_stashvar[38210] = ["PRIMARY DUST TO ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38211] = ["PRIMARY DUST TO ACCUMULATION (INS)", "", "", "", ""] -atm_stashvar[38212] = ["PRIMARY DUST TO COARSE (SOLUBLE)", "", "", "", ""] -atm_stashvar[38213] = ["PRIMARY DUST TO COARSE (INSOLUBLE)", "", "", "", ""] -atm_stashvar[38214] = ["DRY DEPOSITION H2SO4 NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38215] = ["DRY DEPOSITION H2SO4 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38216] = ["DRY DEPOSITION H2SO4 ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38217] = ["DRY DEPOSITION H2SO4 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38218] = ["DRY DEPOSITION SEA-SALT ACC (SOL)", "", "", "", ""] -atm_stashvar[38219] = ["DRY DEPOSITION SEA-SALT COARSE (SOL)", "", "", "", ""] -atm_stashvar[38220] = ["DRY DEPOSITION BLK CARB AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38221] = ["DRY DEPOSITION BLK CARB ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38222] = ["DRY DEPOSITION BLK CARB COARSE (SOL)", "", "", "", ""] -atm_stashvar[38223] = ["DRY DEPOSITION BLK CARB AITKEN (INS)", "", "", "", ""] -atm_stashvar[38224] = ["DRY DEPOSITION OM NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38225] = ["DRY DEPOSITION OM AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38226] = ["DRY DEPOSITION OM ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38227] = ["DRY DEPOSITION OM COARSE (SOL)", "", "", "", ""] -atm_stashvar[38228] = ["DRY DEPOSITION OM AITKEN (INS)", "", "", "", ""] -atm_stashvar[38229] = ["DRY DEPOSITION OM2 NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38230] = ["DRY DEPOSITION OM2 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38231] = ["DRY DEPOSITION OM2 ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38232] = ["DRY DEPOSITION OM2 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38233] = ["DRY DEPOSITION DUST ACCUMULATN (SOL)", "", "", "", ""] -atm_stashvar[38234] = ["DRY DEPOSITION DUST COARSE (SOL)", "", "", "", ""] -atm_stashvar[38235] = ["DRY DEPOSITION DUST ACCUMULATN (INS)", "", "", "", ""] -atm_stashvar[38236] = ["DRY DEPOSITION DUST COARSE (INS)", "", "", "", ""] -atm_stashvar[38237] = ["NUC SCAVENGING H2SO4 NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38238] = ["NUC SCAVENGING H2SO4 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38239] = ["NUC SCAVENGING H2SO4 ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38240] = ["NUC SCAVENGING H2SO4 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38241] = ["NUC SCAVENGING SEA-SALT ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38242] = ["NUC SCAVENGING SEA-SALT COARSE (SOL)", "", "", "", ""] -atm_stashvar[38243] = ["NUC SCAVENGING BLK CARB AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38244] = ["NUC SCAVENGING BLK CARB ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38245] = ["NUC SCAVENGING BLK CARB COARSE (SOL)", "", "", "", ""] -atm_stashvar[38246] = ["NUC SCAVENGING BLK CARB AITKEN (INS)", "", "", "", ""] -atm_stashvar[38247] = ["NUC SCAVENGING OM NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38248] = ["NUC SCAVENGING OM AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38249] = ["NUC SCAVENGING OM ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38250] = ["NUC SCAVENGING OM COARSE (SOL)", "", "", "", ""] -atm_stashvar[38251] = ["NUC SCAVENGING OM AITKEN (INS)", "", "", "", ""] -atm_stashvar[38252] = ["NUC SCAVENGING OM2 NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38253] = ["NUC SCAVENGING OM2 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38254] = ["NUC SCAVENGING OM2 ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38255] = ["NUC SCAVENGING OM2 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38257] = ["NUC SCAVENGING DUST ACCUMULTN. (SOL)", "", "", "", ""] -atm_stashvar[38258] = ["NUC SCAVENGING DUST COARSE (SOL)", "", "", "", ""] -atm_stashvar[38259] = ["NUC SCAVENGING DUST ACCUMULTN. (INS)", "", "", "", ""] -atm_stashvar[38260] = ["NUC SCAVENGING DUST COARSE (INS)", "", "", "", ""] -atm_stashvar[38261] = ["IMP SCAVENGING H2SO4 NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38262] = ["IMP SCAVENGING H2SO4 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38263] = ["IMP SCAVENGING H2SO4 ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38264] = ["IMP SCAVENGING H2SO4 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38265] = ["IMP SCAVENGING SEA-SALT ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38266] = ["IMP SCAVENGING SEA-SALT COARSE (SOL)", "", "", "", ""] -atm_stashvar[38267] = ["IMP SCAVENGING BLK CARB AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38268] = ["IMP SCAVENGING BLK CARB ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38269] = ["IMP SCAVENGING BLK CARB COARSE (SOL)", "", "", "", ""] -atm_stashvar[38270] = ["IMP SCAVENGING BLK CARB AITKEN (INS)", "", "", "", ""] -atm_stashvar[38271] = ["IMP SCAVENGING OM NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38272] = ["IMP SCAVENGING OM AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38273] = ["IMP SCAVENGING OM ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38274] = ["IMP SCAVENGING OM COARSE (SOL)", "", "", "", ""] -atm_stashvar[38275] = ["IMP SCAVENGING OM AITKEN (INS)", "", "", "", ""] -atm_stashvar[38276] = ["IMP SCAVENGING OM2 NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38277] = ["IMP SCAVENGING OM2 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38278] = ["IMP SCAVENGING OM2 ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38279] = ["IMP SCAVENGING OM2 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38280] = ["IMP SCAVENGING DUST ACCUMULTN. (SOL)", "", "", "", ""] -atm_stashvar[38281] = ["IMP SCAVENGING DUST COARSE (SOL)", "", "", "", ""] -atm_stashvar[38282] = ["IMP SCAVENGING DUST ACCUMULTN. (INS)", "", "", "", ""] -atm_stashvar[38283] = ["IMP SCAVENGING DUST COARSE (INS)", "", "", "", ""] -atm_stashvar[38284] = ["INCLOUD H2SO4 (H2O2) TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38285] = ["INCLOUD H2SO4 (H2O2) TO ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38286] = ["INCLOUD H2SO4 (H2O2) TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38287] = ["INCLOUD H2SO4 (O3) TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38288] = ["INCLOUD H2SO4 (O3) TO ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38289] = ["INCLOUD H2SO4 (O3) TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38290] = ["CLOUDPROC H2SO4 AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38291] = ["CLOUDPROC BC AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38292] = ["CLOUDPROC OM AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38293] = ["CLOUDPROC OM2 AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38294] = ["CONDENSATION H2SO4 TO NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38295] = ["CONDENSATION H2SO4 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38296] = ["CONDENSATION H2SO4 TO ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38297] = ["CONDENSATION H2SO4 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38298] = ["CONDENSATION H2SO4 TO AITKEN (INSOL)", "", "", "", ""] -atm_stashvar[38299] = ["CONDENSATION H2SO4 TO ACCUM. (INSOL)", "", "", "", ""] -atm_stashvar[38300] = ["CONDENSATION H2SO4 TO COARSE (INSOL)", "", "", "", ""] -atm_stashvar[38301] = ["CONDENSATION OM1 TO NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38302] = ["CONDENSATION OM1 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38303] = ["CONDENSATION OM1 TO ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38304] = ["CONDENSATION OM1 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38305] = ["CONDENSATION OM1 TO AITKEN (INSOL)", "", "", "", ""] -atm_stashvar[38306] = ["CONDENSATION OM1 TO ACCUM. (INSOL)", "", "", "", ""] -atm_stashvar[38307] = ["CONDENSATION OM1 TO COARSE (INSOL)", "", "", "", ""] -atm_stashvar[38308] = ["CONDENSATION OM2 TO NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38309] = ["CONDENSATION OM2 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38310] = ["CONDENSATION OM2 TO ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38311] = ["CONDENSATION OM2 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38312] = ["CONDENSATION OM2 TO AITKEN (INSOL)", "", "", "", ""] -atm_stashvar[38313] = ["CONDENSATION OM2 TO ACCUM. (INSOL)", "", "", "", ""] -atm_stashvar[38314] = ["CONDENSATION OM2 TO COARSE (INSOL)", "", "", "", ""] -atm_stashvar[38315] = ["HETOX ON DUST {SO2 -> SO4} (ACC-SOL)", "", "", "", ""] -atm_stashvar[38316] = ["HETOX ON DUST {SO2 -> SO4} (COR-SOL)", "", "", "", ""] -atm_stashvar[38317] = ["HETOX ON DUST {SO2 -> SO4} (ACC-INS)", "", "", "", ""] -atm_stashvar[38318] = ["HETOX ON DUST {SO2 -> SO4} (COR-INS)", "", "", "", ""] -atm_stashvar[38319] = ["NUCLEATION OF H2SO4 (TO NUC-SOL)", "", "", "", ""] -atm_stashvar[38320] = ["COAG H2SO4 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38321] = ["COAG H2SO4 NUCLTN-SOL TO ACCUM.-SOL", "", "", "", ""] -atm_stashvar[38322] = ["COAG H2SO4 NUCLTN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38323] = ["COAG H2SO4 NUCLTN-SOL TO AITKEN-INS", "", "", "", ""] -atm_stashvar[38324] = ["COAG H2SO4 NUCLTN-SOL TO ACCUM.-INS", "", "", "", ""] -atm_stashvar[38325] = ["COAG H2SO4 NUCLTN-SOL TO COARSE-INS", "", "", "", ""] -atm_stashvar[38326] = ["COAG OM1 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38327] = ["COAG OM1 NUCLTN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38328] = ["COAG OM1 NUCLTN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38329] = ["COAG OM1 NUCLTN-SOL TO AITKEN-INSOL", "", "", "", ""] -atm_stashvar[38330] = ["COAG OM1 NUCLTN-SOL TO ACCUM.-INSOL", "", "", "", ""] -atm_stashvar[38331] = ["COAG OM1 NUCLTN-SOL TO COARSE-INSOL", "", "", "", ""] -atm_stashvar[38332] = ["COAG OM2 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38333] = ["COAG OM2 NUCLTN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38334] = ["COAG OM2 NUCLTN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38335] = ["COAG OM2 NUCLTN-SOL TO AITKEN-INSOL", "", "", "", ""] -atm_stashvar[38336] = ["COAG OM2 NUCLTN-SOL TO ACCUM.-INSOL", "", "", "", ""] -atm_stashvar[38337] = ["COAG OM2 NUCLTN-SOL TO COARSE-INSOL", "", "", "", ""] -atm_stashvar[38338] = ["COAG H2SO4 AITKEN-SOL TO ACCUM.-SOL", "", "", "", ""] -atm_stashvar[38339] = ["COAG H2SO4 AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38342] = ["COAG BC AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38343] = ["COAG BC AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38346] = ["COAG OM1 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38347] = ["COAG OM1 AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38350] = ["COAG OM2 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38351] = ["COAG OM2 AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38354] = ["COAG H2SO4 ACCUM.-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38356] = ["COAG BC ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38358] = ["COAG OM1 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38360] = ["COAG SEA-SALT ACC-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38362] = ["COAG OM2 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38364] = ["COAG DU ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38366] = ["COAG BC AITKEN-INS TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38367] = ["COAG OM1 AITKEN-INS TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38368] = ["COAG BC AITKEN-INS TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38369] = ["COAG OM1 AITKEN-INS TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38370] = ["COAG DU ACCUM.-INS TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38371] = ["AGEING H2SO4 AITKEN-INS TO AIT.-SOL", "", "", "", ""] -atm_stashvar[38372] = ["AGEING BC AITKEN-INS TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38373] = ["AGEING OM1 AITKEN-INS TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38374] = ["AGEING OM2 AITKEN-INS TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38375] = ["MERGE H2SO4 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38376] = ["MERGE OM1 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38377] = ["MERGE OM2 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38378] = ["MERGE H2SO4 AITKEN-SOL TO ACCUM.-SOL", "", "", "", ""] -atm_stashvar[38379] = ["MERGE BC AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38380] = ["MERGE OM1 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38381] = ["MERGE OM2 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38382] = ["MERGE H2SO4 ACCUM.-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38383] = ["MERGE SEA_SALT ACC-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38384] = ["MERGE BC ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38385] = ["MERGE OM1 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38386] = ["MERGE DU ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38387] = ["MERGE OM2 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38401] = ["DRY PARTICLE DIAMETER NUCLEATION-SOL", "", "", "", ""] -atm_stashvar[38402] = ["DRY PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[38403] = ["DRY PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[38404] = ["DRY PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[38405] = ["DRY PARTICLE DIAMETER AITKEN-INS", "", "", "", ""] -atm_stashvar[38406] = ["DRY PARTICLE DIAMETER ACCUMULATN-INS", "", "", "", ""] -atm_stashvar[38407] = ["DRY PARTICLE DIAMETER COARSE-INS", "", "", "", ""] -atm_stashvar[38408] = ["WET PARTICLE DIAMETER NUCLEATION-SOL", "", "", "", ""] -atm_stashvar[38409] = ["WET PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[38410] = ["WET PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[38411] = ["WET PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[38412] = ["WATER CONTENT FOR NUCLEATION-SOLUBLE", "", "", "", ""] -atm_stashvar[38413] = ["WATER CONTENT FOR AITKEN -SOLUBLE", "", "", "", ""] -atm_stashvar[38414] = ["WATER CONTENT FOR ACCUMULTN.-SOLUBLE", "", "", "", ""] -atm_stashvar[38415] = ["WATER CONTENT FOR COARSE -SOLUBLE", "", "", "", ""] -atm_stashvar[38416] = ["SURFACE AREA CONC NUCLN.-SOL (WET)", "", "", "", ""] -atm_stashvar[38417] = ["SURFACE AREA CONC AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[38418] = ["SURFACE AREA CONC ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[38419] = ["SURFACE AREA CONC COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[38420] = ["SURFACE AREA CONC AITKEN-INS", "", "", "", ""] -atm_stashvar[38421] = ["SURFACE AREA CONC ACCUM.-INS", "", "", "", ""] -atm_stashvar[38422] = ["SURFACE AREA CONC COARSE-INS", "", "", "", ""] -atm_stashvar[38423] = ["VOLUME CONCENTRN. NUCLN.-SOL (WET)", "", "", "", ""] -atm_stashvar[38424] = ["VOLUME CONCENTRN. AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[38425] = ["VOLUME CONCENTRN. ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[38426] = ["VOLUME CONCENTRN. COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[38427] = ["VOLUME CONCENTRN. AITKEN-INS", "", "", "", ""] -atm_stashvar[38428] = ["VOLUME CONCENTRN. ACCUM.-INS", "", "", "", ""] -atm_stashvar[38429] = ["VOLUME CONCENTRN. COARSE-INS", "", "", "", ""] -atm_stashvar[38430] = ["PTCL MASS DENSITY NUCLN.-SOL (WET)", "", "", "", ""] -atm_stashvar[38431] = ["PTCL MASS DENSITY AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[38432] = ["PTCL MASS DENSITY ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[38433] = ["PTCL MASS DENSITY COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[38434] = ["PTCL MASS DENSITY AITKEN-INS", "", "", "", ""] -atm_stashvar[38435] = ["PTCL MASS DENSITY ACCUM.-INS", "", "", "", ""] -atm_stashvar[38436] = ["PTCL MASS DENSITY COARSE-INS", "", "", "", ""] -atm_stashvar[38437] = ["CN NUMBER CONCENTRATION", "", "", "", ""] -atm_stashvar[38438] = ["CCN NO. CONCENTRN. (ACC+COR)", "", "", "", ""] -atm_stashvar[38439] = ["CCN NO. CONCENTRN. (ACC+COR+AIT>25r)", "", "", "", ""] -atm_stashvar[38440] = ["CCN NO. CONCENTRN. (ACC+COR+AIT>35r)", "", "", "", ""] -atm_stashvar[38441] = ["CD NUMBER CONCENTRATION", "", "", "", ""] -atm_stashvar[38442] = ["H2SO4 PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38443] = ["OM1 PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38444] = ["OM2 PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38445] = ["H2O PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38446] = ["H2SO4 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38447] = ["BC PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38448] = ["OM1 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38449] = ["OM2 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38450] = ["H2O PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38451] = ["H2SO4 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38452] = ["BC PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38453] = ["OM1 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38454] = ["SS PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38455] = ["DU PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38456] = ["OM2 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38457] = ["H2O PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38458] = ["H2SO4 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38459] = ["BC PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38460] = ["OM1 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38461] = ["SSALT PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38462] = ["DU PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38463] = ["OM2 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38464] = ["H2O PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38465] = ["BC PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[38466] = ["OM1 PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[38467] = ["DU PARTIAL VOLUME CONC (ACC-INS)", "", "", "", ""] -atm_stashvar[38468] = ["DU PARTIAL VOLUME CONC (COR-INS)", "", "", "", ""] -atm_stashvar[38469] = ["ACTIVE CLOUD DROP NO CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38470] = ["ACTIVE CLOUD DROP NO CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38471] = ["ACTIVE CLOUD DROP NO CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38472] = ["ACTIVE CLOUD DROP NO CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38473] = ["Maximum Supersaturation (percent)", "", "", "", ""] -atm_stashvar[38474] = ["Cloud base for aerosol activation", "", "", "", ""] -atm_stashvar[38475] = ["Sigmaw Updraught Velocity", "", "", "", ""] -atm_stashvar[38476] = ["CLOUD LIQUID FRACTION", "", "", "", ""] -atm_stashvar[38477] = ["TOTAL CDNC * CLOUD LIQ FRACTION", "", "", "", ""] -atm_stashvar[38478] = ["CLOUD FLAG", "", "", "", ""] -atm_stashvar[38479] = ["TOTAL CDNC * CLOUD FLAG (m^-3)", "", "", "", ""] -atm_stashvar[38480] = ["Max SuperSaturation*CLD FLAG (perc)", "", "", "", ""] -atm_stashvar[38481] = ["Charac updraft * CLD FLAG (m s^-1)", "", "", "", ""] -atm_stashvar[38482] = ["Sigmaw * CLOUD FLAG (m s^-1)", "", "", "", ""] -atm_stashvar[38483] = ["BL TKE * CLOUD FLAG (m^2 s^-2)", "", "", "", ""] -atm_stashvar[38484] = ["CCN at fixed Supersaturation (m^-3)", "", "", "", ""] -atm_stashvar[38485] = ["H2SO4 Nucleation-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38486] = ["H2SO4 Aitken-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38487] = ["H2SO4 accumulation-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38488] = ["H2SO4 coarse-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38489] = ["BC Aitken-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38490] = ["BC accumulation-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38491] = ["BC coarse-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38492] = ["BC Aitken-insol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38493] = ["OM Nucleation-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38494] = ["OM Aitken-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38495] = ["OM accumulation-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38496] = ["OM coarse-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38497] = ["OM Aitken-insol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38498] = ["Sea-salt accumln-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38499] = ["Sea-salt coarse-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38500] = ["Dust accumln-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38501] = ["Dust coarse-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38502] = ["Dust accumln-insol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38503] = ["Dust coarse-insol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38504] = ["Number Nucleation-sol mode (m^-3)", "", "", "", ""] -atm_stashvar[38505] = ["Number Aitken-sol mode (m^-3)", "", "", "", ""] -atm_stashvar[38506] = ["Number accumulation-sol mode (m^-3)", "", "", "", ""] -atm_stashvar[38507] = ["Number coarse-sol mode (m^-3)", "", "", "", ""] -atm_stashvar[38508] = ["Number Aitken-insol mode (m^-3)", "", "", "", ""] -atm_stashvar[38509] = ["Number accumln-insol mode (m^-3)", "", "", "", ""] -atm_stashvar[38510] = ["Number coarse-insol mode (m^-3)", "", "", "", ""] -atm_stashvar[38511] = ["H2O Nucleation-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38512] = ["H2O Aitken-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38513] = ["H2O accumulation-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38514] = ["H2O coarse-sol mode (kgm^-3)", "", "", "", ""] -atm_stashvar[38515] = ["Total aerosol water content (kgm^-3)", "", "", "", ""] -atm_stashvar[38516] = ["H2SO4 load Nucleation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38517] = ["H2SO4 load Aitken-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38518] = ["H2SO4 load accumulation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38519] = ["H2SO4 load coarse-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38520] = ["Total aerosol H2SO4 load (kgm^-2)", "", "", "", ""] -atm_stashvar[38521] = ["BC load Aitken-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38522] = ["BC load accumulation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38523] = ["BC load coarse-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38524] = ["BC load Aitken-insol (kgm^-2)", "", "", "", ""] -atm_stashvar[38525] = ["Total aerosol BC load (kgm^-2)", "", "", "", ""] -atm_stashvar[38526] = ["OM load Nucleation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38527] = ["OM load Aitken-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38528] = ["OM load accumulation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38529] = ["OM load coarse-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38530] = ["OM load Aitken-insol (kgm^-2)", "", "", "", ""] -atm_stashvar[38531] = ["Total aerosol OM load (kgm^-2)", "", "", "", ""] -atm_stashvar[38532] = ["Dust load accumulation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38533] = ["Dust load coarse-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38534] = ["Dust load accumultn-insol (kgm^-2)", "", "", "", ""] -atm_stashvar[38535] = ["Dust load coarse-insol (kgm^-2)", "", "", "", ""] -atm_stashvar[38536] = ["Total aerosol Dust load (kgm^-2)", "", "", "", ""] -atm_stashvar[38537] = ["Sea-salt load accumltn-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38538] = ["Sea-salt load coarse-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38539] = ["Total aerosol Sea-salt load (kgm^-2)", "", "", "", ""] -atm_stashvar[38540] = ["H2O load nucleation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38541] = ["H2O load Aitken-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38542] = ["H2O load accumulation-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38543] = ["H2O load coarse-sol (kgm^-2)", "", "", "", ""] -atm_stashvar[38544] = ["Total aerosol H2O load (kgm^-2)", "", "", "", ""] -atm_stashvar[38545] = ["H2O mass mixing ratio (kg/kg)", "", "", "", ""] -atm_stashvar[38546] = ["MASS REMOVED BY MDT FIX NUCL-SOL", "", "", "", ""] -atm_stashvar[38547] = ["MASS REMOVED BY MDT FIX AITKEN-SOL", "", "", "", ""] -atm_stashvar[38548] = ["MASS REMOVED BY MDT FIX ACCUM-SOL", "", "", "", ""] -atm_stashvar[38549] = ["MASS REMOVED BY MDT FIX COARSE-SOL", "", "", "", ""] -atm_stashvar[38550] = ["MASS REMOVED BY MDT FIX AITKEN-INS", "", "", "", ""] -atm_stashvar[38551] = ["MASS REMOVED BY MDT FIX ACCUM-INS", "", "", "", ""] -atm_stashvar[38552] = ["MASS REMOVED BY MDT FIX COARSE-INS", "", "", "", ""] -atm_stashvar[38553] = ["FREQUENCY MDT FIX (%) NUCL-SOL", "", "", "", ""] -atm_stashvar[38554] = ["FREQUENCY MDT FIX (%) AITKEN-SOL", "", "", "", ""] -atm_stashvar[38555] = ["FREQUENCY MDT FIX (%) ACCUM-SOL", "", "", "", ""] -atm_stashvar[38556] = ["FREQUENCY MDT FIX (%) COARSE-SOL", "", "", "", ""] -atm_stashvar[38557] = ["FREQUENCY MDT FIX (%) AITKEN-INS", "", "", "", ""] -atm_stashvar[38558] = ["FREQUENCY MDT FIX (%) ACCUM-INS", "", "", "", ""] -atm_stashvar[38559] = ["FREQUENCY MDT FIX (%) COARSE-INS", "", "", "", ""] -atm_stashvar[38560] = ["PM10 concentration, wet (ug m-3)", "", "", "", ""] -atm_stashvar[38561] = ["PM2.5 concentration, wet (ug m-3)", "", "", "", ""] -atm_stashvar[38562] = ["PM10 concentration, dry (ug m-3)", "", "", "", ""] -atm_stashvar[38563] = ["PM2.5 concentration, dry (ug m-3)", "", "", "", ""] -atm_stashvar[38564] = ["H2SO4 contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38565] = ["H2SO4 contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38566] = ["BC contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38567] = ["BC contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38568] = ["OM contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38569] = ["OM contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38570] = ["Sea-salt contrib. to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38571] = ["Sea-salt contrib. to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38572] = ["Dust contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38573] = ["Dust contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38900] = ["Plume scvnging Nuc-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38901] = ["Plume scavenging Nuc-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38902] = ["Plume scavenging Nuc-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38903] = ["Plume scavenging Nuc-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38904] = ["Plume scavenging Nuc-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38905] = ["Plume scvnging Ait-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38906] = ["Plume scavenging Ait-sol BC (mol/s)", "", "", "", ""] -atm_stashvar[38907] = ["Plume scavenging Ait-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38908] = ["Plume scavenging Ait-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38909] = ["Plume scavenging Ait-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38910] = ["Plume scavenging Ait-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38911] = ["Plume scvnging acc-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38912] = ["Plume scavenging acc-sol BC (mol/s)", "", "", "", ""] -atm_stashvar[38913] = ["Plume scavenging acc-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38914] = ["Plume scavenging acc-sol Cl (mol/s)", "", "", "", ""] -atm_stashvar[38915] = ["Plume scavenging acc-sol Na (mol/s)", "", "", "", ""] -atm_stashvar[38916] = ["Plume scavenging acc-sol Dust(mol/s)", "", "", "", ""] -atm_stashvar[38917] = ["Plume scavenging acc-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38918] = ["Plume scavenging acc-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38919] = ["Plume scavenging acc-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38920] = ["Plume scvnging cor-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38921] = ["Plume scavenging cor-sol BC (mol/s)", "", "", "", ""] -atm_stashvar[38922] = ["Plume scavenging cor-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38923] = ["Plume scavenging cor-sol Cl (mol/s)", "", "", "", ""] -atm_stashvar[38924] = ["Plume scavenging cor-sol Na (mol/s)", "", "", "", ""] -atm_stashvar[38925] = ["Plume scavenging cor-sol Dust(mol/s)", "", "", "", ""] -atm_stashvar[38926] = ["Plume scavenging cor-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38927] = ["Plume scavenging cor-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38928] = ["Plume scavenging cor-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38929] = ["Plume scavenging Ait-ins BC (mol/s)", "", "", "", ""] -atm_stashvar[38930] = ["Plume scavenging Ait-ins OM (mol/s)", "", "", "", ""] -atm_stashvar[38931] = ["Plume scavenging acc-ins Dust(mol/s)", "", "", "", ""] -atm_stashvar[38932] = ["Plume scavenging cor-ins Dust(mol/s)", "", "", "", ""] -atm_stashvar[39001] = ["ANALYSIS TEMPERATURE ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[39002] = ["MODEL TEMPERATURE AFTER NUDGING", "", "", "", ""] -atm_stashvar[39003] = ["TEMPERATURE INCREMENT DUE TO NUDG", "", "", "", ""] -atm_stashvar[39004] = ["TEMPERATURE INCREMENT DUE TO OTHER", "", "", "", ""] -atm_stashvar[39005] = ["TEMPERATURE RELAXATION PARAMETER", "", "", "", ""] -atm_stashvar[39006] = ["ANALYSIS U WIND ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[39007] = ["U COMPNT OF WIND AFTER NUDGING", "", "", "", ""] -atm_stashvar[39008] = ["U WIND INCREMENT DUE TO NUDGING", "", "", "", ""] -atm_stashvar[39009] = ["U WIND INCREMENT DUE TO OTHER", "", "", "", ""] -atm_stashvar[39010] = ["U WIND RELAXATION PARAMETER", "", "", "", ""] -atm_stashvar[39011] = ["ANALYSIS V WIND ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[39012] = ["V COMPNT OF WIND AFTER NUDGING", "", "", "", ""] -atm_stashvar[39013] = ["V WIND INCREMENT DUE TO NUDGING", "", "", "", ""] -atm_stashvar[39014] = ["V WIND INCREMENT DUE TO OTHER", "", "", "", ""] -atm_stashvar[39015] = ["V WIND RELAXATION PARAMETER", "", "", "", ""] -atm_stashvar[44001] = ["Karbou surface emissivity 23.8 GHz", "", "", "", ""] -atm_stashvar[44002] = ["Karbou surf emiss (stdev) 23.8 GHz", "", "", "", ""] -atm_stashvar[44003] = ["Karbou surface emissivity 31.4 GHz", "", "", "", ""] -atm_stashvar[44004] = ["Karbou surf emiss (stdev) 31.4 GHz", "", "", "", ""] -atm_stashvar[44005] = ["Karbou surface emissivity 50.0 GHz", "", "", "", ""] -atm_stashvar[44006] = ["Karbou surf emiss (stdev) 50.0 GHz", "", "", "", ""] -atm_stashvar[44007] = ["Karbou surface emissivity 89.0 GHz", "", "", "", ""] -atm_stashvar[44008] = ["Karbou surf emiss (stdev) 89.0 GHz", "", "", "", ""] -atm_stashvar[44009] = ["Karbou surface emissivity 150.0 GHz", "", "", "", ""] -atm_stashvar[44010] = ["Karbou surf emiss (stdev) 150.0 GHz", "", "", "", ""] -atm_stashvar[44011] = ["DISTANCE OFF-SHORE", "", "", "", ""] -atm_stashvar[44012] = ["MW Surface Emissivity", "", "", "", ""] -atm_stashvar[44013] = ["MW Surface Emissivity (stdev)", "", "", "", ""] -atm_stashvar[50001] = ["Ox PROD: HO2+NO", "", "", "", ""] -atm_stashvar[50002] = ["Ox PROD: MeOO+NO", "", "", "", ""] -atm_stashvar[50003] = ["Ox PROD: NO+RO2", "", "", "", ""] -atm_stashvar[50004] = ["Ox PROD: OH+INORGANIC ACID", "", "", "", ""] -atm_stashvar[50005] = ["Ox PROD: OH+ORGANIC NITRATE", "", "", "", ""] -atm_stashvar[50006] = ["Ox PROD: ORGANIC NITRATE PHOTOLYSIS", "", "", "", ""] -atm_stashvar[50007] = ["Ox PROD: OH + PAN-TYPE REACTIONS", "", "", "", ""] -atm_stashvar[50011] = ["Ox LOSS: O(1D)+H2O", "", "", "", ""] -atm_stashvar[50012] = ["Ox LOSS: MINOR LOSS REACTIONS", "", "", "", ""] -atm_stashvar[50013] = ["Ox LOSS: HO2+O3", "", "", "", ""] -atm_stashvar[50014] = ["Ox LOSS: OH+O3", "", "", "", ""] -atm_stashvar[50015] = ["Ox LOSS: O3+ALKENE", "", "", "", ""] -atm_stashvar[50016] = ["Ox LOSS: N2O5+H2O", "", "", "", ""] -atm_stashvar[50017] = ["Ox LOSS: NO3 CHEMICAL LOSS", "", "", "", ""] -atm_stashvar[50021] = ["Ox BUDGET: O3 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50022] = ["Ox BUDGET: NOy DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50031] = ["Ox BUDGET: NOy WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50041] = ["RXN FLUX: OH+CH4 (CH4 LIFETIME) TROP", "", "", "", ""] -atm_stashvar[50042] = ["RXN FLUX: NO3+C5H8->ISON", "", "", "", ""] -atm_stashvar[50043] = ["RXN FLUX: NO+ISO2->ISON", "", "", "", ""] -atm_stashvar[50044] = ["RXN FLUX: H2O2 PRODUCTION", "", "", "", ""] -atm_stashvar[50045] = ["RXN FLUX: ROOH PRODUCTION", "", "", "", ""] -atm_stashvar[50046] = ["RXN FLUX: HONO2 PRODUCTION (HNO3)", "", "", "", ""] -atm_stashvar[50051] = ["STE: O3", "", "", "", ""] -atm_stashvar[50052] = ["TENDENCY: O3 (TROP ONLY)", "", "", "", ""] -atm_stashvar[50053] = ["TROPOSPHERIC O3", "", "", "", ""] -atm_stashvar[50054] = ["TENDENCY: O3 (WHOLE ATMOS)", "", "", "", ""] -atm_stashvar[50061] = ["AIR MASS DIAGNOSTIC (TROP ONLY)", "", "", "", ""] -atm_stashvar[50062] = ["TROPOSPHERIC MASK", "", "", "", ""] -atm_stashvar[50063] = ["AIR MASS DIAGNOSTIC (WHOLE ATMOS)", "", "", "", ""] -atm_stashvar[50071] = ["CO BUDGET: CO LOSS VIA OH+CO", "", "", "", ""] -atm_stashvar[50072] = ["CO BUDGET: CO PROD VIA HCHO+OH/NO3", "", "", "", ""] -atm_stashvar[50073] = ["CO BUDGET: CO PROD VIA MGLY+OH/NO3", "", "", "", ""] -atm_stashvar[50074] = ["CO BUDGET: CO MISC PROD&O3+MACR/ISOP", "", "", "", ""] -atm_stashvar[50075] = ["CO BUDGET: CO PROD VIA HCHO PHOT RAD", "", "", "", ""] -atm_stashvar[50076] = ["CO BUDGET: CO PROD VIA HCHO PHOT MOL", "", "", "", ""] -atm_stashvar[50077] = ["CO BUDGET: CO PROD VIA MGLY PHOTOL", "", "", "", ""] -atm_stashvar[50078] = ["CO BUDGET: CO PROD VIA MISC PHOTOL", "", "", "", ""] -atm_stashvar[50079] = ["CO BUDGET: CO DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50081] = ["LIGHTNING NOx EMISSIONS 3D", "", "", "", ""] -atm_stashvar[50082] = ["LIGHTNING DIAGNOSTIC: TOT FLASHES 2D", "", "", "", ""] -atm_stashvar[50083] = ["LIGHTNING DIAG: CLD TO GRND FLSH 2D", "", "", "", ""] -atm_stashvar[50084] = ["LIGHTNING DIAG: CLD TO CLD FLSH 2D", "", "", "", ""] -atm_stashvar[50085] = ["LIGHTNING DIAG: TOTAL N PRODUCED 2D", "", "", "", ""] -atm_stashvar[50091] = ["STRATOSPHERIC OH PRODUCTION", "", "", "", ""] -atm_stashvar[50092] = ["STRATOSPHERIC OH LOSS", "", "", "", ""] -atm_stashvar[50101] = ["STRAT O3 PROD: O2+PHOTON->O(3P)+O(3P", "", "", "", ""] -atm_stashvar[50102] = ["STRAT O3 PROD: O2+PHOTON->O(3P)+O(1D", "", "", "", ""] -atm_stashvar[50103] = ["STRAT O3 PROD: HO2 + NO", "", "", "", ""] -atm_stashvar[50104] = ["STRAT O3 PROD: MeOO + NO", "", "", "", ""] -atm_stashvar[50111] = ["STRAT O3 LOSS: Cl2O2 + PHOTON", "", "", "", ""] -atm_stashvar[50112] = ["STRAT O3 LOSS: BrO + ClO", "", "", "", ""] -atm_stashvar[50113] = ["STRAT O3 LOSS: HO2 + O3", "", "", "", ""] -atm_stashvar[50114] = ["STRAT O3 LOSS: ClO + HO2", "", "", "", ""] -atm_stashvar[50115] = ["STRAT O3 LOSS: BrO + HO2", "", "", "", ""] -atm_stashvar[50116] = ["STRAT O3 LOSS: O(3P) + ClO", "", "", "", ""] -atm_stashvar[50117] = ["STRAT O3 LOSS: O(3P) + NO2", "", "", "", ""] -atm_stashvar[50118] = ["STRAT O3 LOSS: O(3P) + HO2", "", "", "", ""] -atm_stashvar[50119] = ["STRAT O3 LOSS: O3 + H", "", "", "", ""] -atm_stashvar[50120] = ["STRAT O3 LOSS: O(3P) + O3", "", "", "", ""] -atm_stashvar[50121] = ["STRAT O3 LOSS: NO3 + PHOTON", "", "", "", ""] -atm_stashvar[50122] = ["STRAT O3 LOSS: O(1D) + H2O", "", "", "", ""] -atm_stashvar[50123] = ["STRAT O3 LOSS: HO2 + NO3", "", "", "", ""] -atm_stashvar[50124] = ["STRAT O3 LOSS: OH + NO3", "", "", "", ""] -atm_stashvar[50125] = ["STRAT O3 LOSS: NO3 + HCHO", "", "", "", ""] -atm_stashvar[50131] = ["STRAT MISC: O3 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50132] = ["STRAT MISC: NOy DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50133] = ["STRAT MISC: NOy WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50140] = ["DMS + OH => SO2 + MeOO + HCHO", "", "", "", ""] -atm_stashvar[50141] = ["DMS + OH => 0.6SO2 + 0.4DMSO + MeOO", "", "", "", ""] -atm_stashvar[50142] = ["DMS + NO3 => SO2 + HONO2 + MeOO", "", "", "", ""] -atm_stashvar[50143] = ["DMSO + OH => 0.6SO2 + 0.4MSA", "", "", "", ""] -atm_stashvar[50144] = ["CS2 + OH => SO2 + COS", "", "", "", ""] -atm_stashvar[50145] = ["H2S + OH => SO2", "", "", "", ""] -atm_stashvar[50146] = ["COS + OH => SO2", "", "", "", ""] -atm_stashvar[50147] = ["Monoterp + OH => Sec_org", "", "", "", ""] -atm_stashvar[50148] = ["Monoterp + O3 => Sec_org", "", "", "", ""] -atm_stashvar[50149] = ["Monoterp + NO3 => Sec_org", "", "", "", ""] -atm_stashvar[50150] = ["SO2 + OH => HO2 + H2SO4", "", "", "", ""] -atm_stashvar[50151] = ["SO2 + H2O2 => NULL0", "", "", "", ""] -atm_stashvar[50152] = ["SO2 + O3 => NULL1", "", "", "", ""] -atm_stashvar[50153] = ["SO2 + O3 => NULL2", "", "", "", ""] -atm_stashvar[50154] = ["SO2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50155] = ["SO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50156] = ["NO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50157] = ["CH4 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50158] = ["CO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50159] = ["HCHO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50160] = ["C2H6 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50161] = ["C3H8 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50162] = ["Me2CO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50163] = ["MeCHO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50164] = ["C5H8 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50165] = ["C4H10 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50166] = ["C2H4 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50167] = ["C3H6 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50168] = ["TOLUENE surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50169] = ["oXYLENE surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50170] = ["CH3OH surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50171] = ["H2 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50172] = ["NO emiss from aircraft (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50173] = ["NO2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50174] = ["HNO3 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50175] = ["H2O2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50176] = ["CH4 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50177] = ["MeOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50178] = ["EtOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50179] = ["PAN DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50180] = ["i-PrOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50181] = ["O3S DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50182] = ["ISOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50183] = ["MVKOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50184] = ["ORGNIT DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50185] = ["H2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50186] = ["s-BuOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50187] = ["NO3 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50188] = ["N2O5 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50189] = ["HO2NO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50190] = ["HONO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50191] = ["H2O2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50192] = ["HCHO WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50193] = ["HO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50194] = ["MeOO WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50195] = ["MeOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50196] = ["EtOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50197] = ["i-PrOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50198] = ["ISOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50199] = ["ISON WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50200] = ["MGLY WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50201] = ["MVKOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50202] = ["ORGNIT WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50203] = ["CH3OH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50204] = ["s-BuOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50205] = ["GLY WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50206] = ["O3 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50207] = ["OH as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50208] = ["NO3 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50209] = ["HO2 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50210] = ["H2O2 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50211] = ["Monoterp surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50212] = ["NVOC surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50213] = ["NH3 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50214] = ["DMS surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50215] = ["SO2 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50216] = ["SO2 high lev emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50217] = ["SO2 natural emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50218] = ["Nitric Acid Trihydrate (kg/kg)", "", "", "", ""] -atm_stashvar[50219] = ["Ozone column in Dobson Units", "", "", "", ""] -atm_stashvar[50220] = ["Tropospheric CH4 burden in moles", "", "", "", ""] -atm_stashvar[50221] = ["Tropospheric O3 burden in moles", "", "", "", ""] -atm_stashvar[50222] = ["Tropospheric OH burden in moles", "", "", "", ""] -atm_stashvar[50223] = ["Stratospheric CH4 burden in moles", "", "", "", ""] -atm_stashvar[50224] = ["Pressure of PV-THETA tropopause (Pa)", "", "", "", ""] -atm_stashvar[50226] = ["Stratospheric CH4 loss rate (mol/s)", "", "", "", ""] -atm_stashvar[50227] = ["Total reactive nitrogen, NOy (VMR)", "", "", "", ""] -atm_stashvar[50228] = ["Photolysis rate JO1D (s-1)", "", "", "", ""] -atm_stashvar[50229] = ["Photolysis rate JNO2 (s-1)", "", "", "", ""] -atm_stashvar[50230] = ["Non-methane VOC (ug (C) m-3)", "", "", "", ""] -atm_stashvar[50231] = ["Atmospheric Burden of CH4 in moles", "", "", "", ""] -atm_stashvar[50232] = ["Atmospheric Burden of CO in moles", "", "", "", ""] -atm_stashvar[50233] = ["Atmospheric Burden of N2O in moles", "", "", "", ""] -atm_stashvar[50234] = ["Atmospheric Burden of CFC12 in moles", "", "", "", ""] -atm_stashvar[50235] = ["Atmospheric Burden of CFC11 in moles", "", "", "", ""] -atm_stashvar[50236] = ["Atmospheric Burden of CH3Br in moles", "", "", "", ""] -atm_stashvar[50237] = ["Atmospheric Burden of H2 in moles", "", "", "", ""] -atm_stashvar[50238] = ["H2O production from chemistry", "", "", "", ""] -atm_stashvar[50239] = ["H2O loss from chemistry", "", "", "", ""] -atm_stashvar[50240] = ["Specific humidity change from UKCA", "", "", "", ""] -atm_stashvar[50245] = ["Photolysis rate JO2 (s-1)", "", "", "", ""] -atm_stashvar[50246] = ["Photolysis rate JO3P (s-1)", "", "", "", ""] -atm_stashvar[50247] = ["RXN FLUX: CH4 OXIDATION", "", "", "", ""] -atm_stashvar[50248] = ["RXN FLUX: RC(O)O2+NO2 (PAN PROD)", "", "", "", ""] -atm_stashvar[50249] = ["RXN FLUX: RO2+HO2", "", "", "", ""] -atm_stashvar[50250] = ["RXN FLUX: RO2+NO3", "", "", "", ""] -atm_stashvar[50251] = ["RXN FLUX: RO2+RO2", "", "", "", ""] -atm_stashvar[50254] = ["Gross Chemical Prod: O(1D)", "", "", "", ""] -atm_stashvar[50255] = ["UKCA Theta Grid Cell Volume (m^3)", "", "", "", ""] -atm_stashvar[50256] = ["Aerosol surface area in PSC chem", "", "", "", ""] -atm_stashvar[50300] = ["C5H8 ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50301] = ["Monoterp ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50302] = ["MeOH ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50303] = ["Me2CO ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[51001] = ["O3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51002] = ["NO MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51003] = ["NO3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51004] = ["NO2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51005] = ["N2O5 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51006] = ["HO2NO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51007] = ["HONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51008] = ["H2O2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51009] = ["CH4 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51010] = ["CO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51011] = ["HCHO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51012] = ["MeOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51013] = ["HONO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51014] = ["C2H6 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51015] = ["EtOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51016] = ["MeCHO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51017] = ["PAN MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51018] = ["C3H8 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51019] = ["n-PrOOH MASS MIX RATIO ON PRESS LEV", "", "", "", ""] -atm_stashvar[51020] = ["i-PrOOH MASS MIX RATIO ON PRESS LEV", "", "", "", ""] -atm_stashvar[51021] = ["EtCHO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51022] = ["Me2CO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51023] = ["MeCOCH2OOH MASS MIX RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51024] = ["PPAN MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51025] = ["MeONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51026] = ["O3S MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51027] = ["C5H8 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51028] = ["ISOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51029] = ["ISON MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51030] = ["MACR MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51031] = ["MACROOH MASS MIX RATIO ON PRESS LEV", "", "", "", ""] -atm_stashvar[51032] = ["MPAN MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51033] = ["HACET MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51034] = ["MGLY MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51035] = ["NALD MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51036] = ["HCOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51037] = ["MeCO3H MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51038] = ["MeCO2H MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51039] = ["MVK MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51040] = ["MVKOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51041] = ["Cl MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51042] = ["ClO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51043] = ["Cl2O2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51044] = ["OClO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51045] = ["Br MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51047] = ["BrCl MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51048] = ["BrONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51049] = ["N2O MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51051] = ["HOCl MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51052] = ["HBr MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51053] = ["HOBr MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51054] = ["ClONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51055] = ["CFCl3 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51056] = ["CF2Cl2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51057] = ["MeBr MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51058] = ["N MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51059] = ["O3P MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51060] = ["ORGNIT MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51069] = ["CH3OH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51070] = ["H2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51071] = ["DMS MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51072] = ["SO2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51073] = ["H2SO4 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51074] = ["MSA MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51075] = ["DMSO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51076] = ["NH3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51077] = ["CS2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51078] = ["COS MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51079] = ["H2S MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51080] = ["H MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51081] = ["OH MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51082] = ["HO2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51083] = ["MeOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51084] = ["EtOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51085] = ["MeCO3 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51086] = ["n-PrOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51087] = ["i-PrOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51088] = ["EtCO3 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51089] = ["MeCOCH2OO MASS MIX RATIO ON PR LEVS", "", "", "", ""] -atm_stashvar[51090] = ["MeOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51091] = ["MONOTERPENE MMR ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[51092] = ["SEC_ORG MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51093] = ["C3H6 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51094] = ["SO3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51095] = ["C4H9OOH MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51096] = ["MEK MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51097] = ["TOLUENE MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51098] = ["LUMPED N (as NO2) MMR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51099] = ["LUMPED Br (as BrO) MMR ON P LEVELS", "", "", "", ""] -atm_stashvar[51100] = ["LUMPED Cl (as HCl) MMR ON P LEVELS", "", "", "", ""] -atm_stashvar[51101] = ["NUCL MODE (SOL) NUMBER ON PRESS LEV", "", "", "", ""] -atm_stashvar[51102] = ["NUCL MODE (SOL) H2SO4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51103] = ["AITK MODE (SOL) NUMBER ON PRESS LEV", "", "", "", ""] -atm_stashvar[51104] = ["AITK MODE (SOL) H2SO4 ON PRESS LEV", "", "", "", ""] -atm_stashvar[51105] = ["AITK MODE (SOL) BC ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51106] = ["AITK MODE (SOL) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51107] = ["ACCUM MODE (SOL) NBR ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51108] = ["ACCUM MODE (SOL) H2SO4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51109] = ["ACCUM MODE (SOL) BC ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51110] = ["ACCUM MODE (SOL) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51111] = ["ACCUM MODE (SOL) SEASALT ON PR LEVS", "", "", "", ""] -atm_stashvar[51112] = ["ACCUM MODE (SOL) DUST ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51113] = ["COARSE MODE (SOL) NBR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51114] = ["COARSE MODE (SOL) H2SO4 ON PRS LEVS", "", "", "", ""] -atm_stashvar[51115] = ["COARSE MODE (SOL) BC ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51116] = ["COARSE MODE (SOL) OM ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51117] = ["COARSE MODE (SOL) SEASALT ON PR LEV", "", "", "", ""] -atm_stashvar[51118] = ["COARSE MODE (SOL) DUST ON PRES LEVS", "", "", "", ""] -atm_stashvar[51119] = ["AITK MODE (INS) NBR ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51120] = ["AITK MODE (INS) BC ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51121] = ["AITK MODE (INS) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51122] = ["ACCUM MODE (INS) NBR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51123] = ["ACCUM MODE (INS) DUST ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51124] = ["COARSE MODE (INS) NBR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51125] = ["COARSE MODE (INS) DUST ON PRESS LEV", "", "", "", ""] -atm_stashvar[51126] = ["NUCL MODE (SOL) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51127] = ["AITK MODE (SOL) SEASALT ON PRS LEVS", "", "", "", ""] -atm_stashvar[51128] = ["NUCL MODE (SOL) OM2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51129] = ["AITK MODE (SOL) OM2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51130] = ["ACCUM MODE (SOL) OM2 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51131] = ["COARSE MODE (SOL) OM2 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51132] = ["NUCL MODE (SOL) NH4 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51133] = ["AITK MODE (SOL) NH4 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51134] = ["ACCUM MODE (SOL) NH4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51135] = ["COARSE MODE (SOL) NH4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51136] = ["NUCL MODE (SOL) NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51137] = ["AITK MODE (SOL) NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51138] = ["ACCUM MODE (SOL) NO3 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51139] = ["COARSE MODE (SOL) NO3 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51149] = ["PASSIVE O3 MMR ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[51150] = ["AGE OF AIR (SEC) ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51151] = ["UKCA NON-TRANS SPEC 151 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51152] = ["UKCA NON-TRANS SPEC 152 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51153] = ["UKCA NON-TRANS SPEC 153 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51154] = ["UKCA NON-TRANS SPEC 154 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51155] = ["UKCA NON-TRANS SPEC 155 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51156] = ["UKCA NON-TRANS SPEC 156 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51157] = ["UKCA NON-TRANS SPEC 157 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51158] = ["UKCA NON-TRANS SPEC 158 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51159] = ["UKCA NON-TRANS SPEC 159 IN PLEV RETD", "", "", "", ""] -atm_stashvar[51160] = ["UKCA NON-TRANS SPEC 160 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51161] = ["UKCA NON-TRANS SPEC 161 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51162] = ["UKCA NON-TRANS SPEC 162 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51163] = ["UKCA NON-TRANS SPEC 163 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51164] = ["UKCA NON-TRANS SPEC 164 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51165] = ["UKCA NON-TRANS SPEC 165 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51166] = ["UKCA NON-TRANS SPEC 166 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51167] = ["UKCA NON-TRANS SPEC 167 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51168] = ["UKCA NON-TRANS SPEC 168 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51169] = ["UKCA NON-TRANS SPEC 169 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51170] = ["UKCA NON-TRANS SPEC 170 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51171] = ["UKCA NON-TRANS SPEC 171 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51172] = ["UKCA NON-TRANS SPEC 172 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51921] = ["DRY PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[51922] = ["DRY PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[51923] = ["DRY PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[51924] = ["DRY PARTICLE DIAMETER AITKEN-INS", "", "", "", ""] -atm_stashvar[51925] = ["DRY PARTICLE DIAMETER ACCUMULATN-INS", "", "", "", ""] -atm_stashvar[51926] = ["DRY PARTICLE DIAMETER COARSE-INSOL", "", "", "", ""] -atm_stashvar[51927] = ["WET PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[51928] = ["WET PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[51929] = ["WET PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[51930] = ["PTCL MASS DENSITY AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[51931] = ["PTCL MASS DENSITY ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[51932] = ["PTCL MASS DENSITY COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[51933] = ["PTCL MASS DENSITY AITKEN-INS", "", "", "", ""] -atm_stashvar[51934] = ["PTCL MASS DENSITY ACCUM.-INS", "", "", "", ""] -atm_stashvar[51935] = ["PTCL MASS DENSITY COARSE-INS", "", "", "", ""] -atm_stashvar[51936] = ["H2SO4 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51937] = ["BC PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51938] = ["OM1 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51939] = ["NO3 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51940] = ["OM2 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51941] = ["H2O PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51942] = ["H2SO4 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51943] = ["BC PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51944] = ["OM1 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51945] = ["SS PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51946] = ["NO3 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51947] = ["DU PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51948] = ["OM2 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51949] = ["CL PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51950] = ["NA PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51951] = ["H2O PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51952] = ["H2SO4 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51953] = ["BC PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51954] = ["OM1 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51955] = ["SSALT PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51956] = ["NO3 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51957] = ["DU PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51958] = ["OM2 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51959] = ["CL PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51960] = ["NA PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51961] = ["H2O PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51962] = ["BC PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[51963] = ["OM1 PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[51964] = ["DU PARTIAL VOLUME CONC (ACC-INS)", "", "", "", ""] -atm_stashvar[51965] = ["DU PARTIAL VOLUME CONC (COR-INS)", "", "", "", ""] -atm_stashvar[51966] = ["Aero surf area (cm2/cm3) ON P LEVS", "", "", "", ""] -atm_stashvar[51967] = ["CDNC. ^-1/3 (m-1) ON P LEVELS", "", "", "", ""] -atm_stashvar[51968] = ["CDNC (m-3) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[51969] = ["Stratospheric HO2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51970] = ["Stratospheric OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51971] = ["Stratospheric O(1D) MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51972] = ["Stratospheric O(3P) MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51973] = ["HO2 loss on aerosol (s-1) ON P LEVS", "", "", "", ""] -atm_stashvar[51974] = ["N2O5 loss on aerosol (s-1) ON P LEVS", "", "", "", ""] -atm_stashvar[51975] = ["HOC6H5CH3O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51976] = ["HOC5H8O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51977] = ["CH3COCH(O2)CH2OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51978] = ["CHOCH(OH)CO2CH3CHO MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51979] = ["C6H5CH2O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51980] = ["CH3CHO2CH2OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51981] = ["CH2O2CH2OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51982] = ["CH3COCH(O2)CH3 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51983] = ["CH3COCH2O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51984] = ["CH3COC2O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51985] = ["C2H5COO2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51986] = ["i-C2H7O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51987] = ["s-C4H9O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51988] = ["n-C2H7O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51989] = ["CH3COO2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51990] = ["C2H5O2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51991] = ["CH3O2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51992] = ["HCl MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51993] = ["HO2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51994] = ["BrO MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51995] = ["OH MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51996] = ["NO2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51997] = ["O(1D) MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51998] = ["O(3P) MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51999] = ["HEAVYSIDE FUNC FOR P LEVEL DIAGS", "", "", "", ""] -atm_stashvar[52001] = ["Ox PRD:HO2+NO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52002] = ["Ox PRD:MeOO+NO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52003] = ["Ox PRD:NO+RO2 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52004] = ["Ox PRD:OH+INORG ACID ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52005] = ["Ox PRD:OH+ORG NITR ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52006] = ["Ox PRD:ORG NITR PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52007] = ["Ox PRD:OH+PAN REACN ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52011] = ["Ox LOSS:O(1D)+H2O ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52012] = ["Ox LOSS:MINOR REACN ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52013] = ["Ox LOSS:HO2+O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52014] = ["Ox LOSS:OH+O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52015] = ["Ox LOSS:O3+ALK ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52016] = ["Ox LOSS:N2O5+H2O ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52017] = ["Ox LOSS:NO3 CHEM LOSS ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52021] = ["Ox BDGT:O3 DRY DEP(3D) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52022] = ["Ox BDGT:NOy DRY DEP(3D) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52031] = ["Ox BDGT:NOy WET DEP(3D) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52041] = ["FLUX:OH+CH4 (CH4 LIFETIME) ON PR LEV", "", "", "", ""] -atm_stashvar[52042] = ["FLUX:NO3+C5H8->ISON ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52043] = ["FLUX:NO+ISO2->ISON ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52044] = ["FLUX:H2O2 PROD ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52045] = ["FLUX:ROOH PROD ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52046] = ["FLUX:HONO2 PROD (HNO3) ON PRES LEVS", "", "", "", ""] -atm_stashvar[52051] = ["STE: O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52052] = ["TEND:O3 (TROP ONLY) ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52053] = ["TROPOSPHERIC O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52054] = ["TEND:O3 (WHOLE ATMOS) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52061] = ["AIR MASS DIAG(TROP) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52062] = ["TROPOSPHERIC MASK ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52063] = ["AIR MASS DIAG(WHOLE ATM) ON PRS LEV", "", "", "", ""] -atm_stashvar[52071] = ["CO BDG:LOSS OH+CO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52072] = ["CO BDG:PROD HCHO+OH/NO3 ON PRS LEVS", "", "", "", ""] -atm_stashvar[52073] = ["CO BDG:PROD MGLY+OH/NO3 ON PRS LEVS", "", "", "", ""] -atm_stashvar[52074] = ["CO BDG: MISC PROD ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52075] = ["CO BDG:PROD HCHO PHOT RAD ON PR LEVS", "", "", "", ""] -atm_stashvar[52076] = ["CO BDG:PROD HCHO PHOT MOL ON PR LEVS", "", "", "", ""] -atm_stashvar[52077] = ["CO BDG:PROD MGLY PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52078] = ["CO BDG:PROD MISC PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52079] = ["CO BDG:CO DRY DEP(3D) ON PRESS LEVEL", "", "", "", ""] -atm_stashvar[52081] = ["LIT NOx EMISS 3D ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52091] = ["STRAT OH PROD ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52092] = ["STRAT OH LOSS ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52101] = ["STRO3 PRD:O2+PHOT O(3P) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52102] = ["STRO3 PRD:O2+PHOT O(1D) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52103] = ["STRO3 PRD: HO2+NO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52104] = ["STRO3 PRD: MeOO+NO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52111] = ["STRO3 LOSS:Cl2O2+PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52112] = ["STRO3 LOSS:BrO+ClO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52113] = ["STRO3 LOSS:HO2+O3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52114] = ["STRO3 LOSS:ClO+HO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52115] = ["STRO3 LOSS:BrO+HO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52116] = ["STRO3 LOSS:O3P+ClO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52117] = ["STRO3 LOSS:O3P+NO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52118] = ["STRO3 LOSS:O3P+HO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52119] = ["STRO3 LOSS:O3+H ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52120] = ["STRO3 LOSS:O3P+O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52121] = ["STRO3 LOSS:NO3+PHOT ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52122] = ["STRO3 LOSS:O1D+H2O ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52123] = ["STRO3 LOSS: HO2+NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52124] = ["STRO3 LOSS: OH+NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52125] = ["STRO3 LOSS: NO3+HCHO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52131] = ["STRAT MISC:O3 DRY DP(3D) ON PRS LEV", "", "", "", ""] -atm_stashvar[52132] = ["STRAT MISC:NOy DRY DP(3D) ON PRS LEV", "", "", "", ""] -atm_stashvar[52133] = ["STRAT MISC:NOy WET DP(3D) ON PRS LEV", "", "", "", ""] -atm_stashvar[52140] = ["DMS+OH=>SO2+MeOO+HCHO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52141] = ["DMS+OH=>SO2+DMSO+MeOO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52142] = ["DMS+NO3=>SO2+HONO2+MeOO ON PRESS LEV", "", "", "", ""] -atm_stashvar[52143] = ["DMSO+OH=>SO2+MSA ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52144] = ["CS2+OH=>SO2+COS ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52145] = ["H2S + OH => SO2 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52146] = ["COS + OH => SO2 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52147] = ["Monoterp+OH=>Sec_org ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52148] = ["Monoterp+O3=>Sec_org ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52149] = ["Monoterp+NO3=>Sec_org ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52150] = ["SO2+OH=>HO2+H2SO4 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52151] = ["SO2 + H2O2 => NULL0 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52152] = ["SO2 + O3 => NULL1 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52153] = ["SO2 + O3 => NULL2 ON PRESSURE LEVEL", "", "", "", ""] -atm_stashvar[52154] = ["SO2 DRY DEP (3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52155] = ["SO2 WET DEP (3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52172] = ["NO aircrft ems(kg m-2 s-1) ON PR LEV", "", "", "", ""] -atm_stashvar[52173] = ["NO2 DRY DEP (3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52174] = ["HNO3 DRY DEP (3D) ON PRESSURE LEVEL", "", "", "", ""] -atm_stashvar[52175] = ["H2O2 DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52176] = ["CH4 DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52177] = ["MeOOH DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52178] = ["EtOOH DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52179] = ["PAN DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52180] = ["i-PrOOH DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52181] = ["O3S DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52182] = ["ISOOH DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52183] = ["MVKOOH DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52184] = ["ORGNIT DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52185] = ["H2 DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52186] = ["s-BuOOH DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52187] = ["NO3 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52188] = ["N2O5 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52189] = ["HO2NO2 WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52190] = ["HONO2 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52191] = ["H2O2 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52192] = ["HCHO WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52193] = ["HO2 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52194] = ["MeOO WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52195] = ["MeOOH WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52196] = ["EtOOH WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52197] = ["i-PrOOH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52198] = ["ISOOH WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52199] = ["ISON WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52200] = ["MGLY WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52201] = ["MVKOOH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52202] = ["ORGNIT WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52203] = ["CH3OH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52204] = ["s-BuOOH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52205] = ["GLY WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52206] = ["O3 Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52207] = ["OH Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52208] = ["NO3 Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52209] = ["HO2 Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52210] = ["H2O2 Offl oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52218] = ["NAT mass mixing ratio on press levs", "", "", "", ""] -atm_stashvar[52219] = ["O3 Column in Dobson Units on p levs", "", "", "", ""] -atm_stashvar[52227] = ["NOy (VMR) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52228] = ["Photolysis rate JO1D on press levs", "", "", "", ""] -atm_stashvar[52229] = ["Photolysis rate JNO2 on press levs", "", "", "", ""] -atm_stashvar[52230] = ["Non-methane VOC (ug C m-3) on p levs", "", "", "", ""] -atm_stashvar[52245] = ["Photolysis rate JO2 on press levs", "", "", "", ""] -atm_stashvar[52246] = ["Photolysis rate JO3P on press levs", "", "", "", ""] -atm_stashvar[52247] = ["RXN FLUX: CH4 OXIDATION ON PLEVS", "", "", "", ""] -atm_stashvar[52248] = ["RXN: RC(O)O2+NO2 (PAN PROD) ON PLEV", "", "", "", ""] -atm_stashvar[52249] = ["RXN FLUX: RO2+HO2 ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52250] = ["RXN FLUX: RO2+NO3 ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52251] = ["RXN FLUX: RO2+RO2 ON PRESSSURE LEVS", "", "", "", ""] -atm_stashvar[52254] = ["Gross Chem Prod : O(1D) On PLEVS", "", "", "", ""] -atm_stashvar[52256] = ["Aerosol surf area in PSC chem plevs", "", "", "", ""] -atm_stashvar[53181] = ["Temperature Inc: Idealised (K/step)", "", "", "", ""] -atm_stashvar[53182] = ["water vapour Inc: Ideal (kg/kg/step)", "", "", "", ""] -atm_stashvar[53185] = ["U wind Inc: Idealised (m/s/step)", "", "", "", ""] -atm_stashvar[53186] = ["V wind Inc: Idealised (m/s/step)", "", "", "", ""] -atm_stashvar[53190] = ["Pot. temp. Inc: Idealised (K/step)", "", "", "", ""] -atm_stashvar[53201] = ["Column vapour added: Ideal (kg/m2/s)", "", "", "", ""] -atm_stashvar[53202] = ["Potential temperature ref. prof (K)", "", "", "", ""] -atm_stashvar[53203] = ["Water vapour reference profile kg/kg", "", "", "", ""] -atm_stashvar[53204] = ["U wind reference profile (m/s)", "", "", "", ""] -atm_stashvar[53205] = ["V wind reference profile (m/s)", "", "", "", ""] -atm_stashvar[53206] = ["Col energy change due to dT (J/m2)", "", "", "", ""] -atm_stashvar[53207] = ["Col energy change due to dU (J/m2)", "", "", "", ""] -atm_stashvar[53208] = ["Col energy change due to dV (J/m2)", "", "", "", ""] -atm_stashvar[54101] = ["NUCLEATION MODE (SOL) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54102] = ["NUCLEATION MODE (SOL) H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54103] = ["AITKEN MODE (SOL) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54104] = ["AITKEN MODE (SOL) H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54105] = ["AITKEN MODE (SOL) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54106] = ["AITKEN MODE (SOL) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54107] = ["ACCUMULATION MODE (SOL) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54108] = ["ACCUMULATION MODE(SOL)H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54109] = ["ACCUMULATION MODE (SOL) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54110] = ["ACCUMULATION MODE (SOL) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54111] = ["ACC MODE (SOL) SEA SALT MMR CLIM", "", "", "", ""] -atm_stashvar[54112] = ["ACCUMULATION MODE(SOL) DUST MMR CLIM", "", "", "", ""] -atm_stashvar[54113] = ["COARSE MODE (SOLUBLE) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54114] = ["COARSE MODE (SOLUBLE) H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54115] = ["COARSE MODE (SOLUBLE) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54116] = ["COARSE MODE (SOLUBLE) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54117] = ["COARSE MODE (SOL) SEA SALT MMR CLIM", "", "", "", ""] -atm_stashvar[54118] = ["COARSE MODE (SOLUBLE) DUST MMR CLIM", "", "", "", ""] -atm_stashvar[54119] = ["AITKEN MODE (INSOLUBLE) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54120] = ["AITKEN MODE (INSOLUBLE) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54121] = ["AITKEN MODE (INSOLUBLE) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54122] = ["ACCUMULATION MODE (INSOL)NUMBER CLIM", "", "", "", ""] -atm_stashvar[54123] = ["ACCUMULATION MODE (INSOL) DUST CLIM", "", "", "", ""] -atm_stashvar[54124] = ["COARSE MODE (INSOLUBLE) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54125] = ["COARSE MODE (INSOL) DUST MMR CLIM", "", "", "", ""] -atm_stashvar[54126] = ["NUCLEATION MODE (SOL) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54127] = ["AITKEN MODE (SOL) SEA SALT MMR CLIM", "", "", "", ""] -atm_stashvar[54128] = ["NUCLEATION MODE (SOL) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54129] = ["AITKEN MODE (SOL) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54130] = ["ACCUMULATION MODE (SOL) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54131] = ["COARSE MODE (SOLUBLE) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54132] = ["NUCLEATION MODE (SOL) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54133] = ["AITKEN MODE (SOLUBLE) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54134] = ["ACCUMULATION MODE (SOL) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54135] = ["COARSE MODE (SOLUBLE) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54136] = ["NUCLEATION MODE (SOL) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54137] = ["AITKEN MODE (SOLUBLE) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54138] = ["ACCUMULATION MODE (SOL) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54139] = ["COARSE MODE (SOLUBLE) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54476] = ["GC CLOUD LIQUID FRACTION", "", "", "", ""] -atm_stashvar[54477] = ["GC TOTAL CDNC * CLOUD LIQ FRACTION", "", "", "", ""] -atm_stashvar[54921] = ["DRY PARTICLE DIAMETER AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54922] = ["DRY PARTICLE DIAMETER ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54923] = ["DRY PARTICLE DIAMETER COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54924] = ["DRY PARTICLE DIAMETER AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54925] = ["DRY PARTICLE DIAMETER ACC-INS CLIM", "", "", "", ""] -atm_stashvar[54926] = ["DRY PARTICLE DIAMETER COR-INS CLIM", "", "", "", ""] -atm_stashvar[54927] = ["WET PARTICLE DIAMETER AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54928] = ["WET PARTICLE DIAMETER ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54929] = ["WET PARTICLE DIAMETER COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54930] = ["PTCL MASS DENSITY AIT-SOL CLIM (WET)", "", "", "", ""] -atm_stashvar[54931] = ["PTCL MASS DENSITY ACC-SOL CLIM (WET)", "", "", "", ""] -atm_stashvar[54932] = ["PTCL MASS DENSITY COR-SOL CLIM (WET)", "", "", "", ""] -atm_stashvar[54933] = ["PTCL MASS DENSITY AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54934] = ["PTCL MASS DENSITY ACC-INS CLIM", "", "", "", ""] -atm_stashvar[54935] = ["PTCL MASS DENSITY COR-INS CLIM", "", "", "", ""] -atm_stashvar[54936] = ["H2SO4 PARTIAL VOL CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54937] = ["BC PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54938] = ["OM1 PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54939] = ["NO3 PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54940] = ["OM2 PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54941] = ["H2O PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54942] = ["H2SO4 PARTIAL VOL CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54943] = ["BC PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54944] = ["OM1 PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54945] = ["SS PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54946] = ["NO3 PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54947] = ["DU PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54948] = ["OM2 PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54949] = ["CL PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54950] = ["NA PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54951] = ["H2O PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54952] = ["H2SO4 PARTIAL VOL CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54953] = ["BC PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54954] = ["OM1 PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54955] = ["SS PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54956] = ["NO3 PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54957] = ["DU PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54958] = ["OM2 PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54959] = ["CL PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54960] = ["NA PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54961] = ["H2O PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54962] = ["BC PARTIAL VOLUME CONC AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54963] = ["OM1 PARTIAL VOLUME CONC AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54964] = ["DU PARTIAL VOLUME CONC ACC-INS CLIM", "", "", "", ""] -atm_stashvar[54965] = ["DU PARTIAL VOLUME CONC COR-INS CLIM", "", "", "", ""] -atm_stashvar[54967] = ["CLOUD DROP. No. CONC. ^-1/3 m-1 CLIM", "", "", "", ""] -atm_stashvar[54968] = ["CLOUD DROP. No. CONC. (m-3) CLIM", "", "", "", ""] - -class StashVar: - - def __init__(self, code, model=1): - # Allow this to be 0 to support some ancillary files - if model in [0, 1]: - # Should this be trapped so that we can return None? - try: - var = atm_stashvar[code] - except KeyError: - var = ["UNKNOWN VARIABLE","", "", "", ""] - else: - raise Exception("Model type %d not supported at the moment" % model) - self.long_name = var[0] - # Should there be a dictionary somewhere so this returns a unique - # set of names? unique as an optional argument? - if var[1]: - self.name = var[1] - else: - self.name = "field%d" % code - self.units = var[2] - self.standard_name = var[3] - self.code = code - if var[4]: - self.uniquename = var[4] - else: - self.uniquename = self.name diff --git a/src/stashvar_cmip6.py b/src/stashvar_cmip6.py deleted file mode 100644 index 04b047cc..00000000 --- a/src/stashvar_cmip6.py +++ /dev/null @@ -1,4734 +0,0 @@ -# UM STASH variable names from section and item numbers -# Where available variable names match PCMDI convention -# Fifth field is a unique name suitable for filenames or creating multiple -# variables in a single file - -atm_stashvar = {} - -atm_stashvar[2] = ["U COMPNT OF WIND AFTER TIMESTEP", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[3] = ["V COMPNT OF WIND AFTER TIMESTEP", "va", "m s-1", "northward_wind", ""] -atm_stashvar[4] = ["THETA AFTER TIMESTEP", "theta", "K", "air_potential_temperature", ""] -atm_stashvar[5] = ["OROGRAPHIC GRADIENT X COMPONENT", "orog_dx", "", "", ""] -atm_stashvar[6] = ["OROGRAPHIC GRADIENT Y COMPONENT", "orog_dy", "", "", ""] -atm_stashvar[7] = ["UNFILTERED OROGRAPHY", "orog_unfilt", "", "", ""] -atm_stashvar[8] = ["SOIL BULK DENSITY", "", "kg m-3", "", ""] -atm_stashvar[9] = ["SOIL MOISTURE CONTENT IN A LAYER", "", "", "", ""] -atm_stashvar[10] = ["SPECIFIC HUMIDITY AFTER TIMESTEP", "hus", "1", "specific_humidity", ""] -atm_stashvar[12] = ["QCF AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[13] = ["CONV CLOUD AMOUNT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[14] = ["CONV CLOUD BASE LEVEL NO. AFTER TS", "", "", "", ""] -atm_stashvar[15] = ["CONV CLOUD TOP LEVEL NO. AFTER TS", "", "", "", ""] -atm_stashvar[16] = ["CONV CLOUD LIQUID WATER PATH", "", "", "", ""] -atm_stashvar[17] = ["SILHOUETTE OROGRAPHIC ROUGHNESS", "", "", "", ""] -atm_stashvar[18] = ["HALF OF (PEAK TO TROUGH HT OF OROG)", "", "", "", ""] -atm_stashvar[20] = ["DEEP SOIL TEMP AFTER TIMESTEP", "tsl", "K", "soil_temperature", ""] -atm_stashvar[21] = ["CCRad : Lowest conv. cld base layer", "", "", "", ""] -atm_stashvar[22] = ["CANOPY WATER AFTER TIMESTEP KG/M2", "", "", "", ""] -atm_stashvar[23] = ["SNOW AMOUNT OVER LAND AFT TSTP KG/M2", "snw", "kg m-2", "surface_snow_amount", ""] -atm_stashvar[24] = ["SURFACE TEMPERATURE AFTER TIMESTEP", "ts", "K", "surface_temperature", ""] -atm_stashvar[25] = ["BOUNDARY LAYER DEPTH AFTER TIMESTEP", "bldepth", "m", "", ""] -atm_stashvar[26] = ["ROUGHNESS LENGTH AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[27] = ["SNOW EDGE AFTER TIMESTEP **", "", "", "", ""] -atm_stashvar[28] = ["SURFACE ZONAL CURRENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[29] = ["SURFACE MERID CURRENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[30] = ["LAND MASK (No halo) (LAND=TRUE)", "lmask", "1", "land_binary_mask", ""] -atm_stashvar[31] = ["FRAC OF SEA ICE IN SEA AFTER TSTEP", "sic", "1", "sea_ice_area_fraction", ""] -atm_stashvar[32] = ["SEA ICE DEPTH (MEAN OVER ICE) M", "sit", "m", "sea_ice_thickness", ""] -atm_stashvar[33] = ["OROGRAPHY (/STRAT LOWER BC)", "orog", "m", "surface_altitude", ""] -atm_stashvar[34] = ["STANDARD DEVIATION OF OROGRAPHY", "orog_sd", "", "", ""] -atm_stashvar[35] = ["OROGRAPHIC GRADIENT XX COMPONENT", "orog_dxx", "", "", ""] -atm_stashvar[36] = ["OROGRAPHIC GRADIENT XY COMPONENT", "orog_dxy", "", "", ""] -atm_stashvar[37] = ["OROGRAPHIC GRADIENT YY COMPONENT", "orog_dyy", "", "", ""] -atm_stashvar[38] = ["ICE EDGE IN THE ANCILLARY FILE ONLY", "", "", "", ""] -atm_stashvar[39] = ["SST ANOMALY", "", "", "", ""] -atm_stashvar[40] = ["VOL SMC AT WILTING AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[41] = ["VOL SMC AT CRIT PT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[43] = ["VOL SMC AT SATURATION AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[44] = ["SAT SOIL CONDUCTIVITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[46] = ["THERMAL CAPACITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[47] = ["THERMAL CONDUCTIVITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[48] = ["SATURATED SOIL WATER SUCTION", "", "", "", ""] -atm_stashvar[49] = ["SEA-ICE TEMPERATURE AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[50] = ["VEGETATION FRACTION AFTER TIMESTEP", "", "1", "vegetation_area_fraction", ""] -atm_stashvar[51] = ["ROOT DEPTH AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[52] = ["SNOW-FREE SURFACE ALBEDO AFTER TS", "", "1", "", ""] -atm_stashvar[53] = ["DEEP SNOW SURFACE ALBEDO AFTER TS", "", "1", "", ""] -atm_stashvar[54] = ["SURFACE RESISTANCE TO EVAP AFTER TS", "", "", "", ""] -atm_stashvar[55] = ["SURFACE CAPACITY AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[56] = ["INFILTRATION FACTOR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[57] = ["TOTAL AEROSOL EMISSIONS (FOR VIS)", "", "", "", ""] -atm_stashvar[58] = ["SULPHUR DIOXIDE EMISSIONS", "", "kg m-2 s-1", "", ""] -atm_stashvar[59] = ["DIMETHYL SULPHIDE EMISSIONS (ANCIL)", "", "kg m-2 s-1", "", ""] -atm_stashvar[60] = ["OZONE **", "", "", "", ""] -atm_stashvar[70] = ["TURBULENT KINETIC ENERGY", "", "", "", ""] -atm_stashvar[71] = ["SELF COVARIANCE OF THETAL'", "", "", "", ""] -atm_stashvar[72] = ["SELF COVARIANCE OF QW'", "", "", "", ""] -atm_stashvar[73] = ["CORRELATION OF THETAL' AND QW'", "", "", "", ""] -atm_stashvar[74] = ["HEIGHT OF MIXED LAYER FOR SHCU BUOY", "", "", "", ""] -atm_stashvar[75] = ["CLOUD NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[76] = ["RAIN NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[77] = ["RAIN THIRD MOMENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[78] = ["ICE NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[79] = ["SNOW NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[80] = ["SNOW THIRD MOMENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[81] = ["GRAUPEL NUMBER AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[82] = ["GRAUPEL THIRD MOMENT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[83] = ["ACTSOLLIQ AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[84] = ["ACTSOLRAIN AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[85] = ["ACTINSOLICE AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[86] = ["ACTSOLICE AEROSOL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[87] = ["ACTINSOLLIQUID AERO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[88] = ["ACTSOLNUMBER AERO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[89] = ["ACTINSOLNUMBER AER0 AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[90] = ["TOTAL AEROSOL (FOR VISIBILITY)", "", "", "", ""] -atm_stashvar[91] = ["LIGHTNING POTENTIAL", "", "", "", ""] -atm_stashvar[93] = ["RUNOFF COASTAL OUTFLOW POINT", "", "", "", ""] -atm_stashvar[95] = ["SNOW AMOUNT OVR SEAICE AFT TS KG/M2", "", "", "", ""] -atm_stashvar[96] = ["OCEAN NR. SURFACE CHLOROPHYLL(KGM-3)", "", "", "", ""] -atm_stashvar[97] = ["BARE SOIL MOMENTUM ROUGHNESS LENGTH", "", "", "", ""] -atm_stashvar[98] = ["LOWER BOUNDARY TENDENCIES (OROG)", "", "", "", ""] -atm_stashvar[99] = ["BDY LYR W-VARIANCE FOR MIXED PHASE", "", "", "", ""] -atm_stashvar[101] = ["SO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[102] = ["DIMETHYL SULPHIDE MIX RAT AFTER TS", "", "", "", ""] -atm_stashvar[103] = ["SO4 AITKEN MODE AEROSOL AFTER TSTEP", "", "", "", ""] -atm_stashvar[104] = ["SO4 ACCUM. MODE AEROSOL AFTER TSTEP", "", "", "", ""] -atm_stashvar[105] = ["SO4 DISSOLVED AEROSOL AFTER TSTEP", "", "", "", ""] -atm_stashvar[106] = ["H2O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[107] = ["NH3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[108] = ["FRESH SOOT MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[109] = ["AGED SOOT MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[110] = ["CLOUD SOOT MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[111] = ["FRESH BIOMASS SMOKE AFTER TSTEP", "", "", "", ""] -atm_stashvar[112] = ["AGED BIOMASS SMOKE AFTER TSTEP", "", "", "", ""] -atm_stashvar[113] = ["CLOUD BIOMASS SMOKE AFTER TSTEP", "", "", "", ""] -atm_stashvar[114] = ["FRESH OCFF MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[115] = ["AGED OCFF MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[116] = ["CLOUD OCFF MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[117] = ["ACC NITR MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[118] = ["DISS NITR MASS MIX RAT AFTER TSTEP", "", "", "", ""] -atm_stashvar[119] = ["MIN HEIGHT FOR BB HILEV EMISS / M", "", "", "", ""] -atm_stashvar[120] = ["MAX HEIGHT FOR BB HILEV EMISS / M", "", "", "", ""] -atm_stashvar[121] = ["3D NATURAL SO2 EMISSIONS KG/M2/S", "", "", "", ""] -atm_stashvar[122] = ["3D OH CONCENTRATIONS IN MCULES/CC", "", "", "", ""] -atm_stashvar[123] = ["3D HO2 CONCENTRATIONS IN MCULES/CC", "", "", "", ""] -atm_stashvar[124] = ["3D H2O2 MIX RATIO LIMIT FIELD", "", "", "", ""] -atm_stashvar[125] = ["3D OZONE MIX RAT FOR SULPHUR CYCLE", "", "", "", ""] -atm_stashvar[126] = ["HIGH LEVEL SO2 EMISSIONS KG/M2/S", "", "", "", ""] -atm_stashvar[127] = ["AMMONIA GAS EMISSIONS KG/M2/S", "", "", "", ""] -atm_stashvar[128] = ["FRESH SOOT SURF EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[129] = ["FRESH SOOT HI LEV EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[130] = ["FRESH BIOMASS SURF EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[131] = ["FRESH BIOMASS HI LEV EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[132] = ["DMS CONCENTRATION IN SEAWATER", "", "", "", ""] -atm_stashvar[133] = ["DMS OCEAN FLUX KG[S]/M**2/S", "", "", "", ""] -atm_stashvar[134] = ["FRESH OCFF SURF EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[135] = ["FRESH OCFF HI LEV EMISS KG/M2/S", "", "", "", ""] -atm_stashvar[136] = ["CONV PROG 1", "", "", "", ""] -atm_stashvar[137] = ["CONV PROG 2", "", "", "", ""] -atm_stashvar[138] = ["CONV PROG 3", "", "", "", ""] -atm_stashvar[139] = ["CONV PROG PRECIP", "", "", "", ""] -atm_stashvar[150] = ["W COMPNT OF WIND AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[151] = ["RIVER SEQUENCE", "", "", "", ""] -atm_stashvar[152] = ["RIVER DIRECTION", "", "", "", ""] -atm_stashvar[153] = ["RIVER WATER STORAGE M2", "", "", "", ""] -atm_stashvar[155] = ["ACCUMULATED SURFACE RUNOFF KG/M2", "", "", "", ""] -atm_stashvar[156] = ["ACCUMULATED SUB-SURFACE RUNOFF KG/M2", "", "", "", ""] -atm_stashvar[157] = ["GRIDBOX AREAS M2", "", "", "", ""] -atm_stashvar[160] = ["AREA DRAINING (INTEGER) PIXELS", "", "", "", ""] -atm_stashvar[161] = ["SLOPE %", "", "", "", ""] -atm_stashvar[162] = ["INITIAL FLOW VALUES M3/S", "", "", "", ""] -atm_stashvar[163] = ["X-COORDINATE OF OUTFLOW PIXEL", "", "", "", ""] -atm_stashvar[164] = ["Y-COORDINATE OF OUTFLOW PIXEL", "", "", "", ""] -atm_stashvar[165] = ["LAND-TYPE (RIVER/LAND/SEA)", "", "", "", ""] -atm_stashvar[166] = ["SURFACE STORAGE MM", "", "", "", ""] -atm_stashvar[167] = ["SUB-SURFACE STORAGE MM", "", "", "", ""] -atm_stashvar[168] = ["ACC. SURFACE INFLOW TO A PIXEL MM", "", "", "", ""] -atm_stashvar[169] = ["ACC. SUB-SURFACE INFLOW TO PIXEL MM", "", "", "", ""] -atm_stashvar[171] = ["NET DN SW RAD FLUX:OPEN SEA: CPL", "", "", "", ""] -atm_stashvar[172] = ["NET DWN SFC SW FLUX BLW 690NM: CPL", "", "", "", ""] -atm_stashvar[173] = ["NET DOWN SURFACE LW RAD FLUX: CPL", "", "", "", ""] -atm_stashvar[174] = ["NET DN LW RAD FLUX:OPEN SEA: CPL", "", "", "", ""] -atm_stashvar[176] = ["X-COMP SURF & BL WIND STR: CPL N/M2", "", "", "", ""] -atm_stashvar[177] = ["Y-COMP SURF & BL WIND STRL CPL N/M2", "", "", "", ""] -atm_stashvar[178] = ["WIND MIX EN'GY FL TO SEA: CPL W/M2", "", "", "", ""] -atm_stashvar[179] = ["SFC SH FLX FROM OPEN SEA: CPL W/M2", "", "", "", ""] -atm_stashvar[180] = ["SUBLIM. SURFACE (GBM): CPL KG/M2/S", "", "", "", ""] -atm_stashvar[181] = ["EVAP FROM OPEN SEA: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[182] = ["SEAICE SUBLIM CAT(GBM): CPL KG/M2/S", "", "", "", ""] -atm_stashvar[184] = ["Heat flx through sea ice (W/m2): CPL", "", "", "", ""] -atm_stashvar[185] = ["Heat flx in sea ice surface mlt: CPL", "", "", "", ""] -atm_stashvar[186] = ["LARGE SCALE RAIN RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[187] = ["LARGE SCALE SNOW RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[188] = ["CONVECTIVE RAIN RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[189] = ["CONVECTIVE SNOW RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[190] = ["ICEBERG CALVING FIELD: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[191] = ["10 METRE WIND SPEED ON C GRID: CPL", "", "", "", ""] -atm_stashvar[192] = ["River Runoff: CPL", "", "", "", ""] -atm_stashvar[193] = ["PRESSURE AT MEAN SEA LEVEL: CPL Pa", "", "", "", ""] -atm_stashvar[194] = ["SEA SURFACE FREEZING TEMPERATURE: K", "", "", "", ""] -atm_stashvar[195] = ["Seaice surface temperature (cat): CPL (K)", "", "", "", ""] -atm_stashvar[196] = ["SURFACE LEVEL OF CO2 TRACER (MMR): CPL", "", "", "", ""] -atm_stashvar[197] = ["TOTAL DUST DEPOSITION RATE: CPL KG/M2/S", "", "", "", ""] -atm_stashvar[201] = ["PSTAR PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[202] = ["U COMPNT PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[203] = ["V COMPNT PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[204] = ["THETA PERTURBATION- DUMMY", "", "", "", ""] -atm_stashvar[205] = ["FRACTIONAL LAND COVER", "", "", "", ""] -atm_stashvar[207] = ["CLAPP-HORNBERGER B COEFFICIENT", "", "", "", ""] -atm_stashvar[208] = ["LEAF AREA INDEX OF VEG FRACTION", "", "", "", ""] -atm_stashvar[209] = ["CANOPY HEIGHT OF VEGETATED FRACTION", "", "", "", ""] -atm_stashvar[211] = ["CCA WITH ANVIL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[212] = ["CCRad : CCW passed to radiation", "", "", "", ""] -atm_stashvar[213] = ["CANOPY CONDUCTANCE AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[214] = ["UNFROZEN SOIL MOISTURE FRAC AFTER TS", "", "", "", ""] -atm_stashvar[215] = ["FROZEN SOIL MOISTURE FRAC AFTER TS", "", "", "", ""] -atm_stashvar[216] = ["FRACTIONS OF SURFACE TYPES", "landCoverFrac", "1", "area_fraction", ""] -atm_stashvar[217] = ["LEAF AREA INDEX OF PLANT FUNC TYPES", "", "", "", ""] -atm_stashvar[218] = ["CANOPY HEIGHT OF PLANT FUNC TYPES M", "", "", "", ""] -atm_stashvar[219] = ["DISTURBED FRACTION OF VEGETATION", "", "", "", ""] -atm_stashvar[220] = ["SNOW-FREE ALBEDO OF SOIL", "", "1", "", ""] -atm_stashvar[221] = ["SNOW SOOT CONTENT", "", "", "", ""] -atm_stashvar[222] = ["NET ENERGY CHANGE THIS PERIOD J/M**2", "", "", "", ""] -atm_stashvar[223] = ["SOIL CARBON CONTENT KG C / M2", "", "", "", ""] -atm_stashvar[224] = ["ACCUMULATED NPP ON PFTS", "", "", "", ""] -atm_stashvar[225] = ["ACCUMULATED LEAF TURNOVER RATE PFTS", "", "", "", ""] -atm_stashvar[226] = ["ACCUMULATED PHENOL LEAF TRNVR PFTS", "", "", "", ""] -atm_stashvar[227] = ["ACCUMULATED WOOD RESPIRATION PFTS", "", "", "", ""] -atm_stashvar[228] = ["ACCUMULATED SOIL RESPIRATION", "", "", "", ""] -atm_stashvar[229] = ["CANOPY WATER ON TILES KG/M2", "", "", "", ""] -atm_stashvar[230] = ["CANOPY CAPACITY ON TILES KG/M2", "", "", "", ""] -atm_stashvar[231] = ["SNOW GRAIN SIZE ON TILES MICRONS", "", "", "", ""] -atm_stashvar[233] = ["SURFACE TEMPERATURE ON TILES K", "ts", "K", "", "ts_tile"] -atm_stashvar[234] = ["ROUGHNESS LENGTH ON TILES M", "", "", "", ""] -atm_stashvar[235] = ["NET MOISTURE FLUX IN PERIOD KG/M**2", "", "", "", ""] -atm_stashvar[236] = ["TILE MODIFIED INFILTRATION RATE", "", "", "", ""] -atm_stashvar[237] = ["DOWNWARD SW RADIATION ON TILES W/M2", "", "", "", ""] -atm_stashvar[238] = ["SURFACE DOWNWARD LW RADIATION W/M2", "rlds", "W m-2", "surface_downwelling_longwave_flux", ""] -atm_stashvar[239] = ["TOA - SURF UPWARD LW RADIATION W/M2", "", "", "", ""] -atm_stashvar[240] = ["SNOW AMOUNT ON TILES KG/M2", "", "", "", ""] -atm_stashvar[241] = ["CANOPY SNOW CAPACITY KG/M2", "", "", "", ""] -atm_stashvar[242] = ["SNOW BENEATH CANOPY KG/M2", "", "", "", ""] -atm_stashvar[243] = ["OBS/CLIM SNOW-FREE SURF SW ALBEDO", "", "1", "", ""] -atm_stashvar[244] = ["OBS/CLIM SNOW-FREE SURF VIS ALBEDO", "", "1", "", ""] -atm_stashvar[245] = ["OBS/CLIM SNOW-FREE SURF NIR ALBEDO", "", "1", "", ""] -atm_stashvar[246] = ["THERMAL ROUGHNESS LENGTH ON TILES M", "", "", "", ""] -atm_stashvar[249] = ["TRIFFID CO2 FLUX TO ATMOS KGC/M2/YR", "", "", "", ""] -atm_stashvar[250] = ["CO2 OCEAN FLUX KG/M**2/S", "", "", "", ""] -atm_stashvar[251] = ["CO2 SURFACE EMISSIONS KG/M**2/S", "co2emiss", "kg m-2 s-1", "", ""] -atm_stashvar[252] = ["CO2 3D TRACER MASS MIXING RATIO", "co2mmr", "", "", ""] -atm_stashvar[253] = ["DENSITY*R*R AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[254] = ["QCL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[255] = ["EXNER PRESSURE (RHO) AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[256] = ["ADVECTED U CMPT OF WIND AFTER TS", "", "", "", ""] -atm_stashvar[257] = ["ADVECTED V CMPT OF WIND AFTER TS", "", "", "", ""] -atm_stashvar[258] = ["ADVECTED W CMPT OF WIND AFTER TS", "", "", "", ""] -atm_stashvar[259] = ["NUMBER OF TURBULENT MIXING LEVELS", "", "", "", ""] -atm_stashvar[260] = ["LEVEL OF BASE OF DEEP STRATOCUMULUS", "", "", "", ""] -atm_stashvar[261] = ["LEVEL OF TOP OF DEEP STRATOCUMULUS", "", "", "", ""] -atm_stashvar[262] = ["BOUNDARY LAYER CONVECTION FLAG", "", "", "", ""] -atm_stashvar[263] = ["SD TURBULENT FLUC LAYER1 TEMP", "", "", "", ""] -atm_stashvar[264] = ["SD TURBULENT FLUC LAYER1 HUMIDITY", "", "", "", ""] -atm_stashvar[265] = ["AREA CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[266] = ["BULK CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[267] = ["LIQUID CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[268] = ["FROZEN CLOUD FRACTION IN EACH LAYER", "", "", "", ""] -atm_stashvar[269] = ["SURFACE ZONAL CURRENT AFTER TS PGRID", "", "", "", ""] -atm_stashvar[270] = ["SURFACE MERID CURRENT AFTER TS PGRID", "", "", "", ""] -atm_stashvar[271] = ["CLOUD ICE (CRYSTALS) AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[272] = ["RAIN AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[273] = ["GRAUPEL AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[274] = ["MEAN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[275] = ["STANDARD DEVN IN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[276] = ["EXP DECAY IN SOIL SAT HYD CONDUCTY", "", "", "", ""] -atm_stashvar[277] = ["INTEGRATED GAMMA DISTRIBUTION", "", "", "", ""] -atm_stashvar[278] = ["MEAN WATER TABLE DEPTH M", "", "", "", ""] -atm_stashvar[279] = ["SURFACE SATURATION FRACTION", "", "", "", ""] -atm_stashvar[280] = ["SURFACE WETLAND FRACTION", "", "", "", ""] -atm_stashvar[281] = ["SATURATION FRAC IN DEEP LAYER", "", "", "", ""] -atm_stashvar[282] = ["A_FSAT HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[283] = ["C_FSAT HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[284] = ["A_FWET HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[285] = ["C_FWET HYDROLOGY FITTING PARAMETER", "", "", "", ""] -atm_stashvar[286] = ["PREVIOUS DIST FRAC OF VEGETATION", "", "", "", ""] -atm_stashvar[287] = ["FAST TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[288] = ["MEDIUM TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[289] = ["SLOW TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[290] = ["DAILY ACCUMULATED LAKE FLUX KG/M2", "", "", "", ""] -atm_stashvar[291] = ["LAKE DEPTH (M)", "", "", "", ""] -atm_stashvar[292] = ["LAKE FETCH (M)", "", "", "", ""] -atm_stashvar[293] = ["LAKE MEAN TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[294] = ["LAKE MIXED-LAYER TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[295] = ["LAKE ICE SURFACE TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[296] = ["LAKE MIXED-LAYER DEPTH (M)", "", "", "", ""] -atm_stashvar[297] = ["LAKE ICE THICKNESS (M)", "", "", "", ""] -atm_stashvar[298] = ["LAKE T PROFILE SHAPE FACTOR", "", "", "", ""] -atm_stashvar[299] = ["LAKE GRD HT FLX / DTEMP (W m-2 K-1)", "", "", "", ""] -atm_stashvar[341] = ["TROPOPAUSE-BASED OZONE", "", "", "", ""] -atm_stashvar[342] = ["DEEP CONVECTIVE FLAG", "", "", "", ""] -atm_stashvar[343] = ["PAST CONVECTIVE PRECIP KG/M2/S", "", "", "", ""] -atm_stashvar[344] = ["PAST CONVECTIVE DEPTH M", "", "", "", ""] -atm_stashvar[345] = ["CCA FROM DEEP CONVECTION", "", "", "", ""] -atm_stashvar[346] = ["CCA FROM MID-LEVEL CONVECTION", "", "", "", ""] -atm_stashvar[347] = ["CCA FROM SHALLOW CONVECTION", "", "", "", ""] -atm_stashvar[348] = ["TOT PRECIP RATE AFTER TSTEP KG/M2/S", "", "", "", ""] -atm_stashvar[351] = ["CLIM BIOGENIC AEROSOL MMR", "", "", "", ""] -atm_stashvar[352] = ["CLIM BIOMASS-BURNING (FRESH) MMR", "", "", "", ""] -atm_stashvar[353] = ["CLIM BIOMASS-BURNING (AGED) MMR", "", "", "", ""] -atm_stashvar[354] = ["CLIM BIOMASS-BURNING (IN-CLOUD) MMR", "", "", "", ""] -atm_stashvar[355] = ["CLIM BLACK CARBON (FRESH) MMR", "", "", "", ""] -atm_stashvar[356] = ["CLIM BLACK CARBON (AGED) MMR", "", "", "", ""] -atm_stashvar[357] = ["CLIM SEA SALT (FILM MODE) NPM3", "", "", "", ""] -atm_stashvar[358] = ["CLIM SEA SALT (JET MODE) NPM3", "", "", "", ""] -atm_stashvar[359] = ["CLIM SULPHATE (ACCUMULATION MODE)MMR", "", "", "", ""] -atm_stashvar[360] = ["CLIM SULPHATE (AITKEN MODE) MMR", "", "", "", ""] -atm_stashvar[361] = ["CLIM SULPHATE (DISSOLVED) MMR", "", "", "", ""] -atm_stashvar[362] = ["CLIM DUST SIZE DIVISION 1 MMR", "", "", "", ""] -atm_stashvar[363] = ["CLIM DUST SIZE DIVISION 2 MMR", "", "", "", ""] -atm_stashvar[364] = ["CLIM DUST SIZE DIVISION 3 MMR", "", "", "", ""] -atm_stashvar[365] = ["CLIM DUST SIZE DIVISION 4 MMR", "", "", "", ""] -atm_stashvar[366] = ["CLIM DUST SIZE DIVISION 5 MMR", "", "", "", ""] -atm_stashvar[367] = ["CLIM DUST SIZE DIVISION 6 MMR", "", "", "", ""] -atm_stashvar[368] = ["CLIM ORG C FOSSIL FUEL (FRESH) MMR", "", "", "", ""] -atm_stashvar[369] = ["CLIM ORG C FOSSIL FUEL (AGED) MMR", "", "", "", ""] -atm_stashvar[370] = ["CLIM ORG C FOSSIL FUEL (IN-CLOUD)MMR", "", "", "", ""] -atm_stashvar[371] = ["CLIM DELTA AEROSOL MMR", "", "", "", ""] -atm_stashvar[376] = ["SNOW DEPTH ON GROUND ON TILES (M)", "", "", "", ""] -atm_stashvar[377] = ["SNOWPACK BULK DENSITY (KG M-3)", "", "", "", ""] -atm_stashvar[378] = ["SNOW ON THE CANOPY (KG M-2)", "", "", "", ""] -atm_stashvar[379] = ["SURFACE HEAT FLUX UNDER SNOW (W M-2)", "", "", "", ""] -atm_stashvar[380] = ["NUMBER OF SNOW LAYERS ON TILES", "", "", "", ""] -atm_stashvar[381] = ["SNOW LAYER THICKNESSES ON TILES (M)", "", "", "", ""] -atm_stashvar[382] = ["SNOW LYR ICE MASS ON TILES(KG M-2)", "", "", "", ""] -atm_stashvar[383] = ["SNOW LYR LIQUD MASS ON TILES(KG M-2)", "", "", "", ""] -atm_stashvar[384] = ["SNOW LAYER TEMPERATURE ON TILES (K)", "", "", "", ""] -atm_stashvar[385] = ["SNOW LAYER DENSITY ON TILES (KG M-3)", "", "", "", ""] -atm_stashvar[386] = ["SNOW LYR GRAIN SIZE ON TILES(MICRON)", "", "", "", ""] -atm_stashvar[387] = ["ETADOT AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[388] = ["THETAVD AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[389] = ["DRY RHO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[390] = ["PSIW SURFACE AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[391] = ["VAPOUR MIXING RATIO (mv) AFTER TS", "", "", "", ""] -atm_stashvar[392] = ["CLD LIQ MIXING RATIO (mcl) AFTER TS", "", "", "", ""] -atm_stashvar[393] = ["CLD ICE MIXING RATIO (mcf) AFTER TS", "", "", "", ""] -atm_stashvar[394] = ["RAIN MIXING RATIO (mr) AFTER TS", "", "", "", ""] -atm_stashvar[395] = ["GRAUPEL MIXING RATIO (mg) AFTER TS", "", "", "", ""] -atm_stashvar[396] = ["ICE CRY MIXING RAT. (mcf2) AFTER TS", "", "", "", ""] -atm_stashvar[397] = ["PSIW LID AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[398] = ["EXNER SURF AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[406] = ["EXNER PRESSURE AT THETA LEVELS", "", "", "", ""] -atm_stashvar[407] = ["PRESSURE AT RHO LEVELS AFTER TS", "", "", "", ""] -atm_stashvar[408] = ["PRESSURE AT THETA LEVELS AFTER TS", "", "", "", ""] -atm_stashvar[409] = ["SURFACE PRESSURE AFTER TIMESTEP", "ps", "Pa", "surface_air_pressure", ""] -atm_stashvar[410] = ["SW RADIATION INCREMENTS AFTER TS", "", "", "", ""] -atm_stashvar[411] = ["LW RADIATION INCREMENTS AFTER TS", "", "", "", ""] -atm_stashvar[412] = ["FRACTION OF SURFACE TYPE AFTER TS", "", "", "", ""] -atm_stashvar[413] = ["Sea ice concentration by categories", "", "", "", ""] -atm_stashvar[414] = ["Sea ice thickness GBM by categories", "", "", "", ""] -atm_stashvar[415] = ["Sea ice top layer temp by categories (K)", "", "", "", ""] -atm_stashvar[416] = ["Sea ice snow depth by categories", "", "", "", ""] -atm_stashvar[418] = ["Dust parent soil clay fraction (anc)", "", "", "", ""] -atm_stashvar[419] = ["Dust parent soil silt fraction (anc)", "", "", "", ""] -atm_stashvar[420] = ["Dust parent soil sand fraction (anc)", "", "", "", ""] -atm_stashvar[421] = ["Dust soil mass fraction div 1 (anc)", "", "", "", ""] -atm_stashvar[422] = ["Dust soil mass fraction div 2 (anc)", "", "", "", ""] -atm_stashvar[423] = ["Dust soil mass fraction div 3 (anc)", "", "", "", ""] -atm_stashvar[424] = ["Dust soil mass fraction div 4 (anc)", "", "", "", ""] -atm_stashvar[425] = ["Dust soil mass fraction div 5 (anc)", "", "", "", ""] -atm_stashvar[426] = ["Dust soil mass fraction div 6 (anc)", "", "", "", ""] -atm_stashvar[428] = ["Sea ice meltpond fraction by cats", "", "", "", ""] -atm_stashvar[429] = ["Sea ice meltpond depth by cats (m)", "", "", "", ""] -atm_stashvar[431] = ["Dust division 1 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[432] = ["Dust division 2 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[433] = ["Dust division 3 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[434] = ["Dust division 4 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[435] = ["Dust division 5 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[436] = ["Dust division 6 mass mixing ratio", "", "kg kg-1", "", ""] -atm_stashvar[440] = ["Seaice surf layer cond (cat)(W/m2/K)", "", "", "", ""] -atm_stashvar[441] = ["Seaice surface temperature (cat) (K)", "", "", "", ""] -atm_stashvar[442] = ["SOIL NITROGEN POOL (DPM) KG N / M2", "", "", "", ""] -atm_stashvar[443] = ["SOIL NITROGEN POOL (RPM) KG N / M2", "", "", "", ""] -atm_stashvar[444] = ["SOIL NITROGEN POOL (BIO) KG N / M2", "", "", "", ""] -atm_stashvar[445] = ["SOIL NITROGEN POOL (HUM) KG N / M2", "", "", "", ""] -atm_stashvar[446] = ["INORGANIC SOIL NITROGEN KG N / M2", "", "", "", ""] -atm_stashvar[447] = ["NITROGEN DEPOSITION (kgN/m2/s)", "", "", "", ""] -atm_stashvar[448] = ["CROP FRACTION", "", "", "", ""] -atm_stashvar[449] = ["CROP FRAC. AT PREV. TRIFFID CALL", "", "", "", ""] -atm_stashvar[458] = ["PASTURE FRACTION", "", "", "", ""] -atm_stashvar[459] = ["PASTURE FRAC. AT PREV. TRIFFID CALL", "", "", "", ""] -atm_stashvar[460] = ["PAR increments after timestep", "", "", "", ""] -atm_stashvar[466] = ["DPM SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[467] = ["RPM SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[468] = ["BIO SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[469] = ["HUM SOIL CARBON POOL KG C / M2", "", "", "", ""] -atm_stashvar[470] = ["ACCUMULATED DPM SOIL RESP", "", "", "", ""] -atm_stashvar[471] = ["ACCUMULATED RPM SOIL RESP", "", "", "", ""] -atm_stashvar[472] = ["ACCUMULATED BIO SOIL RESP", "", "", "", ""] -atm_stashvar[473] = ["ACCUMULATED HUM SOIL RESP", "", "", "", ""] -atm_stashvar[480] = ["PROGNOSTIC OZONE TRACER", "", "", "", ""] -atm_stashvar[481] = ["CARIOLLE PROD-LOSS (P-L)", "", "", "", ""] -atm_stashvar[482] = ["CARIOLLE O3 P-L WRT O3 MIX RATIO", "", "", "", ""] -atm_stashvar[483] = ["CARIOLLE O3 VOL MIXING RATIO", "", "", "", ""] -atm_stashvar[484] = ["CARIOLLE O3 P-L WRT TEMP", "", "", "", ""] -atm_stashvar[485] = ["CARIOLLE O3 CLIM TEMP", "", "", "", ""] -atm_stashvar[486] = ["CARIOLLE O3 P-L WRT O3 ABOVE PL", "", "", "", ""] -atm_stashvar[487] = ["CARIOLLE O3 COLUMN ABOVE PL", "", "", "", ""] -atm_stashvar[490] = ["DECOUPLED SCREEN TEMP ON TILES K", "", "", "", ""] -atm_stashvar[491] = ["DECOUPLED SCREEN TEMP ON SEA/ICE K", "", "", "", ""] -atm_stashvar[492] = ["TIME SINCE TRANSITION S", "", "", "", ""] -atm_stashvar[493] = ["CONVECTIVE DOWNDRAUGHT AT CLD BASE", "", "", "", ""] -atm_stashvar[494] = ["URBAN BUILDING HEIGHT", "", "", "", ""] -atm_stashvar[495] = ["URBAN HEIGHT TO WIDTH RATIO", "", "", "", ""] -atm_stashvar[496] = ["URBAN WIDTH RATIO", "", "", "", ""] -atm_stashvar[497] = ["URBAN DISPLACEMENT HEIGHT", "", "", "", ""] -atm_stashvar[498] = ["URBAN ZTM", "", "", "", ""] -atm_stashvar[499] = ["URBAN WALL ALBEDO", "", "1", "", ""] -atm_stashvar[500] = ["URBAN ROAD ALBEDO", "", "1", "", ""] -atm_stashvar[501] = ["URBAN WALL EMISSIVITY", "", "1", "", ""] -atm_stashvar[502] = ["URBAN ROAD EMISSIVITY", "", "1", "", ""] -atm_stashvar[505] = ["Land fraction in grid box", "sftlf", "1", "land_area_fraction", ""] -atm_stashvar[506] = ["LAND SURFACE TEMP AFTER TIMESTEP", "ts", "K", "surface_temperature_where_land", "ts_land"] -atm_stashvar[507] = ["OPEN SEA SURFACE TEMP AFTER TIMESTEP", "ts", "K", "surface_temperature_where_open_sea", "ts_sea"] -atm_stashvar[508] = ["SEA-ICE SURFACE TEMP AFTER TIMESTEP", "ts", "K", "surface_temperature", "ts_ice"] -atm_stashvar[509] = ["SEA ICE ALBEDO AFTER TS", "", "1", "", ""] -atm_stashvar[510] = ["MEAN LAND ALBEDO AFTER TS", "", "1", "", ""] -atm_stashvar[511] = ["INLANDBASINFLOW ATM GRID KG/M2/S", "", "", "", ""] -atm_stashvar[569] = ["COLDPOOL FRONT VECTR SUM X-CMPT(M/S)", "", "", "", ""] -atm_stashvar[570] = ["COLDPOOL FRONT VECTR SUM Y-CMPT(M/S)", "", "", "", ""] -atm_stashvar[571] = ["COLDPOOL FRONT SCALAR SUM (M/S)", "", "", "", ""] -atm_stashvar[572] = ["COLDPOOL REDUCED GRAVITY (M/S2)", "", "", "", ""] -atm_stashvar[573] = ["COLDPOOL DEPTH (M)", "", "", "", ""] -atm_stashvar[574] = ["COLDPOOL REMAIN COUNTER (ISOTROPIC)", "", "", "", ""] -atm_stashvar[575] = ["COLDPOOL REMAIN COUNTER (DIRECTED)", "", "", "", ""] -atm_stashvar[576] = ["TEMP OF TILED SUBSURFACE (K)", "", "", "", ""] -atm_stashvar[577] = ["PV tracer for radiation param", "", "", "", ""] -atm_stashvar[578] = ["PV tracer for SW param", "", "", "", ""] -atm_stashvar[579] = ["PV tracer for LW param", "", "", "", ""] -atm_stashvar[580] = ["PV tracer for microphysics param", "", "", "", ""] -atm_stashvar[581] = ["PV tracer for GWD param", "", "", "", ""] -atm_stashvar[582] = ["PV tracer for slow physics", "", "", "", ""] -atm_stashvar[583] = ["PV tracer for convection param", "", "", "", ""] -atm_stashvar[584] = ["PV tracer for Boundary Layer param", "", "", "", ""] -atm_stashvar[585] = ["PV tracer for stochastic physics", "", "", "", ""] -atm_stashvar[586] = ["PV tracer for cloud pressure", "", "", "", ""] -atm_stashvar[587] = ["PV tracer for IAU", "", "", "", ""] -atm_stashvar[588] = ["PV tracer for Nudging scheme", "", "", "", ""] -atm_stashvar[589] = ["Total dPV in a timestep", "", "", "", ""] -atm_stashvar[590] = ["PV tracer for advection", "", "", "", ""] -atm_stashvar[591] = ["PV tracer for Helmholtz solver", "", "", "", ""] -atm_stashvar[592] = ["PV tracer for Mass update", "", "", "", ""] -atm_stashvar[593] = ["Advection only PV", "", "", "", ""] -atm_stashvar[595] = ["BL PERT SCHEME RANDOM NUMB FIELD", "", "", "", ""] -atm_stashvar[596] = ["BL PERT SCHEME FLAG", "", "", "", ""] -atm_stashvar[600] = ["Theta tracer for initial theta", "", "", "", ""] -atm_stashvar[601] = ["Theta tracer for BL", "", "", "", ""] -atm_stashvar[602] = ["Theta tracer for BL mixing", "", "", "", ""] -atm_stashvar[603] = ["Theta tracer for BL Latent Heat", "", "", "", ""] -atm_stashvar[604] = ["Theta tracer for Convection", "", "", "", ""] -atm_stashvar[605] = ["Theta tracer for microphysics", "", "", "", ""] -atm_stashvar[606] = ["Theta tracer for radiation", "", "", "", ""] -atm_stashvar[607] = ["Theta tracer for SW radiation", "", "", "", ""] -atm_stashvar[608] = ["Theta tracer for LW radiation", "", "", "", ""] -atm_stashvar[609] = ["Theta tracer for slow physics", "", "", "", ""] -atm_stashvar[610] = ["Theta tracer for cloud rebalancing", "", "", "", ""] -atm_stashvar[1004] = ["TEMPERATURE AFTER SW RAD INCREMENTS", "", "", "", ""] -atm_stashvar[1101] = ["HORIZON ANGLE 1 (N)", "", "", "", ""] -atm_stashvar[1102] = ["HORIZON ANGLE 2 (NE)", "", "", "", ""] -atm_stashvar[1103] = ["HORIZON ANGLE 3 (E)", "", "", "", ""] -atm_stashvar[1104] = ["HORIZON ANGLE 4 (SE)", "", "", "", ""] -atm_stashvar[1105] = ["HORIZON ANGLE 5 (S)", "", "", "", ""] -atm_stashvar[1106] = ["HORIZON ANGLE 6 (SW)", "", "", "", ""] -atm_stashvar[1107] = ["HORIZON ANGLE 7 (W)", "", "", "", ""] -atm_stashvar[1108] = ["HORIZON ANGLE 8 (NW)", "", "", "", ""] -atm_stashvar[1109] = ["HORIZON ANGLE 9 (NNE)", "", "", "", ""] -atm_stashvar[1110] = ["HORIZON ANGLE 10 (ENE)", "", "", "", ""] -atm_stashvar[1111] = ["HORIZON ANGLE 11 (ESE)", "", "", "", ""] -atm_stashvar[1112] = ["HORIZON ANGLE 12 (SSE)", "", "", "", ""] -atm_stashvar[1113] = ["HORIZON ANGLE 13 (SSW)", "", "", "", ""] -atm_stashvar[1114] = ["HORIZON ANGLE 14 (WSW)", "", "", "", ""] -atm_stashvar[1115] = ["HORIZON ANGLE 15 (WNW)", "", "", "", ""] -atm_stashvar[1116] = ["HORIZON ANGLE 16 (NNW)", "", "", "", ""] -atm_stashvar[1130] = ["SOLID ANGLE FOR TRANSIT OBSERVER 1AU", "", "", "", ""] -atm_stashvar[1140] = ["COS SOLAR ZENITH ANGLE: MODEL TSTEP", "", "", "", ""] -atm_stashvar[1141] = ["DAYLIGHT FRACTION OF MODEL TIMESTEP", "", "", "", ""] -atm_stashvar[1142] = ["COS SOLAR ZENITH ANGLE: RAD TIMESTEP", "", "", "", ""] -atm_stashvar[1143] = ["DAYLIGHT FRACTION OF RADIATION TSTEP", "", "", "", ""] -atm_stashvar[1161] = ["TEMPERATURE INCR: swrad MINUS LH PC2", "", "", "", ""] -atm_stashvar[1181] = ["TEMPERATURE INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1182] = ["SPECIFIC HUMIDITY INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1183] = ["QCL INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1192] = ["BULK CLOUD VOL INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1193] = ["LIQUID CLOUD VOL INCR: swrad scheme", "", "", "", ""] -atm_stashvar[1194] = ["QCL INCR: swrad positive", "", "", "", ""] -atm_stashvar[1195] = ["QCL INCR: swrad negative", "", "", "", ""] -atm_stashvar[1198] = ["LIQ CLOUD VOL INCR: swrad positive", "", "", "", ""] -atm_stashvar[1199] = ["LIQ CLOUD VOL INCR: swrad negative", "", "", "", ""] -atm_stashvar[1200] = ["LIT MASK FOR SW RADIATION TIMESTEP", "", "", "", ""] -atm_stashvar[1201] = ["NET DOWN SURFACE SW FLUX: SW TS ONLY", "rss", "W m-2", "surface_net_downward_shortwave_flux", ""] -atm_stashvar[1202] = ["NET DOWN SURFACE SW FLUX: CORRECTED", "rss", "W m-2", "surface_net_downward_shortwave_flux", "rss_corr"] -atm_stashvar[1203] = ["NET DN SW RAD FLUX:OPEN SEA:SEA MEAN", "rss_sea", "", "", ""] -atm_stashvar[1204] = ["NET DOWN SURFACE SW FLUX BELOW 690NM", "", "", "", ""] -atm_stashvar[1205] = ["OUTGOING SW RAD FLUX (TOA):CORRECTED", "", "", "", ""] -atm_stashvar[1207] = ["INCOMING SW RAD FLUX (TOA): ALL TSS", "rsdt", "W m-2", "toa_incoming_shortwave_flux", ""] -atm_stashvar[1208] = ["OUTGOING SW RAD FLUX (TOA)", "rsut", "W m-2", "toa_outgoing_shortwave_flux", ""] -atm_stashvar[1209] = ["CLEAR-SKY (II) UPWARD SW FLUX (TOA)", "rsutcs", "W m-2", "toa_outgoing_shortwave_flux_assuming_clear_sky", ""] -atm_stashvar[1210] = ["CLEAR-SKY (II) DOWN SURFACE SW FLUX", "rsdscs", "W m-2", "surface_downwelling_shortwave_flux_in_air_assuming_clear_sky", ""] -atm_stashvar[1211] = ["CLEAR-SKY (II) UP SURFACE SW FLUX", "rsuscs", "W m-2", "surface_upwelling_shortwave_flux_in_air_assuming_clear_sky", ""] -atm_stashvar[1212] = ["DIRECT UV FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1213] = ["UPWARDS UV FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1214] = ["DOWNWARDS UV FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1215] = ["DIRECT SURFACE SW FLUX : CORRECTED", "", "", "", ""] -atm_stashvar[1216] = ["DIFFUSE SURFACE SW FLUX : CORRECTED", "", "", "", ""] -atm_stashvar[1217] = ["UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1218] = ["DOWNWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1219] = ["CLEAR-SKY UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1220] = ["CLEAR-SKY DOWNWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1221] = ["LAYER CLD LIQ RE * LAYER CLD WEIGHT", "", "", "", ""] -atm_stashvar[1223] = ["LAYER CLOUD WEIGHT FOR MICROPHYSICS", "", "", "", ""] -atm_stashvar[1224] = ["LAYER CLD LIQUID WATER PATH * WEIGHT", "", "", "", ""] -atm_stashvar[1225] = ["CONV CLOUD LIQ RE * CONV CLD WEIGHT", "", "", "", ""] -atm_stashvar[1226] = ["CONV CLOUD WEIGHT FOR MICROPHYSICS", "", "", "", ""] -atm_stashvar[1228] = ["CLEAR UPWARD SW AT TOA * AREA WEIGHT", "", "", "", ""] -atm_stashvar[1229] = ["CLEAR-SKY SW AREA WEIGHT", "", "", "", ""] -atm_stashvar[1230] = ["DIRECT SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1231] = ["DIFFUSE SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1232] = ["SW HEATING RATES: ALL TIMESTEPS", "", "", "", ""] -atm_stashvar[1233] = ["CLEAR-SKY SW HEATING RATES", "", "", "", ""] -atm_stashvar[1235] = ["TOTAL DOWNWARD SURFACE SW FLUX", "rsds", "W m-2", "surface_downwelling_shortwave_flux_in_air", ""] -atm_stashvar[1237] = ["NET DOWNWARD SW FLUX AT THE TROP.", "", "W m-2", "", ""] -atm_stashvar[1238] = ["UPWARD SW FLUX AT THE TROPOPAUSE", "", "W m-2", "", ""] -atm_stashvar[1241] = ["DROPLET NUMBER CONC * LYR CLOUD WGT", "", "", "", ""] -atm_stashvar[1242] = ["LAYER CLOUD LWC * LAYER CLOUD WEIGHT", "", "", "", ""] -atm_stashvar[1243] = ["SO4 CCN KG/M3 * COND SAMPLING WEIGHT", "", "", "", ""] -atm_stashvar[1244] = ["CONDITIONAL SAMPLING WEIGHT", "", "", "", ""] -atm_stashvar[1245] = ["2-D RE DISTRIBUTION * 2-D RE WEIGHT", "", "", "", ""] -atm_stashvar[1246] = ["WEIGHT FOR 2-D RE DISTRIBUTION", "", "", "", ""] -atm_stashvar[1247] = ["FILM-MODE SEA-SALT AEROSOL NUMBER", "", "", "", ""] -atm_stashvar[1248] = ["JET-MODE SEA-SALT AEROSOL NUMBER", "", "", "", ""] -atm_stashvar[1254] = ["2-D RE * WEIGHT - WARM CLOUDS ONLY", "", "", "", ""] -atm_stashvar[1255] = ["WEIGHT FOR WARM CLOUD 2-D RE", "", "", "", ""] -atm_stashvar[1257] = ["NET DOWN SW FLUX: LAND", "rss", "W m-2", "surface_net_downward_shortwave_flux", ""] -atm_stashvar[1258] = ["NET DN SW FLX:SEAICE:SEA MEAN", "", "W m-2", "", ""] -atm_stashvar[1259] = ["NET DN SW SOLID SFC FLUX BELOW 690NM", "", "W m-2", "", ""] -atm_stashvar[1260] = ["NET DN SW O SEA FLX BLW 690NM:SEA MN", "", "W m-2", "", ""] -atm_stashvar[1262] = ["WEIGHTED SW CLOUD EXTINCTION", "", "", "", ""] -atm_stashvar[1263] = ["WEIGHTS FOR CLOUD SW EXTINCTION", "", "", "", ""] -atm_stashvar[1264] = ["WEIGHTED SW LAYER CLOUD EXTINCTION", "", "", "", ""] -atm_stashvar[1265] = ["WEIGHTS FOR LAYER CLD SW EXTINCTION", "", "", "", ""] -atm_stashvar[1266] = ["WEIGHTED SW CONV. CLOUD EXTINCTION", "", "", "", ""] -atm_stashvar[1267] = ["WEIGHTS FOR CONV.CLD SW EXTINCTION", "", "", "", ""] -atm_stashvar[1268] = ["DIRECT SURFACE ALBEDO ON SW BANDS", "", "1", "", ""] -atm_stashvar[1269] = ["DIFFUSE SURFACE ALBEDO ON SW BANDS", "", "1", "", ""] -atm_stashvar[1270] = ["VIS ALBEDO SCALING TO OBS ON TILES", "", "1", "", ""] -atm_stashvar[1271] = ["NIR ALBEDO SCALING TO OBS ON TILES", "", "1", "", ""] -atm_stashvar[1272] = ["DIRECT FLUX FOR SPHERICAL GEOMETRY", "", "", "", ""] -atm_stashvar[1273] = ["CLEAR DIRECT FLUX (SPHERICAL GEOM)", "", "", "", ""] -atm_stashvar[1274] = ["CLEAN DIRECT FLUX (SPHERICAL GEOM)", "", "", "", ""] -atm_stashvar[1275] = ["CLEAR-CLEAN DIRECT FLUX (SPH GEOM)", "", "", "", ""] -atm_stashvar[1276] = ["DIRECT FLUX DIVERGENCE OVER LAYERS", "", "", "", ""] -atm_stashvar[1277] = ["CLEAR-SKY DIRECT FLUX DIVERGENCE", "", "", "", ""] -atm_stashvar[1278] = ["CLEAN-AIR DIRECT FLUX DIVERGENCE", "", "", "", ""] -atm_stashvar[1279] = ["CLEAR-CLEAN DIRECT FLUX DIVERGENCE", "", "", "", ""] -atm_stashvar[1280] = ["COLUMN-INTEGRATED Nd * SAMP. WEIGHT", "", "", "", ""] -atm_stashvar[1281] = ["SAMP. WEIGHT FOR COL. INT. Nd", "", "", "", ""] -atm_stashvar[1288] = ["DOWNWARD SURFACE UV FLUX", "", "W m-2", "", ""] -atm_stashvar[1289] = ["CLEAR-SKY DOWNWARD SURFACE UV FLUX", "", "W m-2", "", ""] -atm_stashvar[1290] = ["TOTAL DOWNWARD PAR FLUX AT SURFACE", "", "W m-2", "", ""] -atm_stashvar[1291] = ["DIRECT COMPONENT OF SURF PAR FLUX", "", "", "", ""] -atm_stashvar[1292] = ["MEAN SOLAR BEARING OVER RAD TS", "", "", "", ""] -atm_stashvar[1293] = ["SLOPE ASPECT", "", "", "", ""] -atm_stashvar[1294] = ["SLOPE ANGLE", "", "", "", ""] -atm_stashvar[1295] = ["OROG CORR FACTOR TO DIRECT SURF SW", "", "", "", ""] -atm_stashvar[1296] = ["EXTRA SW SURF FLUX AFTER OROG CORR", "", "", "", ""] -atm_stashvar[1298] = ["CDNC @CLOUD TOP * WEIGHT", "", "", "", ""] -atm_stashvar[1299] = ["WEIGHT FOR CDNC @CLOUD TOP", "", "", "", ""] -atm_stashvar[1408] = ["OUTGOING SW RAD FORCING (TOA)", "", "", "", ""] -atm_stashvar[1409] = ["CLEAR-SKY (II) UPWARD SW FORC.(TOA)", "", "W m-2", "", ""] -atm_stashvar[1410] = ["CLEAR-SKY (II) DOWN SURF. SW FORC.", "", "W m-2", "", ""] -atm_stashvar[1411] = ["CLEAR-SKY (II) UP SURF. SW FORC.", "", "W m-2", "", ""] -atm_stashvar[1417] = ["UPWARD SW FLUX ON LEVELS W/ FORCING", "", "W m-2", "", ""] -atm_stashvar[1418] = ["DOWNWARD SW FLUX ON LEVELS W/ FORC", "", "W m-2", "", ""] -atm_stashvar[1419] = ["CLEAR-SKY UP SW ON LEVELS W/ FORCING", "", "W m-2", "", ""] -atm_stashvar[1420] = ["CLEAR-SKY DOWN SW ON LEVELS W/ FORC", "", "W m-2", "", ""] -atm_stashvar[1433] = ["CLEAR-SKY SW HEATING RATES W/ FORC", "", "", "", ""] -atm_stashvar[1435] = ["TOTAL DOWNWARD SURF. SW FORCING", "", "", "", ""] -atm_stashvar[1437] = ["NET DOWNWARD SW AT TROP. W/ FORCING", "", "W m-2", "", ""] -atm_stashvar[1438] = ["UPWARD SW AT TROPOPAUSE W/ FORCING", "", "W m-2", "", ""] -atm_stashvar[1472] = ["DIRECT FLUX SPHERICAL GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1473] = ["CLEAR DIRECT FLUX SPH GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1474] = ["CLEAN DIRECT FLUX SPH GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1475] = ["CLR-CLN DIRECT FLX SPH GEOM 2nd CALL", "", "", "", ""] -atm_stashvar[1476] = ["DIRECT FLUX DIVERGENCE 2nd CALL", "", "", "", ""] -atm_stashvar[1477] = ["CLEAR-SKY DIRECT FLUX DIV 2nd CALL", "", "", "", ""] -atm_stashvar[1478] = ["CLEAN-AIR DIRECT FLUX DIV 2nd CALL", "", "", "", ""] -atm_stashvar[1479] = ["CLEAR-CLEAN DIRECT FLUX DIV 2nd CALL", "", "", "", ""] -atm_stashvar[1500] = ["SW DOWN OVER ICE, WGHTD (cats)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[1501] = ["SW DOWN OVER ICE, WGHTD (aggr)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[1502] = ["SW UP OVER ICE, WGHTED (cats)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[1503] = ["SW UP OVER ICE, WGHTED (aggr)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[1504] = ["SEA ICE ALBEDO, WEIGHTED (cats)", "", "1", "", ""] -atm_stashvar[1505] = ["SEA ICE ALBEDO, WEIGHTED (aggregate)", "", "1", "", ""] -atm_stashvar[1506] = ["TOTAL AOD IN LAYERS AND SW BANDS", "", "1", "", ""] -atm_stashvar[1507] = ["TOTAL SCATTERING AOD LAYERS/SW BANDS", "", "1", "", ""] -atm_stashvar[1508] = ["AERO ASYM (WGTD) IN LAYERS/SW BANDS", "", "", "", ""] -atm_stashvar[1509] = ["UPWARD SW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[1510] = ["DOWNWARD SW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[1511] = ["CLEAR UP SW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[1512] = ["CLEAR DOWN SW FLUX ON LEVS AND BANDS", "", "", "", ""] -atm_stashvar[1513] = ["SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1514] = ["CLEAR-SKY SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1515] = ["CLEAN-AIR SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1516] = ["CLEAR-CLEAN SW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1517] = ["CLEAN-AIR UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1518] = ["CLEAN-AIR DOWNWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1519] = ["CLEAR-CLEAN UPWARD SW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[1520] = ["CLEAR-CLEAN DOWNWARD SW FLUX ON LEVS", "", "", "", ""] -atm_stashvar[1521] = ["UPWARD SW FLUX ON LEVELS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1522] = ["DOWNWARD SW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1523] = ["CLEAR UP SW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1524] = ["CLR DOWN SW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1525] = ["UP SW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1526] = ["DOWN SW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1527] = ["CLR UP SW FLUX LEVS/BNDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[1528] = ["CLR DOWN SW FLUX LVS/BNDS W/GHG FORC", "", "", "", ""] -atm_stashvar[1529] = ["DIRECT FLUX SPH GEOM W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1530] = ["CLR DIRECT FLUX SPH GEOM W/ GHG FORC", "", "", "", ""] -atm_stashvar[1531] = ["DIRECT FLUX DIVERGENCE W/ GHG FORC", "", "", "", ""] -atm_stashvar[1532] = ["CLEAR DIRECT FLUX DIV W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1533] = ["DIRECT FLUX SPH BANDS W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1534] = ["CLR DIRECT FLUX SPH BANDS W/GHG FORC", "", "", "", ""] -atm_stashvar[1535] = ["DIRECT FLUX DIV BANDS W/ GHG FORCING", "", "", "", ""] -atm_stashvar[1536] = ["CLR DIRECT FLUX DIV BANDS W/GHG FORC", "", "", "", ""] -atm_stashvar[1537] = ["DIRECT FLUX (SPHERICAL GEOM) BANDS", "", "", "", ""] -atm_stashvar[1538] = ["CLEAR DIRECT FLUX (SPH GEOM) BANDS", "", "", "", ""] -atm_stashvar[1539] = ["CLEAN DIRECT FLUX (SPH GEOM) BANDS", "", "", "", ""] -atm_stashvar[1540] = ["CLR-CLN DIRECT FLUX (SPH GEOM) BANDS", "", "", "", ""] -atm_stashvar[1541] = ["DIRECT FLUX DIVERGENCE ON BANDS", "", "", "", ""] -atm_stashvar[1542] = ["CLEAR-SKY DIRECT FLUX DIV ON BANDS", "", "", "", ""] -atm_stashvar[1543] = ["CLEAN-AIR DIRECT FLUX DIV ON BANDS", "", "", "", ""] -atm_stashvar[1544] = ["CLEAR-CLEAN DIRECT FLUX DIV ON BANDS", "", "", "", ""] -atm_stashvar[1545] = ["CLEAN-AIR UP SW FLUX ON LEVELS/BANDS", "", "", "", ""] -atm_stashvar[1546] = ["CLEAN-AIR DOWN SW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[1547] = ["CLEAR-CLEAN UP SW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[1548] = ["CLEAR-CLEAN DOWN SW FLUX LEVS/BANDS", "", "", "", ""] -atm_stashvar[1550] = ["EASYAEROSOL EXTINCTION ON SW BANDS", "", "", "", ""] -atm_stashvar[1551] = ["EASYAEROSOL ABSORPTION ON SW BANDS", "", "", "", ""] -atm_stashvar[1552] = ["EASYAEROSOL SCATTERING ON SW BANDS", "", "", "", ""] -atm_stashvar[1553] = ["EASYAEROSOL ASY*SCA ON SW BANDS", "", "", "", ""] -atm_stashvar[1555] = ["TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1556] = ["CLEAR-SKY TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1557] = ["CLEAN-AIR TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1558] = ["CLEAR-CLEAN TRANSMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[1709] = ["UPWARD SW FLUX LEVS/BANDS W/ FORCING", "", "", "", ""] -atm_stashvar[1710] = ["DOWNWARD SW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[1711] = ["CLEAR UP SW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[1712] = ["CLEAR DOWN SW FLUX LEVS/BNDS W/ FORC", "", "", "", ""] -atm_stashvar[1713] = ["SW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1714] = ["CLEAR SW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1715] = ["CLEAN SW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1716] = ["CLR-CLN SW EMISSION SPEC 2nd CALL", "", "", "", ""] -atm_stashvar[1717] = ["CLEAN-AIR UPWARD SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1718] = ["CLEAN-AIR DOWNWARD SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1719] = ["CLEAR-CLEAN UPWARD SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1720] = ["CLEAR-CLEAN DOWN SW FLUX 2nd CALL", "", "", "", ""] -atm_stashvar[1737] = ["DIRECT FLUX SPH GEOM BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1738] = ["CLEAR DIRECT FLUX SPH BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1739] = ["CLEAN DIRECT FLUX SPH BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1740] = ["CLR-CLN DIRECT FLX SPH BAND 2nd CALL", "", "", "", ""] -atm_stashvar[1741] = ["DIRECT FLUX DIV ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1742] = ["CLEAR DIRECT FLUX DIV BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1743] = ["CLEAN DIRECT FLUX DIV BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1744] = ["CLR-CLN DIRECT FLX DIV BAND 2nd CALL", "", "", "", ""] -atm_stashvar[1745] = ["CLEAN UP SW FLUX ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1746] = ["CLEAN DOWN SW FLUX ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1747] = ["CLR-CLN UP SW FLUX ON BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1748] = ["CLR-CLN DOWN SW FLUX BANDS 2nd CALL", "", "", "", ""] -atm_stashvar[1755] = ["TRANSMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1756] = ["CLEAR TRANSMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1757] = ["CLEAN TRANSMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[1758] = ["CLR-CLN TRANSMISSION SPEC 2nd CALL", "", "", "", ""] -atm_stashvar[2004] = ["TEMPERATURE AFTER LW RAD INCREMENTS", "", "", "", ""] -atm_stashvar[2101] = ["SKYVIEW FACTOR", "", "", "", ""] -atm_stashvar[2110] = ["MASS USED FOR RAD LAYERS (kg/m2)", "", "", "", ""] -atm_stashvar[2111] = ["DENSITY USED FOR RAD LAYERS (kg/m3)", "", "", "", ""] -atm_stashvar[2112] = ["HEAT CAPACITY OF RAD LAYERS (J/K.m2)", "", "", "", ""] -atm_stashvar[2113] = ["PRESSURE USED FOR RAD LAYERS (Pa)", "", "", "", ""] -atm_stashvar[2114] = ["TEMPERATURE USED FOR RAD LAYERS (K)", "", "", "", ""] -atm_stashvar[2115] = ["PRESSURE USED FOR RAD LEVELS (Pa)", "", "", "", ""] -atm_stashvar[2116] = ["TEMPERATURE USED FOR RAD LEVELS (K)", "", "", "", ""] -atm_stashvar[2130] = ["SOLID ANGLE FOR OBSERVER AT 1AU", "", "", "", ""] -atm_stashvar[2161] = ["TEMPERATURE INCR: lwrad MINUS LH PC2", "", "", "", ""] -atm_stashvar[2181] = ["TEMPERATURE INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2182] = ["SPECIFIC HUMIDITY INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2183] = ["QCL INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2192] = ["BULK CLOUD VOL INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2193] = ["LIQUID CLOUD VOL INCR: lwrad scheme", "", "", "", ""] -atm_stashvar[2194] = ["QCL INCR: lwrad positive", "", "", "", ""] -atm_stashvar[2195] = ["QCL INCR: lwrad negative", "", "", "", ""] -atm_stashvar[2198] = ["LIQ CLOUD VOL INCR: lwrad positive", "", "", "", ""] -atm_stashvar[2199] = ["LIQ CLOUD VOL INCR: lwrad negative", "", "", "", ""] -atm_stashvar[2201] = ["NET DOWN SURFACE LW RAD FLUX", "rls", "W m-2", "surface_net_downward_longwave_flux", ""] -atm_stashvar[2203] = ["NET DN LW RAD FLUX:OPEN SEA:SEA MEAN", "", "", "", ""] -atm_stashvar[2204] = ["TOTAL CLOUD AMOUNT IN LW RADIATION", "clt", "1", "cloud_area_fraction", ""] -atm_stashvar[2205] = ["OUTGOING LW RAD FLUX (TOA)", "rlut", "W m-2", "toa_outgoing_longwave_flux", ""] -atm_stashvar[2206] = ["CLEAR-SKY (II) UPWARD LW FLUX (TOA)", "rlutcs", "W m-2", "toa_outgoing_longwave_flux_assuming_clear_sky", ""] -atm_stashvar[2207] = ["DOWNWARD LW RAD FLUX: SURFACE", "rlds", "W m-2", "surface_downwelling_longwave_flux_in_air", ""] -atm_stashvar[2208] = ["CLEAR-SKY (II) DOWN SURFACE LW FLUX", "rldscs", "W m-2", "surface_downwelling_longwave_flux_in_air_assuming_clear_sky", ""] -atm_stashvar[2217] = ["UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2218] = ["DOWNWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2219] = ["CLEAR-SKY UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2220] = ["CLEAR-SKY DOWNWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2228] = ["CLEAR UPWARD LW AT TOA * AREA WEIGHT", "", "", "", ""] -atm_stashvar[2229] = ["CLEAR-SKY LW AREA WEIGHT", "", "", "", ""] -atm_stashvar[2232] = ["LW HEATING RATES", "", "", "", ""] -atm_stashvar[2233] = ["CLEAR-SKY LW HEATING RATES", "", "", "", ""] -atm_stashvar[2237] = ["NET DOWNWARD LW FLUX AT THE TROP.", "", "", "", ""] -atm_stashvar[2238] = ["DOWNWARD LW FLUX AT THE TROPOPAUSE", "", "", "", ""] -atm_stashvar[2240] = ["AITKEN (SOLUBLE) ABS OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2241] = ["ACCUM (SOLUBLE) ABS OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2242] = ["COARSE (SOLUBLE) ABS OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2243] = ["AITKEN (INSOL) ABS OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2244] = ["ACCUM (INSOL) ABS OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2245] = ["COARSE (INSOL) ABS OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2251] = ["AITKEN MODE (SOLUBLE) STRATO AOD", "", "1", "", ""] -atm_stashvar[2252] = ["ACCUM MODE (SOLUBLE) STRATO AOD", "", "1", "", ""] -atm_stashvar[2253] = ["COARSE MODE (SOLUBLE) STRATO AOD", "", "1", "", ""] -atm_stashvar[2254] = ["AITKEN MODE (INSOL) STRATO AOD", "", "1", "", ""] -atm_stashvar[2255] = ["ACCUM MODE (INSOL) STRATO AOD", "", "1", "", ""] -atm_stashvar[2256] = ["COARSE MODE (INSOL) STRATO AOD", "", "1", "", ""] -atm_stashvar[2260] = ["OZONE MASS MIXING RATIO AFTER LW", "", "", "", ""] -atm_stashvar[2261] = ["TOTAL CLOUD AMOUNT ON LEVELS", "", "", "", ""] -atm_stashvar[2262] = ["WEIGHTED CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2263] = ["WEIGHTS FOR CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2264] = ["WEIGHTED LAYER CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2265] = ["WEIGHTS FOR LAYER CLD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2266] = ["WEIGHTED CONV.CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2267] = ["WEIGHTS FOR CONV.CLOUD ABSORPTIVITY", "", "", "", ""] -atm_stashvar[2269] = ["ISCCP CLOUD WEIGHTS", "", "", "", ""] -atm_stashvar[2270] = ["ISCCP CLOUD 0.3 <= tau", "", "", "", ""] -atm_stashvar[2271] = ["ISCCP CLOUD tau < 0.3", "", "", "", ""] -atm_stashvar[2272] = ["ISCCP CLOUD 0.3 <= tau < 1.3", "", "", "", ""] -atm_stashvar[2273] = ["ISCCP CLOUD 1.3 <= tau < 3.6", "", "", "", ""] -atm_stashvar[2274] = ["ISCCP CLOUD 3.6 <= tau < 9.4", "", "", "", ""] -atm_stashvar[2275] = ["ISCCP CLOUD 9.4 <= tau < 23.0", "", "", "", ""] -atm_stashvar[2276] = ["ISCCP CLOUD 23.0 <= tau < 60.0", "", "", "", ""] -atm_stashvar[2277] = ["ISCCP CLOUD 60.0 <= tau", "", "", "", ""] -atm_stashvar[2280] = ["Ozone Tropopause Index", "", "", "", ""] -atm_stashvar[2281] = ["Ozone Tropopause Height", "", "", "", ""] -atm_stashvar[2282] = ["Thermal Tropopause Index", "", "", "", ""] -atm_stashvar[2283] = ["Thermal Tropopause Height", "", "", "", ""] -atm_stashvar[2284] = ["SULPHATE OPTICAL DEPTH IN RADIATION", "aod_so4", "1", "", ""] -atm_stashvar[2285] = ["MINERAL DUST OPTICAL DEPTH IN RADN.", "aod_dust", "1", "", ""] -atm_stashvar[2286] = ["SEA SALT OPTICAL DEPTH IN RADIATION", "aod_ss", "1", "", ""] -atm_stashvar[2287] = ["SOOT OPTICAL DEPTH IN RADIATION", "aod_bc", "1", "", ""] -atm_stashvar[2288] = ["BIOMASS OPTICAL DEPTH IN RADIATION", "aod_biomass", "1", "", ""] -atm_stashvar[2289] = ["BIOGENIC OPTICAL DEPTH IN RADIATION", "aod_biogenic", "1", "", ""] -atm_stashvar[2290] = ["WEIGHTED ISCCP CLOUD ALBEDO", "", "1", "", ""] -atm_stashvar[2291] = ["WEIGHTED ISCCP CLOUD OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2292] = ["WEIGHTED ISCCP CLOUD TOP PRESSURE", "", "", "", ""] -atm_stashvar[2293] = ["WEIGHTED ISCCP TOTAL CLOUD AREA", "", "", "", ""] -atm_stashvar[2295] = ["FOSSIL FUEL ORG C OPTIC DEPTH IN RAD", "", "1", "", ""] -atm_stashvar[2296] = ["DELTA AEROSOL OPTICAL DEPTH IN RADN.", "", "1", "", ""] -atm_stashvar[2297] = ["AMMONIUM NITRATE OPTICAL DEPTH RADN.", "1", "", "", ""] -atm_stashvar[2298] = ["TOTAL OPTICAL DEPTH IN RADIATION", "", "1", "", ""] -atm_stashvar[2299] = ["ANGSTROM FROM TOTAL AOD IN RADIATION", "", "", "", ""] -atm_stashvar[2300] = ["AITKEN MODE (SOLUBLE) OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2301] = ["ACCUM MODE (SOLUBLE) OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2302] = ["COARSE MODE (SOLUBLE) OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2303] = ["AITKEN MODE (INSOL) OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2304] = ["ACCUM MODE (INSOL) OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2305] = ["COARSE MODE (INSOL) OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2308] = ["GRIDBOX LSC Qcl IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2309] = ["GRIDBOX LSC Qcf IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2310] = ["GRIDBOX CNV Qcl IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2311] = ["GRIDBOX CNV Qcf IN RADIATION KG/KG", "", "", "", ""] -atm_stashvar[2312] = ["GRIDBOX LIQ LSC CF IN RADIATION", "", "", "", ""] -atm_stashvar[2313] = ["GRIDBOX ICE LSC CF IN RADIATION", "", "", "", ""] -atm_stashvar[2314] = ["GRIDBOX LIQ CCA IN RADIATION", "", "", "", ""] -atm_stashvar[2315] = ["GRIDBOX ICE CCA IN RADIATION", "", "", "", ""] -atm_stashvar[2317] = ["CONVECTIVE CORE 3D CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2318] = ["GRIDBOX CONVECTIVE CORE Qcl KG/KG", "", "", "", ""] -atm_stashvar[2319] = ["GRIDBOX CONVECTIVE CORE Qcf KG/KG", "", "", "", ""] -atm_stashvar[2320] = ["COSP: MASK FOR CALIPSO CF ON LVLS", "", "", "", ""] -atm_stashvar[2321] = ["COSP: MASK FOR CALIPSO LOW-LEVEL CF", "", "", "", ""] -atm_stashvar[2322] = ["COSP: MASK FOR CALIPSO MID-LEVEL CF", "", "", "", ""] -atm_stashvar[2323] = ["COSP: MASK FOR CALIPSO HIGH-LEVEL CF", "", "", "", ""] -atm_stashvar[2324] = ["COSP: MASK FOR CALIPSO TOTAL CF", "", "", "", ""] -atm_stashvar[2325] = ["COSP: MASK FOR CALIPSO CF ON 40 LVLS", "", "", "", ""] -atm_stashvar[2326] = ["COSP: MASK FOR 2.358", "", "", "", ""] -atm_stashvar[2327] = ["COSP: MASK FOR 2.359", "", "", "", ""] -atm_stashvar[2330] = ["COSP: ISCCP/MISR/MODIS CLOUD WEIGHTS", "", "", "", ""] -atm_stashvar[2331] = ["COSP: ISCCP WEIGHTED CLOUD ALBEDO", "", "1", "", ""] -atm_stashvar[2332] = ["COSP: ISCCP WEIGHTED CLOUD TAU", "", "", "", ""] -atm_stashvar[2333] = ["COSP: ISCCP WEIGHTED CLOUD TOP PRES.", "", "", "", ""] -atm_stashvar[2334] = ["COSP: ISCCP TOTAL CLOUD AREA", "", "", "", ""] -atm_stashvar[2335] = ["COSP: ISCCP ALL-SKY 10.5 MICRON Tb", "", "", "", ""] -atm_stashvar[2336] = ["COSP: ISCCP CLEAR-SKY 10.5 MICRON Tb", "", "", "", ""] -atm_stashvar[2337] = ["COSP: ISCCP CTP-TAU HISTOGRAM", "", "", "", ""] -atm_stashvar[2340] = ["COSP: CALIPSO MOLECULAR BACKSCATTER", "", "", "", ""] -atm_stashvar[2341] = ["COSP: CALIPSO TOTAL BACKSCATTER", "", "", "", ""] -atm_stashvar[2342] = ["COSP: CALIPSO CFAD SCATTERING RATIO", "", "", "", ""] -atm_stashvar[2343] = ["COSP: CALIPSO CLOUD AREA ON LEVELS", "", "", "", ""] -atm_stashvar[2344] = ["COSP: CALIPSO LOW-LEVEL CLOUD", "", "", "", ""] -atm_stashvar[2345] = ["COSP: CALIPSO MID-LEVEL CLOUD", "", "", "", ""] -atm_stashvar[2346] = ["COSP: CALIPSO HIGH-LEVEL CLOUD", "", "", "", ""] -atm_stashvar[2347] = ["COSP: CALIPSO TOTAL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2348] = ["COSP: PARASOL TOA REFLECTANCE", "", "", "", ""] -atm_stashvar[2349] = ["COSP: CALIPSO-ONLY 3D CLOUD AREA", "", "", "", ""] -atm_stashvar[2350] = ["COSP: CLOUDSAT CFAD REFLECTIVITY", "", "", "", ""] -atm_stashvar[2351] = ["COSP: CLOUDSAT REFLECTIVITY", "", "", "", ""] -atm_stashvar[2352] = ["COSP: SUBCOLUMN CLOUD ARRAY", "", "", "", ""] -atm_stashvar[2353] = ["COSP: GBX-MEAN CSAT Ze MDL LEVELS", "", "", "", ""] -atm_stashvar[2354] = ["COSP: GBX-MEAN CSAT Ze 40 LEVELS", "", "", "", ""] -atm_stashvar[2355] = ["COSP: GBX-MEAN CALIPSO ATB MDL LVLS", "", "", "", ""] -atm_stashvar[2356] = ["COSP: GBX-MEAN CALIPSO ATB 40 LVLS", "", "", "", ""] -atm_stashvar[2357] = ["COSP: CALIPSO MOLECULAR ATB 40 LVLS", "", "", "", ""] -atm_stashvar[2358] = ["COSP: CALIPSO/CLOUDSAT CLOUD MDL LEV", "", "", "", ""] -atm_stashvar[2359] = ["COSP: CALIPSO/CLOUDSAT CLOUD 40 LEV", "", "", "", ""] -atm_stashvar[2360] = ["COSP: MISR CTH-TAU HISTOGRAM", "", "", "", ""] -atm_stashvar[2370] = ["COSP: CALIPSO CFAD SR 40 CSAT LEVELS", "", "", "", ""] -atm_stashvar[2371] = ["COSP: CALIPSO CLOUD AREA 40 CSAT LVS", "", "", "", ""] -atm_stashvar[2372] = ["COSP: CLOUDSAT CFAD Ze 40 CSAT LVLS", "", "", "", ""] -atm_stashvar[2373] = ["COSP: HYDROMETEOR EFFECTIVE RADIUS", "", "", "", ""] -atm_stashvar[2374] = ["COSP: CALIPSO-ONLY 3D CLOUD 40 LVLS", "", "", "", ""] -atm_stashvar[2375] = ["COSP: LARGE-SCALE CLOUD OPT. DEPTH", "", "", "", ""] -atm_stashvar[2376] = ["COSP: LARGE-SCALE CLOUD EMISSIVITY", "", "", "", ""] -atm_stashvar[2377] = ["COSP: CONVECTIVE CLOUD OPT. DEPTH", "", "", "", ""] -atm_stashvar[2378] = ["COSP: CONVECTIVE CLOUD EMISSIVITY", "", "", "", ""] -atm_stashvar[2380] = ["COSP: Reff L-S CLOUD LIQUID WATER", "", "", "", ""] -atm_stashvar[2381] = ["COSP: Reff L-S CLOUD ICE", "", "", "", ""] -atm_stashvar[2382] = ["COSP: Reff L-S CLOUD RAINFALL", "", "", "", ""] -atm_stashvar[2383] = ["COSP: Reff L-S CLOUD SNOWFALL", "", "", "", ""] -atm_stashvar[2384] = ["COSP: Reff CONV CLOUD LIQUID WATER", "", "", "", ""] -atm_stashvar[2385] = ["COSP: Reff CONV CLOUD ICE", "", "", "", ""] -atm_stashvar[2386] = ["COSP: Reff CONV CLOUD RAINFALL", "", "", "", ""] -atm_stashvar[2387] = ["COSP: Reff CONV CLOUD SNOWFALL", "", "", "", ""] -atm_stashvar[2388] = ["COSP: Reff L-S CLOUD GRAUPEL", "", "", "", ""] -atm_stashvar[2389] = ["COSP: 3D CONVECTIVE RAINFALL RATE", "", "", "", ""] -atm_stashvar[2390] = ["COSP: 3D CONVECTIVE SNOWFALL RATE", "", "", "", ""] -atm_stashvar[2391] = ["LARGE SCALE LIQUID WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2392] = ["LARGE SCALE ICE WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2393] = ["CONVECTIVE LIQUID WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2394] = ["CONVECTIVE ICE WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2395] = ["CONV. CORE LIQUID WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2396] = ["CONVECTIVE CORE ICE WATER PATH kg/m2", "", "", "", ""] -atm_stashvar[2397] = ["L-S LIQ WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2398] = ["L-S ICE WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2399] = ["CNV LIQ WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2400] = ["CNV ICE WEIGHTED EFFECTIVE DIMENSION", "", "", "", ""] -atm_stashvar[2406] = ["CLEAR-SKY (II) UPWARD LW FORC.(TOA)", "", "", "", ""] -atm_stashvar[2407] = ["DOWNWARD LW RAD FORCING: SURFACE", "", "", "", ""] -atm_stashvar[2408] = ["CLEAR-SKY (II) DOWN SURF. LW FORC.", "", "", "", ""] -atm_stashvar[2417] = ["UPWARD LW FLUX ON LEVELS W/ FORCING", "", "", "", ""] -atm_stashvar[2418] = ["DOWNWARD LW FLUX ON LEVELS W/ FORC", "", "", "", ""] -atm_stashvar[2419] = ["CLEAR-SKY UP LW ON LEVELS W/ FORCING", "", "", "", ""] -atm_stashvar[2420] = ["CLEAR-SKY DOWN LW ON LEVELS W/ FORC", "", "", "", ""] -atm_stashvar[2421] = ["SULPHATE OPTICAL DEPTH FROM PROGN.", "", "1", "", ""] -atm_stashvar[2422] = ["DUST OPTICAL DEPTH FROM PROGNOSTIC", "", "1", "", ""] -atm_stashvar[2423] = ["SEA SALT OPTICAL DEPTH, DIAGNOSED", "", "1", "", ""] -atm_stashvar[2424] = ["SOOT OPTICAL DEPTH FROM PROGNOSTIC", "", "1", "", ""] -atm_stashvar[2425] = ["BIOMASS OPTICAL DEPTH FROM PROGN.", "", "1", "", ""] -atm_stashvar[2426] = ["OCFF OPTICAL DEPTH FROM PROGNOSTIC", "", "1", "", ""] -atm_stashvar[2427] = ["AMM. NITRATE OPT. DEPTH FROM PROGN.", "", "1", "", ""] -atm_stashvar[2433] = ["CLEAR-SKY LW HEATING RATES W/ FORC", "", "", "", ""] -atm_stashvar[2437] = ["NET DOWNWARD LW AT TROP W/ FORCING", "", "", "", ""] -atm_stashvar[2438] = ["DOWNWARD LW AT TROPOPAUSE W/ FORCING", "", "", "", ""] -atm_stashvar[2450] = ["COSP: MODIS CTP-TAU HISTOGRAM", "", "", "", ""] -atm_stashvar[2451] = ["COSP: MODIS WEIGHTED TOT. CLOUD AREA", "", "", "", ""] -atm_stashvar[2452] = ["COSP: MODIS LIQUID CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2453] = ["COSP: MODIS ICE CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2454] = ["COSP: MODIS HIGH-LVL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2455] = ["COSP: MODIS MID-LVL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2456] = ["COSP: MODIS LOW-LVL CLOUD FRACTION", "", "", "", ""] -atm_stashvar[2457] = ["COSP: MODIS WEIGHTED TAU - TOTAL", "", "", "", ""] -atm_stashvar[2458] = ["COSP: MODIS WEIGHTED TAU - LIQUID", "", "", "", ""] -atm_stashvar[2459] = ["COSP: MODIS WEIGHTED TAU - ICE", "", "", "", ""] -atm_stashvar[2460] = ["COSP: MODIS WEIGHTED LOG(TAU) -TOTAL", "", "", "", ""] -atm_stashvar[2461] = ["COSP: MODIS WEIGHTED LOG(TAU) - LIQ", "", "", "", ""] -atm_stashvar[2462] = ["COSP: MODIS WEIGHTED LOG(TAU) - ICE", "", "", "", ""] -atm_stashvar[2463] = ["COSP: MODIS WEIGHTED Reff LIQUID", "", "", "", ""] -atm_stashvar[2464] = ["COSP: MODIS WEIGHTED Reff ICE", "", "", "", ""] -atm_stashvar[2465] = ["COSP: MODIS WEIGHTED CLOUD TOP PRES.", "", "", "", ""] -atm_stashvar[2466] = ["COSP: MODIS WEIGHTED LIQUID W. PATH", "", "", "", ""] -atm_stashvar[2467] = ["COSP: MODIS WEIGHTED ICE WATER PATH", "", "", "", ""] -atm_stashvar[2473] = ["COSP: CALIPSO CF 40 LVLS (LIQ)", "", "", "", ""] -atm_stashvar[2474] = ["COSP: CALIPSO CF 40 LVLS (ICE)", "", "", "", ""] -atm_stashvar[2475] = ["COSP: CALIPSO CF 40 LVLS (UNDET)", "", "", "", ""] -atm_stashvar[2476] = ["COSP: CALIPSO LOW-LEVEL CF (LIQ)", "", "", "", ""] -atm_stashvar[2477] = ["COSP: CALIPSO MID-LEVEL CF (LIQ)", "", "", "", ""] -atm_stashvar[2478] = ["COSP: CALIPSO HIGH-LEVEL CF (LIQ)", "", "", "", ""] -atm_stashvar[2479] = ["COSP: CALIPSO TOTAL CLOUD (LIQ)", "", "", "", ""] -atm_stashvar[2480] = ["COSP: CALIPSO LOW-LEVEL CF (ICE)", "", "", "", ""] -atm_stashvar[2481] = ["COSP: CALIPSO MID-LEVEL CF (ICE)", "", "", "", ""] -atm_stashvar[2482] = ["COSP: CALIPSO HIGH-LEVEL CF (ICE)", "", "", "", ""] -atm_stashvar[2483] = ["COSP: CALIPSO TOTAL CLOUD (ICE)", "", "", "", ""] -atm_stashvar[2484] = ["COSP: CALIPSO LOW-LEVEL CF (UNDET)", "", "", "", ""] -atm_stashvar[2485] = ["COSP: CALIPSO MID-LEVEL CF (UNDET)", "", "", "", ""] -atm_stashvar[2486] = ["COSP: CALIPSO HIGH-LEVEL CF (UNDET)", "", "", "", ""] -atm_stashvar[2487] = ["COSP: CALIPSO TOTAL CLOUD (UNDET)", "", "", "", ""] -atm_stashvar[2500] = ["LW DOWN OVER ICE, WGHTD (cats)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[2501] = ["LW DOWN OVER ICE, WGHTD (aggr)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[2502] = ["LW UP OVR ICE WGHTD(cats)(W/m2)(ret)", "", "W m-2", "", ""] -atm_stashvar[2503] = ["LW UP OVR ICE WGHTD(aggr)(W/m2)(ret)", "", "W m-2", "", ""] -atm_stashvar[2505] = ["DEPTH OF LAYERS IN RADIATION (M)", "", "", "", ""] -atm_stashvar[2506] = ["TOTAL AOD IN LAYERS AND LW BANDS", "", "", "", ""] -atm_stashvar[2507] = ["TOTAL SCATTERING AOD LAYERS/LW BANDS", "", "", "", ""] -atm_stashvar[2508] = ["AERO ASYM (WGTD) IN LAYERS/LW BANDS", "", "", "", ""] -atm_stashvar[2509] = ["UPWARD LW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[2510] = ["DOWNWARD LW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[2511] = ["CLEAR UP LW FLUX ON LEVELS AND BANDS", "", "", "", ""] -atm_stashvar[2512] = ["CLEAR DOWN LW FLUX ON LEVS AND BANDS", "", "", "", ""] -atm_stashvar[2513] = ["LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2514] = ["CLEAR-SKY LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2515] = ["CLEAN-AIR LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2516] = ["CLEAR-CLEAN LW EMISSION SPECTRUM", "", "", "", ""] -atm_stashvar[2517] = ["CLEAN-AIR UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2518] = ["CLEAN-AIR DOWNWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2519] = ["CLEAR-CLEAN UPWARD LW FLUX ON LEVELS", "", "", "", ""] -atm_stashvar[2520] = ["CLEAR-CLEAN DOWNWARD LW FLUX ON LEVS", "", "", "", ""] -atm_stashvar[2521] = ["UPWARD LW FLUX ON LEVELS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2522] = ["DOWNWARD LW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2523] = ["CLEAR UP LW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2524] = ["CLR DOWN LW FLUX ON LEVS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2525] = ["UP LW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2526] = ["DOWN LW FLUX LEVS/BANDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2527] = ["CLR UP LW FLUX LEVS/BNDS W/ GHG FORC", "", "", "", ""] -atm_stashvar[2528] = ["CLR DOWN LW FLUX LVS/BNDS W/GHG FORC", "", "", "", ""] -atm_stashvar[2530] = ["UKCA 3D AEROSOL EXTINCTION", "", "", "", ""] -atm_stashvar[2531] = ["UKCA 3D AEROSOL ABSORPTION", "", "", "", ""] -atm_stashvar[2532] = ["UKCA 3D AEROSOL SCATTERING", "", "", "", ""] -atm_stashvar[2533] = ["UKCA 3D AEROSOL ASY * SCATTERING", "", "", "", ""] -atm_stashvar[2540] = ["CLASSIC 3D AEROSOL EXTINCTION", "", "", "", ""] -atm_stashvar[2541] = ["CLASSIC 3D AEROSOL ABSORPTION", "", "", "", ""] -atm_stashvar[2542] = ["CLASSIC 3D AEROSOL SCATTERING", "", "", "", ""] -atm_stashvar[2545] = ["CLEAN-AIR UP LW FLUX ON LEVELS/BANDS", "", "", "", ""] -atm_stashvar[2546] = ["CLEAN-AIR DOWN LW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[2547] = ["CLEAR-CLEAN UP LW FLUX LEVELS/BANDS", "", "", "", ""] -atm_stashvar[2548] = ["CLEAR-CLEAN DOWN LW FLUX LEVS/BANDS", "", "", "", ""] -atm_stashvar[2550] = ["EASYAEROSOL EXTINCTION ON LW BANDS", "", "", "", ""] -atm_stashvar[2551] = ["EASYAEROSOL ABSORPTION ON LW BANDS", "", "", "", ""] -atm_stashvar[2552] = ["EASYAEROSOL SCATTERING ON LW BANDS", "", "", "", ""] -atm_stashvar[2553] = ["EASYAEROSOL ASY*SCA ON LW BANDS", "", "", "", ""] -atm_stashvar[2584] = ["SULPHATE ABSORPTION OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2585] = ["MINERAL DUST ABS. OPICAL DEPTH", "", "1", "", ""] -atm_stashvar[2586] = ["SEA SALT ABSORPTION OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2587] = ["SOOT ABSORPTION OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2588] = ["BIOMASS ABSORPTION OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2589] = ["BIOGENIC ABSORPTION OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2595] = ["FOSSIL FUEL ORG C ABS. OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2597] = ["AMMONIUM NITRATE ABS. OPTICAL DEPTH", "", "1", "", ""] -atm_stashvar[2709] = ["UPWARD LW FLUX LEVS/BANDS W/ FORCING", "", "", "", ""] -atm_stashvar[2710] = ["DOWNWARD LW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[2711] = ["CLEAR UP LW FLUX LEVS/BANDS W/ FORC", "", "", "", ""] -atm_stashvar[2712] = ["CLEAR DOWN LW FLUX LEVS/BNDS W/ FORC", "", "", "", ""] -atm_stashvar[2713] = ["LW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[2714] = ["CLEAR LW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[2715] = ["CLEAN LW EMISSION SPECTRUM 2nd CALL", "", "", "", ""] -atm_stashvar[2716] = ["CLR-CLN LW EMISSION SPEC 2nd CALL", "", "", "", ""] -atm_stashvar[3002] = ["U COMPNT OF WIND AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3003] = ["V COMPNT OF WIND AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3004] = ["TEMPERATURE AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3010] = ["SPECIFIC HUMIDITY AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3024] = ["SURFACE TEMPERATURE AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3025] = ["BOUNDARY LAYER DEPTH AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3026] = ["ROUGHNESS LEN. AFTER B.L. (SEE DOC)", "", "", "", ""] -atm_stashvar[3027] = ["EFFECTIVE ROUGHNESS LEN FOR SCALARS", "", "", "", ""] -atm_stashvar[3028] = ["ROUGH LEN FOR MOMENTUM WITHOUT OROG", "", "", "", ""] -atm_stashvar[3049] = ["SEA-ICE TEMPERATURE AFTER B. LAYER", "", "", "", ""] -atm_stashvar[3050] = ["MOISTURE EXCHANGE COEFFS", "", "", "", ""] -atm_stashvar[3051] = ["COMBINED RESIST. TO EVAP ON TILES", "", "", "", ""] -atm_stashvar[3052] = ["COEFFS RATIO FOR 1.5M T ON TILES", "", "", "", ""] -atm_stashvar[3053] = ["QSAT GRAD W.R. T SURF L1 ON TILES", "", "", "", ""] -atm_stashvar[3054] = ["AERODYNAMIC RESISTANCE (S/M)", "", "", "", ""] -atm_stashvar[3055] = ["CUMULATIVE FRACTION TRANSPIRATION", "", "", "", ""] -atm_stashvar[3056] = ["LAND MEAN COMBINED RESIST. TO EVAP", "", "", "", ""] -atm_stashvar[3057] = ["LAND MEAN COEFFS RATIO FOR 1.5M T", "", "", "", ""] -atm_stashvar[3058] = ["LAND MEAN QSAT GRAD W.R. T SURF L1", "", "", "", ""] -atm_stashvar[3060] = ["RHOKH_MIX", "", "", "", ""] -atm_stashvar[3061] = ["RHO_ARESIST (RHOSTAR*CD_STD*VSHR)", "", "", "", ""] -atm_stashvar[3062] = ["ARESIST [ 1/(CD_STD*VSHR) ]", "", "", "", ""] -atm_stashvar[3063] = ["RESIST_B (1/CH-1/CD_STD)/VSHR", "", "", "", ""] -atm_stashvar[3064] = ["DTRDZ_CHARNEY_GRID", "", "", "", ""] -atm_stashvar[3065] = ["GRID-LEVEL OF SML INVERSION (kent)", "", "", "", ""] -atm_stashvar[3066] = ["Rho * entrainment rate (we_lim)", "", "", "", ""] -atm_stashvar[3067] = ["Fraction of the timestep (t_frac)", "", "", "", ""] -atm_stashvar[3068] = ["zrzi", "", "", "", ""] -atm_stashvar[3069] = ["GRID-LEVEL OF DSC INVERSION (kent)", "", "", "", ""] -atm_stashvar[3070] = ["Rho * entrainment rate dsc", "", "", "", ""] -atm_stashvar[3071] = ["Fraction of the timestep dsc", "", "", "", ""] -atm_stashvar[3072] = ["zrzi dsc", "", "", "", ""] -atm_stashvar[3073] = ["ZHSC Top of decoupled layer", "", "", "", ""] -atm_stashvar[3074] = ["Dust div1 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3075] = ["Dust div2 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3076] = ["Dust div3 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3077] = ["Dust div4 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3078] = ["Dust div5 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3079] = ["Dust div6 surf. layer resist (s/m)", "", "", "", ""] -atm_stashvar[3100] = ["FLUX OF TRACER 1 IN BL", "", "", "", ""] -atm_stashvar[3101] = ["FLUX OF TRACER 2 IN BL", "", "", "", ""] -atm_stashvar[3102] = ["FLUX OF TRACER 3 IN BL", "", "", "", ""] -atm_stashvar[3103] = ["FLUX OF TRACER 4 IN BL", "", "", "", ""] -atm_stashvar[3104] = ["FLUX OF TRACER 5 IN BL", "", "", "", ""] -atm_stashvar[3105] = ["FLUX OF TRACER 6 IN BL", "", "", "", ""] -atm_stashvar[3106] = ["FLUX OF TRACER 7 IN BL", "", "", "", ""] -atm_stashvar[3107] = ["FLUX OF TRACER 8 IN BL", "", "", "", ""] -atm_stashvar[3108] = ["FLUX OF TRACER 9 IN BL", "", "", "", ""] -atm_stashvar[3109] = ["FLUX OF TRACER 10 IN BL", "", "", "", ""] -atm_stashvar[3110] = ["FLUX OF TRACER 11 IN BL", "", "", "", ""] -atm_stashvar[3111] = ["FLUX OF TRACER 12 IN BL", "", "", "", ""] -atm_stashvar[3112] = ["FLUX OF TRACER 13 IN BL", "", "", "", ""] -atm_stashvar[3113] = ["FLUX OF TRACER 14 IN BL", "", "", "", ""] -atm_stashvar[3114] = ["FLUX OF TRACER 15 IN BL", "", "", "", ""] -atm_stashvar[3115] = ["FLUX OF TRACER 16 IN BL", "", "", "", ""] -atm_stashvar[3116] = ["FLUX OF TRACER 17 IN BL", "", "", "", ""] -atm_stashvar[3117] = ["FLUX OF TRACER 18 IN BL", "", "", "", ""] -atm_stashvar[3118] = ["FLUX OF TRACER 19 IN BL", "", "", "", ""] -atm_stashvar[3119] = ["FLUX OF TRACER 20 IN BL", "", "", "", ""] -atm_stashvar[3120] = ["FLUX OF TRACER 21 IN BL", "", "", "", ""] -atm_stashvar[3121] = ["FLUX OF TRACER 22 IN BL", "", "", "", ""] -atm_stashvar[3122] = ["FLUX OF TRACER 23 IN BL", "", "", "", ""] -atm_stashvar[3123] = ["FLUX OF TRACER 24 IN BL", "", "", "", ""] -atm_stashvar[3124] = ["FLUX OF TRACER 25 IN BL", "", "", "", ""] -atm_stashvar[3125] = ["FLUX OF TRACER 26 IN BL", "", "", "", ""] -atm_stashvar[3126] = ["FLUX OF TRACER 27 IN BL", "", "", "", ""] -atm_stashvar[3127] = ["FLUX OF TRACER 28 IN BL", "", "", "", ""] -atm_stashvar[3128] = ["FLUX OF TRACER 29 IN BL", "", "", "", ""] -atm_stashvar[3129] = ["FLUX OF TOTAL AEROSOL IN BL", "", "", "", ""] -atm_stashvar[3130] = ["COUNTER GRADIENT TERM OF TAUX", "", "", "", ""] -atm_stashvar[3131] = ["COUNTER GRADIENT TERM OF TAUY", "", "", "", ""] -atm_stashvar[3132] = ["COUNTER GRADIENT TERM OF FTL", "", "", "", ""] -atm_stashvar[3133] = ["COUNTER GRADIENT TERM OF FQW", "", "", "", ""] -atm_stashvar[3134] = ["MIXING LENGTH", "", "", "", ""] -atm_stashvar[3135] = ["PRODUCTION RATE OF TKE BY SHEAR", "", "", "", ""] -atm_stashvar[3136] = ["PRODUCTION RATE OF TKE BY BUOYANCY", "", "", "", ""] -atm_stashvar[3137] = ["DISSIPATION RATE OF TKE", "", "", "", ""] -atm_stashvar[3138] = ["NON-DIM DIFFUSION COEFS FOR UV (SM)", "", "", "", ""] -atm_stashvar[3139] = ["NON-DIM DIFFUSION COEFS FOR TQ (SH)", "", "", "", ""] -atm_stashvar[3140] = ["NON-GRADIENT BUOYANCY FLUX", "", "", "", ""] -atm_stashvar[3141] = ["CLOUD FRACTION IN THE TKE SCHEMES", "", "", "", ""] -atm_stashvar[3142] = ["CONDENSED WATER IN THE TKE SCHEMES", "", "", "", ""] -atm_stashvar[3143] = ["STD. DEV. OF GAUSSIAN", "", "", "", ""] -atm_stashvar[3170] = ["QCL INCR: bdy layer positive", "", "", "", ""] -atm_stashvar[3171] = ["QCL INCR: bdy layer negative", "", "", "", ""] -atm_stashvar[3172] = ["QCF INCR: bdy layer positive", "", "", "", ""] -atm_stashvar[3173] = ["QCF INCR: bdy layer negative", "", "", "", ""] -atm_stashvar[3176] = ["LIQ CLOUD VOL INCR: bdy layer positi", "", "", "", ""] -atm_stashvar[3177] = ["LIQ CLOUD VOL INCR: bdy layer negati", "", "", "", ""] -atm_stashvar[3178] = ["ICE CLOUD VOL INCR: bdy layer positi", "", "", "", ""] -atm_stashvar[3179] = ["ICE CLOUD VOL INCR: bdy layer negati", "", "", "", ""] -atm_stashvar[3181] = ["TEMPERATURE INCR: bdy layer", "", "", "", ""] -atm_stashvar[3182] = ["SPECIFIC HUMIDITY INCR: bdy layer", "", "", "", ""] -atm_stashvar[3183] = ["QCL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3184] = ["QCF INCR: bdy layer", "", "", "", ""] -atm_stashvar[3185] = ["U WIND INCR: bdy layer", "", "", "", ""] -atm_stashvar[3186] = ["V WIND INCR: bdy layer", "", "", "", ""] -atm_stashvar[3187] = ["W WIND INCR: bdy layer", "", "", "", ""] -atm_stashvar[3188] = ["LIQUID WATER TEMP INCR: FRIC DISSIP", "", "", "", ""] -atm_stashvar[3189] = ["LIQUID WATER TEMP INCR: bdy layer", "", "", "", ""] -atm_stashvar[3190] = ["TOTAL (LIQ) WATER INCR: bdy layer", "", "", "", ""] -atm_stashvar[3192] = ["BULK CLOUD VOL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3193] = ["LIQUID CLOUD VOL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3194] = ["FROZEN CLOUD VOL INCR: bdy layer", "", "", "", ""] -atm_stashvar[3195] = ["U WIND INCR: Leonard term", "", "", "", ""] -atm_stashvar[3196] = ["V WIND INCR: Leonard term", "", "", "", ""] -atm_stashvar[3197] = ["TEMPERATURE INCR: Leonard term", "", "", "", ""] -atm_stashvar[3198] = ["SPECIFIC HUMIDITY INCR: Leonard term", "", "", "", ""] -atm_stashvar[3199] = ["W WIND INCR: Leonard term", "", "", "", ""] -atm_stashvar[3201] = ["HT FLUX THROUGH SEAICE:SEA MEAN W/M2", "hfss_ice", "W m-2", "downward_heat_flux_in_sea_ice", ""] -atm_stashvar[3202] = ["HT FLUX FROM SURF TO DEEP SOIL LEV 1", "", "W m-2", "downward_heat_flux_at_ground_level_in_soil", ""] -atm_stashvar[3208] = ["LOWEST LAYER BULK RICHARDSON NO. RIB", "", "", "", ""] -atm_stashvar[3209] = ["10 METRE WIND U-COMP", "uas", "m s-1", "eastward_wind", ""] -atm_stashvar[3210] = ["10 METRE WIND V-COMP", "vas", "m s-1", "northward_wind", ""] -atm_stashvar[3216] = ["BOUNDARY LAYER HEAT FLUXES W/M2", "", "", "", ""] -atm_stashvar[3217] = ["SURFACE SENSIBLE HEAT FLUX W/M2", "hfss", "W m-2", "surface_upward_sensible_heat_flux", ""] -atm_stashvar[3219] = ["X-COMP OF SURF & BL WIND STRESS N/M2", "tauu", "N m-2", "surface_downward_eastward_stress", ""] -atm_stashvar[3220] = ["Y-COMP OF SURF & BL WIND STRESS N/M2", "tauv", "N m-2", "surface_downward_northward_stress", ""] -atm_stashvar[3221] = ["MAG OF SURF & BL WIND STRESS B GRID", "", "", "", ""] -atm_stashvar[3222] = ["B.LAYER TOTAL MOISTURE FLUXS KG/M2/S", "", "", "", ""] -atm_stashvar[3223] = ["SURFACE TOTAL MOISTURE FLUX KG/M2/S", "evspsbl", "kg m-2 s-1", "water_evaporation_flux", ""] -atm_stashvar[3224] = ["WIND MIX EN'GY FL TO SEA:SEA MN W/M2", "", "", "", ""] -atm_stashvar[3225] = ["10 METRE WIND U-COMP B GRID", "uas", "m s-1", "eastward_wind", ""] -atm_stashvar[3226] = ["10 METRE WIND V-COMP B GRID", "vas", "m s-1", "northward_wind", ""] -atm_stashvar[3227] = ["10 METRE WIND SPEED ON B GRID", "wnd", "m s-1", "wind_speed", ""] -atm_stashvar[3228] = ["SFC SH FLX FROM OPEN SEA:SEA MN W/M2", "", "", "", ""] -atm_stashvar[3229] = ["EVAP FROM SOIL SURF -AMOUNT KG/M2/TS", "evpsoil", "kg m-2", "water_evaporation_flux_from_soil", "evpsoil_step"] -atm_stashvar[3230] = ["10 METRE WIND SPEED ON C GRID", "", "", "", ""] -atm_stashvar[3231] = ["SUBLIM. FROM SURFACE (GBM) KG/M2/TS", "", "", "", ""] -atm_stashvar[3232] = ["EVAP FROM OPEN SEA: SEA MEAN KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3234] = ["SURFACE LATENT HEAT FLUX W/M2", "hfls", "W m-2", "surface_upward_latent_heat_flux", ""] -atm_stashvar[3235] = ["SEAICE TOP MELT LH FLX:SEA MEAN W/M2", "", "W m-2", "", ""] -atm_stashvar[3236] = ["TEMPERATURE AT 1.5M", "tas", "K", "air_temperature", ""] -atm_stashvar[3237] = ["SPECIFIC HUMIDITY AT 1.5M", "huss", "1", "specific_humidity", ""] -atm_stashvar[3238] = ["DEEP SOIL TEMPERATURE AFTER B.LAYER", "tsl", "K", "soil_temperature", ""] -atm_stashvar[3239] = ["CLOUD LIQUID WATER AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3240] = ["CLOUD ICE CONTENT AFTER B.LAYER", "", "", "", ""] -atm_stashvar[3241] = ["TOTAL SURF MOIST FLUX PER TIMESTEP", "", "", "", ""] -atm_stashvar[3245] = ["RELATIVE HUMIDITY AT 1.5M", "", "%", "relative_humidity", ""] -atm_stashvar[3247] = ["VISIBILITY AT 1.5M M", "", "", "", ""] -atm_stashvar[3248] = ["FOG FRACTION AT 1.5 M", "", "", "", ""] -atm_stashvar[3250] = ["DEWPOINT AT 1.5M (K)", "", "", "", ""] -atm_stashvar[3251] = ["SILHOUETTE OROGRAPHIC ROUGHNESS", "", "", "", ""] -atm_stashvar[3252] = ["HALF OF (PEAK TO TROUGH HT OF OROG)", "", "", "", ""] -atm_stashvar[3253] = ["PROBABILITY OF VIS LESS THAN 5 KM", "", "", "", ""] -atm_stashvar[3254] = ["TL AT 1.5M", "", "", "", ""] -atm_stashvar[3255] = ["QT AT 1.5M", "", "", "", ""] -atm_stashvar[3256] = ["Heat flux through sea ice (W/m2)", "", "", "", ""] -atm_stashvar[3257] = ["Heat flux in sea ice surface melt", "", "W m-2", "", ""] -atm_stashvar[3258] = ["SURFACE SNOWMELT HEAT FLUX W/M2", "", "W m-2", "surface_snow_melt_heat_flux", ""] -atm_stashvar[3259] = ["CANOPY CONDUCTANCE M/S", "", "", "", ""] -atm_stashvar[3261] = ["GROSS PRIMARY PRODUCTIVITY KG C/M2/S", "gpp", "kg m-2 s-1", "gross_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3262] = ["NET PRIMARY PRODUCTIVITY KG C/M2/S", "npp", "kg m-2 s-1", "net_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3263] = ["PLANT RESPIRATION KG/M2/S", "resp", "kg m-2 s-1", "plant_respiration_carbon_flux", ""] -atm_stashvar[3270] = ["SO2 SURFACE DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3271] = ["SO4 AIT SURF DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3272] = ["SO4 ACC SURF DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3273] = ["SO4 DIS SURF DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3274] = ["ACCUM NITRATE DRY DEP FLX KG[N]/M2/S", "", "", "", ""] -atm_stashvar[3275] = ["DISS NITRATE DRY DEP FLUX KG[N]/M2/S", "", "", "", ""] -atm_stashvar[3281] = ["VIS AT 1.5M (incl precip) M", "", "", "", ""] -atm_stashvar[3282] = ["PROB OF VIS < 1 KM (incl precip)", "", "", "", ""] -atm_stashvar[3283] = ["PROB OF VIS < 5 KM (incl precip)", "", "", "", ""] -atm_stashvar[3284] = ["VISIBILITY AT 1.5M IN LS PPTN M", "", "", "", ""] -atm_stashvar[3285] = ["VISIBILITY AT 1.5M IN CONV PPTN M", "", "", "", ""] -atm_stashvar[3287] = ["CANOPY EVAPORATION ON TILES", "evspsblveg_tile", "kg m-2 s-1", "water_evaporation_flux_from_canopy", ""] -atm_stashvar[3288] = ["TRANSPIRATION+SOIL EVP ON TILES", "", "kg m-2 s-1", "water_evaporation_flux", ""] -atm_stashvar[3289] = ["GROSS PRIMARY PRODUCTIVITY ON PFTS", "gpp_tile", "kg m-2 s-1", "gross_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3290] = ["SURFACE SENSIBLE HEAT FLUX ON TILES", "hfss", "W m-2", "surface_upward_sensible_heat_flux", "hfss_tile"] -atm_stashvar[3291] = ["NET PRIMARY PRODUCTIVITY ON PFTS", "npp_tile", "kg m-2 s-1", "net_primary_productivity_of_biomass_expressed_as_carbon", ""] -atm_stashvar[3292] = ["PLANT RESPIRATION ON PFTS KG C/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3293] = ["SOIL RESPIRATION KG C/M2/S", "resp_soil", "kg m-2 s-1", "", ""] -atm_stashvar[3294] = ["BULK RICHARDSON NUMBER ON TILES", "", "", "", ""] -atm_stashvar[3296] = ["EVAP FROM SOIL SURF : RATE KG/M2/S", "evspsblsoil", "kg m-2 s-1", "water_evaporation_flux_from_soil", ""] -atm_stashvar[3297] = ["EVAP FROM CANOPY : RATE KG/M2/S", "evspsblveg", "kg m-2 s-1", "water_evaporation_flux_from_canopy", ""] -atm_stashvar[3298] = ["SUBLIM. SURFACE (GBM) : RATE KG/M2/S", "sbl", "kg m-2 s-1", "surface_snow_and_ice_sublimation_flux", ""] -atm_stashvar[3300] = ["NH3 SURFACE DRY DEP FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3301] = ["FRESH SOOT DRY DEPN FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3302] = ["AGED SOOT DRY DEPN FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3303] = ["SOOT IN CLOUD DEPN FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3304] = ["TURBULENT MIXING HT AFTER B.LAYER m", "", "", "", ""] -atm_stashvar[3305] = ["STABLE BL INDICATOR", "", "", "", ""] -atm_stashvar[3306] = ["STRATOCUM. OVER STABLE BL INDICATOR", "", "", "", ""] -atm_stashvar[3307] = ["WELL_MIXED BL INDICATOR", "", "", "", ""] -atm_stashvar[3308] = ["DECOUPLED SC. NOT OVER CU. INDICATOR", "", "", "", ""] -atm_stashvar[3309] = ["DECOUPLED SC. OVER CU. INDICATOR", "", "", "", ""] -atm_stashvar[3310] = ["CUMULUS-CAPPED BL INDICATOR", "", "", "", ""] -atm_stashvar[3313] = ["SOIL MOIS AVAIL FACTOR ON PFTS", "", "", "", ""] -atm_stashvar[3314] = ["SURFACE NET RADIATION ON TILES", "netrad_tile", "W m-2", "", ""] -atm_stashvar[3316] = ["SURFACE TEMP ON TILES K", "ts", "K", "surface_temperature", "ts_tile"] -atm_stashvar[3317] = ["SURFACE TILE FRACTIONS", "", "1", "", ""] -atm_stashvar[3318] = ["LEAF AREA INDICES ON PFTS", "", "1", "", ""] -atm_stashvar[3319] = ["CANOPY HEIGHT ON PFTS", "", "m", "", ""] -atm_stashvar[3320] = ["SOIL CARBON CONTENT (B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3321] = ["CANOPY WATER ON TILES KG/M2", "cw_tile", "kg m-2", "", ""] -atm_stashvar[3322] = ["CANOPY CAPACITY ON TILES KG/M2", "", "", "", ""] -atm_stashvar[3324] = ["ROUGHNESS LENGTH ON TILES M", "", "", "", ""] -atm_stashvar[3325] = ["LEAF TURNOVER RATE ON PFTS", "", "", "", ""] -atm_stashvar[3326] = ["CO2 LAND SURFACE FLUX KG/M**2/S", "", "", "", ""] -atm_stashvar[3327] = ["CO2 TOTAL FLUX TO ATMOS KG/M**2/S", "", "", "", ""] -atm_stashvar[3328] = ["1.5M TEMPERATURE OVER TILES", "tas_tile", "K", "", ""] -atm_stashvar[3329] = ["1.5M SPECIFIC HUMIDITY OVER TILES", "", "", "", ""] -atm_stashvar[3330] = ["SURFACE LATENT HEAT FLUX ON TILES", "hfls_tile", "W m-2", "", ""] -atm_stashvar[3331] = ["SUBLIMATION MOISTURE FLUX ON TILES", "sbl_tile", "kg m-2 s-1", "", ""] -atm_stashvar[3332] = ["TOA OUTGOING LW RAD AFTER B.LAYER", "rlut", "W m-2", "toa_outgoing_longwave_flux", "rlut_afterbl"] -atm_stashvar[3333] = ["GRID-BOX AVERAGE SURF NET RAD", "", "", "", ""] -atm_stashvar[3334] = ["LAND MEAN POTENTIAL EVAPORATION", "pevap", "kg m-2 s-1", "water_potential_evaporation_flux", ""] -atm_stashvar[3335] = ["POTENTIAL EVAPORATION ON TILES", "pevap", "kg m-2 s-1", "water_potential_evaporation_flux", ""] -atm_stashvar[3337] = ["LAND HT FLUX FROM SURF TO DEEP LEV 1", "", "", "", ""] -atm_stashvar[3338] = ["NET SURF SEA-ICE HT FLUX (SEA MEAN)", "", "", "", ""] -atm_stashvar[3339] = ["LOWEST LAYER BULK RIB: SEA MEAN", "", "", "", ""] -atm_stashvar[3340] = ["SHEAR-DRIVEN B.LAYER INDICATOR", "", "", "", ""] -atm_stashvar[3341] = ["LAND MEAN TEMPERATURE AT 1.5M", "tas", "K", "air_temperature", ""] -atm_stashvar[3342] = ["LAND MEAN SPECIFIC HUMIDITY AT 1.5M", "", "", "", ""] -atm_stashvar[3343] = ["MEAN SEA SFC SH FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3344] = ["10m TEMP OVER SEA/SEAICE K", "", "", "", ""] -atm_stashvar[3345] = ["10m SPEC HUM OVER SEA/SEAICE KG/KG", "", "", "", ""] -atm_stashvar[3347] = ["MOISTURE FLUX FROM MEAN SEA KG/M2/S", "", "", "", ""] -atm_stashvar[3353] = ["SUBLIM. SEAICE:SEA MEAN RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3355] = ["BL THERMAL SPEED (M/S)", "", "", "", ""] -atm_stashvar[3356] = ["HEIGHT OF SURFACE MIXED LAYR TOP (M)", "", "", "", ""] -atm_stashvar[3357] = ["HEIGHT OF DEC STRATOCU LAYER TOP (M)", "", "", "", ""] -atm_stashvar[3358] = ["BL DEPTH DIAGNOSED FROM RICRIT (M)", "", "", "", ""] -atm_stashvar[3359] = ["HEIGHT OF DIAGNOSTIC PARCEL TOP (M)", "", "", "", ""] -atm_stashvar[3360] = ["HEIGHT OF DECOUPLED LAYER BASE", "", "", "", ""] -atm_stashvar[3361] = ["HEIGHT OF STRATOCUMULUS CLOUD BASE", "", "", "", ""] -atm_stashvar[3362] = ["ENTRAINMENT RATE FOR SURFACE ML", "", "", "", ""] -atm_stashvar[3363] = ["ENTRAINMENT RATE FOR BOUNDARY LAYER", "", "", "", ""] -atm_stashvar[3364] = ["INVERSION THICKNESS (M)", "", "", "", ""] -atm_stashvar[3365] = ["10 METRE NEUTRAL WIND U-COMP B GRID", "", "", "", ""] -atm_stashvar[3366] = ["10 METRE NEUTRAL WIND V-COMP B GRID", "", "", "", ""] -atm_stashvar[3367] = ["10 METRE NEUTRAL WIND SPEED B GRID", "", "", "", ""] -atm_stashvar[3368] = ["10 METRE NEUTRAL WIND U-COMP", "", "", "", ""] -atm_stashvar[3369] = ["10 METRE NEUTRAL WIND V-COMP", "", "", "", ""] -atm_stashvar[3370] = ["X-COMP OF SURF PSEUDOSTRESS M2.S-2", "", "", "", ""] -atm_stashvar[3371] = ["Y-COMP OF SURF PSEUDOSTRESS M2.S-2", "", "", "", ""] -atm_stashvar[3380] = ["SURF NET RAD OVER OPEN SEA", "", "W m-2", "", ""] -atm_stashvar[3381] = ["SFC NET RADN. OVER SEA-ICE:SEA MEAN", "", "W m-2", "", ""] -atm_stashvar[3382] = ["SURFACE NET SW RADIATION ON TILES", "", "W m-2", "", ""] -atm_stashvar[3383] = ["SURFACE UP LW RADIATION ON TILES", "", "W m-2", "", ""] -atm_stashvar[3384] = ["SURFACE DOWN LW RADIATION ON TILES", "", "W m-2", "", ""] -atm_stashvar[3389] = ["SURFACE LAYER WIND SHEAR OVER LAND", "", "", "", ""] -atm_stashvar[3390] = ["MEAN SEA SURFACE LAYER WIND SHEAR", "", "", "", ""] -atm_stashvar[3391] = ["X-COMP OF LAND SURF WIND STRESS N/M2", "", "", "", ""] -atm_stashvar[3392] = ["X-COMP OF MEAN SEA SURF STRESS N/M2", "tauu", "N m-2", "", ""] -atm_stashvar[3393] = ["Y-COMP OF LAND SURF WIND STRESS N/M2", "", "", "", ""] -atm_stashvar[3394] = ["Y-COMP OF MEAN SEA SURF STRESS N/M2", "tauv", "N m-2", "", ""] -atm_stashvar[3395] = ["FRACTION OF LAND", "sftlf", "1", "land_area_fraction", ""] -atm_stashvar[3396] = ["FRESH BIOMASS DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3397] = ["AGED BIOMASS DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3398] = ["BIOMASS IN CLOUD DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3400] = ["Tile area frac. for dust emissions", "", "", "", ""] -atm_stashvar[3401] = ["Dust emissions div 1 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3402] = ["Dust emissions div 2 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3403] = ["Dust emissions div 3 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3404] = ["Dust emissions div 4 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3405] = ["Dust emissions div 5 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3406] = ["Dust emissions div 6 (kg/m2/s)", "", "kg m-2 s-1", "", ""] -atm_stashvar[3407] = ["FRESH OCFF DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3408] = ["AGED OCFF DRY DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3409] = ["OCFF IN CLOUD DEPN FLUX KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[3411] = ["Dust threshold U* on tiles div 1", "", "", "", ""] -atm_stashvar[3412] = ["Dust threshold U* on tiles div 2", "", "", "", ""] -atm_stashvar[3413] = ["Dust threshold U* on tiles div 3", "", "", "", ""] -atm_stashvar[3414] = ["Dust threshold U* on tiles div 4", "", "", "", ""] -atm_stashvar[3415] = ["Dust threshold U* on tiles div 5", "", "", "", ""] -atm_stashvar[3416] = ["Dust threshold U* on tiles div 6", "", "", "", ""] -atm_stashvar[3417] = ["Dust threshold U* on tiles div 7", "", "", "", ""] -atm_stashvar[3418] = ["Dust threshold U* on tiles div 8", "", "", "", ""] -atm_stashvar[3419] = ["Dust threshold U* on tiles div 9", "", "", "", ""] -atm_stashvar[3421] = ["Dust dry threshold U* on tiles div 1", "", "", "", ""] -atm_stashvar[3422] = ["Dust dry threshold U* on tiles div 2", "", "", "", ""] -atm_stashvar[3423] = ["Dust dry threshold U* on tiles div 3", "", "", "", ""] -atm_stashvar[3424] = ["Dust dry threshold U* on tiles div 4", "", "", "", ""] -atm_stashvar[3425] = ["Dust dry threshold U* on tiles div 5", "", "", "", ""] -atm_stashvar[3426] = ["Dust dry threshold U* on tiles div 6", "", "", "", ""] -atm_stashvar[3427] = ["Dust dry threshold U* on tiles div 7", "", "", "", ""] -atm_stashvar[3428] = ["Dust dry threshold U* on tiles div 8", "", "", "", ""] -atm_stashvar[3429] = ["Dust dry threshold U* on tiles div 9", "", "", "", ""] -atm_stashvar[3430] = ["Dust Friction velocity (U*) on tiles", "", "m s-1", "", ""] -atm_stashvar[3440] = ["TOTAL DUST DEPOSITION FLUX KG/M2/S", "", "", "", ""] -atm_stashvar[3441] = ["Dust dry dep flux from lev 1 div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[3442] = ["Dust dry dep flux from lev 1 div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[3443] = ["Dust dry dep flux from lev 1 div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[3444] = ["Dust dry dep flux from lev 1 div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[3445] = ["Dust dry dep flux from lev 1 div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[3446] = ["Dust dry dep flux from lev 1 div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[3451] = ["Dust dry dep flux from lev 2 div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[3452] = ["Dust dry dep flux from lev 2 div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[3453] = ["Dust dry dep flux from lev 2 div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[3454] = ["Dust dry dep flux from lev 2 div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[3455] = ["Dust dry dep flux from lev 2 div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[3456] = ["Dust dry dep flux from lev 2 div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[3460] = ["X-COMP SURFACE BL STRESS", "", "", "", ""] -atm_stashvar[3461] = ["Y-COMP SURFACE BL STRESS", "", "", "", ""] -atm_stashvar[3462] = ["STOMATAL CONDUCTANCE ON PFTS (M/S)", "", "", "", ""] -atm_stashvar[3463] = ["WIND GUST", "", "", "", ""] -atm_stashvar[3464] = ["OBUKHOV LENGTH", "", "", "", ""] -atm_stashvar[3465] = ["EXPLICIT FRICTION VELOCITY", "", "", "", ""] -atm_stashvar[3466] = ["CONVECTIVE BL VELOCITY SCALE", "", "", "", ""] -atm_stashvar[3467] = ["SURFACE BUOYANCY FLUX", "", "", "", ""] -atm_stashvar[3468] = ["GRADIENT RICHARDSON NUMBER", "", "", "", ""] -atm_stashvar[3469] = ["VERTICAL BUOYANCY GRADIENT", "", "", "", ""] -atm_stashvar[3470] = ["MODULUS OF WIND SHEAR", "", "", "", ""] -atm_stashvar[3471] = ["BL MOMENTUM DIFFUSION", "", "", "", ""] -atm_stashvar[3472] = ["BL HEAT DIFFUSION", "", "", "", ""] -atm_stashvar[3473] = ["TURBULENT KINETIC ENERGY", "", "", "", ""] -atm_stashvar[3474] = ["X-COMP OF DIST OROGRAPHIC STRESS", "", "", "", ""] -atm_stashvar[3475] = ["Y-COMP OF DIST OROGRAPHIC STRESS", "", "", "", ""] -atm_stashvar[3476] = ["COMBINED BOUNDARY LAYER TYPE", "", "", "", ""] -atm_stashvar[3477] = ["DPM SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3478] = ["RPM SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3479] = ["BIO SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3480] = ["HUM SOIL CARBON POOL(B.LAYER) KGC/M2", "", "", "", ""] -atm_stashvar[3481] = ["DPM SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3482] = ["RPM SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3483] = ["BIO SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3484] = ["HUM SOIL RESPIRATION KG C/M2/S", "", "", "", ""] -atm_stashvar[3485] = ["SOIL RESP TEMPERATURE RATE MODIFIER", "", "", "", ""] -atm_stashvar[3486] = ["SOIL RESP MOISTURE RATE MODIFIER", "", "", "", ""] -atm_stashvar[3487] = ["THETA STAR FROM SURFACE FLUX (K)", "", "", "", ""] -atm_stashvar[3488] = ["QV_STAR FROM SURFACE FLUX (kg/kg)", "", "", "", ""] -atm_stashvar[3489] = ["SOIL RESP VEG COVER RATE MODIFIER", "", "", "", ""] -atm_stashvar[3490] = ["ISOPRENE SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3491] = ["TERPENE SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3492] = ["METHANOL SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3493] = ["ACETONE SURF EMIS PER PFTS", "", "", "", ""] -atm_stashvar[3495] = ["ISOPRENE SURF EMIS", "", "", "", ""] -atm_stashvar[3496] = ["TERPENE SURF EMIS", "", "", "", ""] -atm_stashvar[3497] = ["METHANOL SURF EMIS", "", "", "", ""] -atm_stashvar[3498] = ["ACETONE SURF EMIS", "", "", "", ""] -atm_stashvar[3500] = ["IMPLICIT FRICTION VELOCITY", "", "", "", ""] -atm_stashvar[3501] = ["MIXING LENGTH FOR MOMENTUM (M)", "", "", "", ""] -atm_stashvar[3502] = ["MIXING LENGTH FOR SCALARS (M)", "", "", "", ""] -atm_stashvar[3503] = ["RHOKM DIFF COEFF - LOCAL SCHEME", "", "", "", ""] -atm_stashvar[3504] = ["RHOKH DIFF COEFF - LOCAL SCHEME", "", "", "", ""] -atm_stashvar[3505] = ["RHOKM DIFF COEFF - SURF-DRIVEN TURB", "", "", "", ""] -atm_stashvar[3506] = ["RHOKH DIFF COEFF - SURF-DRIVEN TURB", "", "", "", ""] -atm_stashvar[3507] = ["RHOKM DIFF COEFF - CLD-TOP-DRIVEN", "", "", "", ""] -atm_stashvar[3508] = ["RHOKH DIFF COEFF - CLD-TOP-DRIVEN", "", "", "", ""] -atm_stashvar[3509] = ["Seaice sublimation (cats) (kg/m2/s)", "", "", "", ""] -atm_stashvar[3510] = ["Net surf seaice ht flux (cats)(W/m2)", "", "", "", ""] -atm_stashvar[3511] = ["STABILITY FUNCTION FOR SCALARS", "", "", "", ""] -atm_stashvar[3512] = ["STABILITY FUNCTION FOR MOMENTUM", "", "", "", ""] -atm_stashvar[3513] = ["BLENDING WEIGHT FOR 1D BL SCHEME", "", "", "", ""] -atm_stashvar[3520] = ["SURFACE-BASED THETA PERTURBATION (K)", "", "", "", ""] -atm_stashvar[3521] = ["SURFACE-BASED MOISTURE PERTURBATION", "", "", "", ""] -atm_stashvar[3530] = ["LW UP OVER ICE, WEIGHTED(cats)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[3531] = ["LW UP OVER ICE, WEIGHTED(aggr)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[3532] = ["SENS. HF OVER ICE, WGTED(cats)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[3533] = ["SENS. HF OVER ICE, WGTED(aggr)(W/m2)", "", "W m-2", "", ""] -atm_stashvar[3534] = ["TSTAR OVER ICE, WEIGHTED(cats)(K)", "", "K", "", ""] -atm_stashvar[3535] = ["TSTAR OVER ICE, WEIGHTED(aggr)(K)", "", "K", "", ""] -atm_stashvar[3536] = ["SEA ICE TIME FRACTION (cats)", "", "1", "", ""] -atm_stashvar[3537] = ["SEA ICE TIME FRACTION (aggregate)", "", "1", "", ""] -atm_stashvar[3538] = ["SEA AND SEA ICE DRAG COEFFICIENT", "", "", "", ""] -atm_stashvar[3539] = ["TRANSPIRATION GRIDBOX MEAN", "", "", "", ""] -atm_stashvar[3540] = ["TRANSPIRATION ON TILES", "", "", "", ""] -atm_stashvar[3541] = ["SEA AND SEA ICE DRAG COEFF HEAT", "", "", "", ""] -atm_stashvar[3550] = ["LEONARD TERM PARAMETER FOR U", "", "", "", ""] -atm_stashvar[3551] = ["LEONARD TERM PARAMETER FOR V", "", "", "", ""] -atm_stashvar[3552] = ["LEONARD TERM PARAMETER FOR SCALARS", "", "", "", ""] -atm_stashvar[3553] = ["LEONARD TERM VERTICAL FLUX U WIND", "", "", "", ""] -atm_stashvar[3554] = ["LEONARD TERM VERTICAL FLUX V WIND", "", "", "", ""] -atm_stashvar[3555] = ["LEONARD TERM VERTICAL FLUX W WIND", "", "", "", ""] -atm_stashvar[3556] = ["LEONARD TERM VERTICAL FLUX theta_l", "", "", "", ""] -atm_stashvar[3557] = ["LEONARD TERM VERTICAL FLUX qw", "", "", "", ""] -atm_stashvar[3560] = ["X-COMP OF BL WIND STRESS ON P GRID", "", "", "", ""] -atm_stashvar[3561] = ["Y-COMP OF BL WIND STRESS ON P GRID", "", "", "", ""] -atm_stashvar[3662] = ["POTENTIAL NET PRIM PRODUC KG C/M2/S", "", "", "", ""] -atm_stashvar[3663] = ["POTENTIAL PLANT RESPIRATION KG/M2/S", "", "", "", ""] -atm_stashvar[3691] = ["POTEN NET PRIM PRODUC PFTS KG C/M2/S", "", "", "", ""] -atm_stashvar[3692] = ["POTEN PLANT RESP ON PFTS KG C/M2/S", "", "", "", ""] -atm_stashvar[3801] = ["CABLE SOIL TEMPERATURE ON TILES LAYER 1", "tsl_1", "K", "soil_temperature", ""] -atm_stashvar[3802] = ["CABLE SOIL TEMPERATURE ON TILES LAYER 2", "tsl_2", "K", "soil_temperature", ""] -atm_stashvar[3803] = ["CABLE SOIL TEMPERATURE ON TILES LAYER 3", "tsl_3", "K", "soil_temperature", ""] -atm_stashvar[3804] = ["CABLE SOIL TEMPERATURE ON TILES LAYER 4", "tsl_4", "K", "soil_temperature", ""] -atm_stashvar[3805] = ["CABLE SOIL TEMPERATURE ON TILES LAYER 5", "tsl_5", "K", "soil_temperature", ""] -atm_stashvar[3806] = ["CABLE SOIL TEMPERATURE ON TILES LAYER 6", "tsl_6", "K", "soil_temperature", ""] -atm_stashvar[3807] = ["CABLE SOIL MOISTURE ON TILES LAYER 1", "mrsol_1", "kg m-2", "moisture_content_of_soil_layer", ""] -atm_stashvar[3808] = ["CABLE SOIL MOISTURE ON TILES LAYER 2", "mrsol_2", "kg m-2", "moisture_content_of_soil_layer", ""] -atm_stashvar[3809] = ["CABLE SOIL MOISTURE ON TILES LAYER 3" , "mrsol_3", "kg m-2", "moisture_content_of_soil_layer", ""] -atm_stashvar[3810] = ["CABLE SOIL MOISTURE ON TILES LAYER 4", "mrsol_4", "kg m-2", "moisture_content_of_soil_layer", ""] -atm_stashvar[3811] = ["CABLE SOIL MOISTURE ON TILES LAYER 5", "mrsol_5", "kg m-2", "moisture_content_of_soil_layer", ""] -atm_stashvar[3812] = ["CABLE SOIL MOISTURE ON TILES LAYER 6", "mrsol_6", "kg m-2", "moisture_content_of_soil_layer", ""] -atm_stashvar[3813] = ["CABLE FROZEN SOIL MOIST FRAC ON TILES LAYER 1", "mrfsofr_1", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[3814] = ["CABLE FROZEN SOIL MOIST FRAC ON TILES LAYER 2", "mrfsofr_2", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[3815] = ["CABLE FROZEN SOIL MOIST FRAC ON TILES LAYER 3", "mrfsofr_3", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[3816] = ["CABLE FROZEN SOIL MOIST FRAC ON TILES LAYER 4", "mrfsofr_4", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[3817] = ["CABLE FROZEN SOIL MOIST FRAC ON TILES LAYER 5", "mrfsofr_5", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[3818] = ["CABLE FROZEN SOIL MOIST FRAC ON TILES LAYER 6", "mrfsofr_6", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[3819] = ["CABLE SNOW DEPTH ON TILES LAYER 1", "snd_1", "m", "surface_snow_thickness", ""] -atm_stashvar[3820] = ["CABLE SNOW DEPTH ON TILES LAYER 2", "snd_2", "m", "surface_snow_thickness", ""] -atm_stashvar[3821] = ["CABLE SNOW DEPTH ON TILES LAYER 3", "snd_3", "m", "surface_snow_thickness", ""] -atm_stashvar[3822] = ["CABLE SNOW MASS ON TILES LAYER 1", "snw_1", "kg m-2", "surface_snow_amount", ""] -atm_stashvar[3823] = ["CABLE SNOW MASS ON TILES LAYER 2", "snw_2", "kg m-2", "surface_snow_amount", ""] -atm_stashvar[3824] = ["CABLE SNOW MASS ON TILES LAYER 3", "snw_3", "kg m-2", "surface_snow_amount", ""] -atm_stashvar[3825] = ["CABLE SNOW TEMPERATURE ON TILES LAYER 1", "tsn_1", "K", "temperature_in_surface_snow", ""] -atm_stashvar[3826] = ["CABLE SNOW TEMPERATURE ON TILES LAYER 2", "tsn_2", "K", "temperature_in_surface_snow", ""] -atm_stashvar[3827] = ["CABLE SNOW TEMPERATURE ON TILES LAYER 3", "tsn_3", "K", "temperature_in_surface_snow", ""] -atm_stashvar[3828] = ["CABLE SNOW DENSITY ON TILES LAYER 1", "snow_dens_1", "kg m-3", "snow_density", ""] -atm_stashvar[3829] = ["CABLE SNOW DENSITY ON TILES LAYER 2", "snow_dens_2", "kg m-3", "snow_density", ""] -atm_stashvar[3830] = ["CABLE SNOW DENSITY ON TILES LAYER 3", "snow_dens_3", "kg m-3", "snow_density", ""] -atm_stashvar[3831] = ["CABLE MEAN SNOW DENSITY ON TILES", "snow_dens", "kg m-3", "snow_density", ""] -atm_stashvar[3832] = ["CABLE SNOW AGE ON TILES", "snow_age", "day", "age_of_surface_snow", ""] -atm_stashvar[4004] = ["TEMPERATURE AFTER LARGE SCALE PRECIP", "", "", "", ""] -atm_stashvar[4010] = ["SPECIFIC HUMIDITY AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4100] = ["ICE AGGREGATE FRACTION", "", "", "", ""] -atm_stashvar[4101] = ["MICROPHYSICS GRID BOX FLAG", "", "", "", ""] -atm_stashvar[4102] = ["MEAN FALLSPEED CRYSTALS", "", "", "", ""] -atm_stashvar[4103] = ["MEAN FALLSPEED AGGREGATES", "", "", "", ""] -atm_stashvar[4104] = ["FALLSPEED BRANCH FLAG", "", "", "", ""] -atm_stashvar[4105] = ["FALLSPEED USED", "", "", "", ""] -atm_stashvar[4110] = ["SURFACE RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4111] = ["MAX REFLECTIVITY IN COLUMN (dBZ)", "", "", "", ""] -atm_stashvar[4112] = ["RADAR REFLECTIVITY AT 1KM AGL (dBZ)", "", "", "", ""] -atm_stashvar[4113] = ["GRAUPEL RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4114] = ["ICE AGG RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4115] = ["ICE CRY RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4116] = ["RAIN RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4117] = ["LIQ. CLOUD RADAR REFLECTIVITY (dBZ)", "", "", "", ""] -atm_stashvar[4118] = ["TOTAL RADAR REFLECTIVITY 3D (dBZ)", "", "", "", ""] -atm_stashvar[4130] = ["QCL INCR: pc2 checks positive", "", "", "", ""] -atm_stashvar[4131] = ["QCL INCR: pc2 checks negative", "", "", "", ""] -atm_stashvar[4132] = ["QCF INCR: pc2 checks positive", "", "", "", ""] -atm_stashvar[4133] = ["QCF INCR: pc2 checks negative", "", "", "", ""] -atm_stashvar[4136] = ["LIQ CLOUD VOL INCR: pc2 checks posit", "", "", "", ""] -atm_stashvar[4137] = ["LIQ CLOUD VOL INCR: pc2 checks negat", "", "", "", ""] -atm_stashvar[4138] = ["ICE CLOUD VOL INCR: pc2 checks posit", "", "", "", ""] -atm_stashvar[4139] = ["ICE CLOUD VOL INCR: pc2 checks negat", "", "", "", ""] -atm_stashvar[4141] = ["TEMPERATURE INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4142] = ["SPECIFIC HUMIDITY INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4143] = ["QCL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4144] = ["QCF INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4152] = ["BULK CLOUD VOL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4153] = ["LIQ CLOUD VOL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4154] = ["ICE CLOUD VOL INCR: pc2 checks", "", "", "", ""] -atm_stashvar[4170] = ["QCL INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4171] = ["QCL INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4172] = ["QCF INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4173] = ["QCF INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4176] = ["LIQ CLOUD VOL INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4177] = ["LIQ CLOUD VOL INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4178] = ["ICE CLOUD VOL INCR: ls rain positive", "", "", "", ""] -atm_stashvar[4179] = ["ICE CLOUD VOL INCR: ls rain negative", "", "", "", ""] -atm_stashvar[4181] = ["TEMPERATURE INCR: ls rain", "", "", "", ""] -atm_stashvar[4182] = ["SPECIFIC HUMIDITY INCR: ls rain", "", "", "", ""] -atm_stashvar[4183] = ["QCL INCR: ls rain", "", "", "", ""] -atm_stashvar[4184] = ["QCF INCR: ls rain", "", "", "", ""] -atm_stashvar[4189] = ["RAIN INCR: ls rain kg/kg/timestep", "", "", "", ""] -atm_stashvar[4190] = ["GRAUPEL INCR: ls rain kg/kg/timestep", "", "", "", ""] -atm_stashvar[4191] = ["QCF2 INCR: ls rain kg/kg/timestep", "", "", "", ""] -atm_stashvar[4192] = ["BULK CLOUD VOL INCR: ls rain", "", "", "", ""] -atm_stashvar[4193] = ["LIQUID CLOUD VOL INCR: ls rain", "", "", "", ""] -atm_stashvar[4194] = ["FROZEN CLOUD VOL INCR: ls rain", "", "", "", ""] -atm_stashvar[4201] = ["LARGE SCALE RAIN AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[4202] = ["LARGE SCALE SNOW AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[4203] = ["LARGE SCALE RAINFALL RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[4204] = ["LARGE SCALE SNOWFALL RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[4205] = ["CLOUD LIQUID WATER AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4206] = ["CLOUD ICE CONTENT AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4207] = ["RELATIVE HUMIDITY AFTER LS PRECIP", "", "", "", ""] -atm_stashvar[4208] = ["R. HUMIDITY WRT WATER AFTER PRECIP", "", "", "", ""] -atm_stashvar[4209] = ["LARGE SCALE GRAUPEL AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[4210] = ["CLOUD DROP NUMBER CONC. /m3", "", "", "", ""] -atm_stashvar[4211] = ["POT. CLOUD DROP NUMBER CONC. /m3", "", "", "", ""] -atm_stashvar[4212] = ["LARGE SCALE GRAUPEL RATE KG/M2/S", "", "", "", ""] -atm_stashvar[4213] = ["DISS NITR RNOUT BY LS PPN KG[N]/M2/S", "", "", "", ""] -atm_stashvar[4214] = ["ACC NITR WSHOUT BY LS PPN KG[N]/M2/S", "", "", "", ""] -atm_stashvar[4215] = ["NH3 SCAVENGED BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4216] = ["SO2 SCAVENGED BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4219] = ["SO4 DIS SCAVNGD BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4220] = ["SOOT RAINOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4221] = ["SOOT WASHOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4222] = ["RAINFALL RATE OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4223] = ["SNOWFALL RATE OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4224] = ["SUPERCOOLED LIQUID WATER CONTENT", "", "", "", ""] -atm_stashvar[4225] = ["SUPERCOOLED RAIN OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4226] = ["GRAUPEL FALL RATE ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[4227] = ["RAIN FRACTION OUT OF MODEL LEVELS", "", "", "", ""] -atm_stashvar[4228] = ["OCFF RAINOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4229] = ["OCFF WASHOUT BY LS PPN KG/M2/S", "", "", "", ""] -atm_stashvar[4231] = ["Dust wet dep flux ls precip div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[4232] = ["Dust wet dep flux ls precip div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[4233] = ["Dust wet dep flux ls precip div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[4234] = ["Dust wet dep flux ls precip div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[4235] = ["Dust wet dep flux ls precip div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[4236] = ["Dust wet dep flux ls precip div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[4237] = ["BIOMASS RAINOUT BY LS PPN KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[4238] = ["BIOMASS WASHOUT BY LS PPN KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[4240] = ["HOMOGENEOUS NUCLEATION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4241] = ["HETEROGENOUS NUCLEATION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4243] = ["DEPOSITION RATE CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4245] = ["DEPOSITION RATE AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4247] = ["RIMING RATE CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4248] = ["RIMING RATE AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4249] = ["CRY RAIN-CAPTURE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4250] = ["AGG RAIN-CAPTURE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4251] = ["EVAP OF MELTING CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4252] = ["EVAP OF MELTING SNOW AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4253] = ["MELTING RATE CRY kg/kg/s", "", "", "", ""] -atm_stashvar[4254] = ["MELTING RATE AGG kg/kg/s", "", "", "", ""] -atm_stashvar[4255] = ["SNOW AUTOCONV RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4256] = ["SNOW CAPTURE OF CRYSTALS kg/kg/s", "", "", "", ""] -atm_stashvar[4257] = ["RAIN AUTOCONV RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4258] = ["RAIN ACCRETION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4259] = ["EVAPORATION OF RAIN RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4260] = ["GRAUPEL AUTOCONV RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4261] = ["GRAUPEL ACCRETION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4262] = ["GRAUPEL SNOW-CAPTURE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4263] = ["GRAUPEL MELTING RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4264] = ["GRAUPEL EVAPORATION RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4265] = ["ICE CRYSTAL SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4266] = ["SNOW AGG. SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4267] = ["RAIN SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4268] = ["GRAUPEL SEDIMENT RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4269] = ["DROPLET SETTLE RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4270] = ["DROPLET SETTLE EVAP RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4271] = ["HOMOG FREEZING NUC RAIN. kg/ks/s", "", "", "", ""] -atm_stashvar[4275] = ["SURFACE MAX HAIL DIAMETER mm", "", "", "", ""] -atm_stashvar[4276] = ["COLUMN MAX HAIL DIAMETER mm", "", "", "", ""] -atm_stashvar[4277] = ["MAX HAIL DIAMETER MODEL LEVELS mm", "", "", "", ""] -atm_stashvar[4281] = ["TEMPERATURE INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4282] = ["SPECIFIC HUMIDITY INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4283] = ["QCL INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4292] = ["BULK CLOUD VOL INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4293] = ["LIQ CLOUD VOL INCR: pc2 erosion", "", "", "", ""] -atm_stashvar[4294] = ["QCL DIAG: TURB. MIXED PHASE (KG/KG)", "", "", "", ""] -atm_stashvar[4295] = ["CFL DIAGNOSED: TURB. MIXED PHASE", "", "", "", ""] -atm_stashvar[4296] = ["TURB. DECORRELATION TIMESCALE (S)", "", "", "", ""] -atm_stashvar[4297] = ["INV. PHASE-RELAXATION TIMESCALE", "", "", "", ""] -atm_stashvar[4298] = ["DIAGNOSED TURBULENT DISSIPATION RATE", "", "", "", ""] -atm_stashvar[4299] = ["INVERSE MIXING TIMESCALE (S-1)", "", "", "", ""] -atm_stashvar[4300] = ["MEAN OF SUBGRID SUPERSAT. PDF", "", "", "", ""] -atm_stashvar[4301] = ["VARIANCE OF SUBGRID SUPERSAT. PDF", "", "", "", ""] -atm_stashvar[4302] = ["L.S. SNOW AMOUNT NO GRAUP KG/M2/TS", "", "", "", ""] -atm_stashvar[4303] = ["QCL INCR MIXED PHASE USING PC2", "", "", "", ""] -atm_stashvar[4304] = ["L.S. SNOWFALL RATE NO GRAUP KG/M2/S", "", "", "", ""] -atm_stashvar[4313] = ["CFL INCR MIXED PHASE USING PC2", "", "", "", ""] -atm_stashvar[4323] = ["SNOWFALL RATE NO GRAUPEL MODEL LEVS", "", "", "", ""] -atm_stashvar[4325] = ["CLOUD COND/EVAP RATE KG/KG/S", "", "", "", ""] -atm_stashvar[4336] = ["ICE CLOUD SEDIMENT. RATE KG/KG/S", "", "", "", ""] -atm_stashvar[4350] = ["HOMO FREEZING OF CLOUD NUMBER TEND.", "", "", "", ""] -atm_stashvar[4351] = ["HOMO FREEZING OF RAIN NUMBER TEND.", "", "", "", ""] -atm_stashvar[4352] = ["HALLETT MOSSOP ICE NUMBER TEND.", "", "", "", ""] -atm_stashvar[4353] = ["ICE NUCLEATION ICE NUMBER TEND.", "", "", "", ""] -atm_stashvar[4354] = ["ICE SEDIMENTATION NUMBER TEND.", "", "", "", ""] -atm_stashvar[4355] = ["SNOW SEDIMENTATION NUMBER TEND.", "", "", "", ""] -atm_stashvar[4356] = ["GRAUPEL SEDIMENTATION NUMBER TEND.", "", "", "", ""] -atm_stashvar[4400] = ["SUBGRID OROG WATER MIX RATIO kg/kg", "", "", "", ""] -atm_stashvar[4401] = ["SUBGRID OROG RAIN ACCR RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4402] = ["SUBGRID OROG SNOW RMNG RATE kg/kg/s", "", "", "", ""] -atm_stashvar[4982] = ["Q INCR: methane oxidation", "", "", "", ""] -atm_stashvar[5010] = ["SPECIFIC HUMIDITY AFTER CONVECTION", "", "", "", ""] -atm_stashvar[5140] = ["QCL INCR: conv inhom positive", "", "", "", ""] -atm_stashvar[5141] = ["QCL INCR: conv inhom negative", "", "", "", ""] -atm_stashvar[5142] = ["QCF INCR: conv inhom positive", "", "", "", ""] -atm_stashvar[5143] = ["QCF INCR: conv inhom negative", "", "", "", ""] -atm_stashvar[5146] = ["LIQ CLOUD VOL INCR: conv inhom posit", "", "", "", ""] -atm_stashvar[5147] = ["LIQ CLOUD VOL INCR: conv inhom negat", "", "", "", ""] -atm_stashvar[5148] = ["ICE CLOUD VOL INCR: conv inhom posit", "", "", "", ""] -atm_stashvar[5149] = ["ICE CLOUD VOL INCR: conv inhom negat", "", "", "", ""] -atm_stashvar[5150] = ["QCL INCR: pc2 turbulence", "", "", "", ""] -atm_stashvar[5151] = ["QCL INCR: pc2 turbulence positive", "", "", "", ""] -atm_stashvar[5152] = ["QCL INCR: pc2 turbulence negative", "", "", "", ""] -atm_stashvar[5156] = ["LIQ CLOUD VOL INCR: pc2 turbulence", "", "", "", ""] -atm_stashvar[5157] = ["LIQ CLOUD VOL INCR: pc2 turb positiv", "", "", "", ""] -atm_stashvar[5158] = ["LIQ CLOUD VOL INCR: pc2 turb negativ", "", "", "", ""] -atm_stashvar[5161] = ["TEMPERATURE INCR: convection", "", "", "", ""] -atm_stashvar[5162] = ["SPECIFIC HUMIDITY INCR: convection", "", "", "", ""] -atm_stashvar[5163] = ["QCL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5164] = ["QCF INCR: conv inhom", "", "", "", ""] -atm_stashvar[5172] = ["BULK CLOUD VOL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5173] = ["LIQUID CLOUD VOL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5174] = ["FROZEN CLOUD VOL INCR: conv inhom", "", "", "", ""] -atm_stashvar[5175] = ["du/dt from downdraughts(ms-2 P grid)", "", "", "", ""] -atm_stashvar[5176] = ["dv/dt from downdraughts(ms-2 P grid)", "", "", "", ""] -atm_stashvar[5181] = ["TEMPERATURE INC:convect +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5182] = ["Q INCR: convection +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5183] = ["QCL INCR: convection +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5184] = ["QCF INCR: convection +(PC2 inhom)", "", "", "", ""] -atm_stashvar[5185] = ["U WIND INCR: convection", "", "", "", ""] -atm_stashvar[5186] = ["V WIND INCR: convection", "", "", "", ""] -atm_stashvar[5187] = ["TEMP INCR: convection (no shallowc)", "", "", "", ""] -atm_stashvar[5188] = ["SPEC HUM INCR:convect. (no shallowc)", "", "", "", ""] -atm_stashvar[5192] = ["BULK CLOUD VOL INCR: convection", "", "", "", ""] -atm_stashvar[5193] = ["LIQUID CLOUD VOL INCR: convection", "", "", "", ""] -atm_stashvar[5194] = ["FROZEN CLOUD VOL INCR: convection", "", "", "", ""] -atm_stashvar[5196] = ["(Convective vert. vel.)^2 [(m/s)^2]", "", "", "", ""] -atm_stashvar[5197] = ["Convective vertical velocity [m/s]", "", "", "", ""] -atm_stashvar[5198] = ["d(Temp)/dt from downdraughts K/s", "", "", "", ""] -atm_stashvar[5199] = ["d(q)/dt from downdraughts kg/kg/s", "", "", "", ""] -atm_stashvar[5201] = ["CONVECTIVE RAIN AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[5202] = ["CONVECTIVE SNOW AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[5205] = ["CONVECTIVE RAINFALL RATE KG/M2/S", "", "kg m-2 s-1", "convective_rainfall_flux", ""] -atm_stashvar[5206] = ["CONVECTIVE SNOWFALL RATE KG/M2/S", "", "kg m-2 s-1", "convective_snowfall_flux", ""] -atm_stashvar[5207] = ["PRESSURE AT CONVECTIVE CLOUD BASE", "ccb", "Pa", "air_pressure_at_convective_cloud_base", ""] -atm_stashvar[5208] = ["PRESSURE AT CONVECTIVE CLOUD TOP", "cct", "Pa", "air_pressure_at_convective_cloud_top", ""] -atm_stashvar[5209] = ["TEMPERATURE AFTER CONVECTION", "", "", "", ""] -atm_stashvar[5210] = ["ICAO HT OF CONVECTIVE CLOUD BASE", "", "", "", ""] -atm_stashvar[5211] = ["ICAO HT OF CONVECTIVE CLOUD TOP", "", "", "", ""] -atm_stashvar[5212] = ["CONV. CLOUD AMOUNT ON EACH MODEL LEV", "", "", "", ""] -atm_stashvar[5213] = ["CONV CLOUD CONDENSED WATER KG/KG", "", "", "", ""] -atm_stashvar[5214] = ["TOTAL RAINFALL RATE: LS+CONV KG/M2/S", "prrn", "kg m-2 s-1", "rainfall_flux", ""] -atm_stashvar[5215] = ["TOTAL SNOWFALL RATE: LS+CONV KG/M2/S", "prsn", "kg m-2 s-1", "snowfall_flux", ""] -atm_stashvar[5216] = ["TOTAL PRECIPITATION RATE KG/M2/S", "pr", "kg m-2 s-1", "precipitation_flux", ""] -atm_stashvar[5217] = ["DILUTE CONVECTIVELY AVAIL POT E J/KG", "", "", "", ""] -atm_stashvar[5218] = ["LOWEST CONV CLOUD BASE LEVEL NO.", "", "", "", ""] -atm_stashvar[5219] = ["LOWEST CONV CLOUD TOP LEVEL NO.", "", "", "", ""] -atm_stashvar[5220] = ["LOWEST CONV CLOUD AMOUNT AFTER CONV", "", "", "", ""] -atm_stashvar[5222] = ["PRESSURE AT LOWEST CONV CLOUD BASE", "", "", "", ""] -atm_stashvar[5223] = ["PRESSURE AT LOWEST CONV CLOUD TOP", "", "", "", ""] -atm_stashvar[5224] = ["ICAO HT OF LOWEST CONV CLOUD BASE", "", "", "", ""] -atm_stashvar[5225] = ["ICAO HT OF LOWEST CONV CLOUD TOP", "", "", "", ""] -atm_stashvar[5226] = ["TOTAL PRECIPITATION AMOUNT KG/M2/TS", "", "kg m-2", "precipitation_amount", ""] -atm_stashvar[5227] = ["NOMINAL 3D CONVECTIVE RAINFALL RATE", "", "", "", ""] -atm_stashvar[5228] = ["NOMINAL 3D CONVECTIVE SNOWFALL RATE", "", "", "", ""] -atm_stashvar[5229] = ["Fractional updraught area", "", "", "", ""] -atm_stashvar[5230] = ["Fractional downdraught area", "", "", "", ""] -atm_stashvar[5231] = ["CAPE TIMESCALE (DEEP) S", "", "", "", ""] -atm_stashvar[5232] = ["INDICATOR REDUCED CAPE TIMESCALE", "", "", "", ""] -atm_stashvar[5233] = ["UNDILUTE CAPE J/KG", "", "", "", ""] -atm_stashvar[5234] = ["UNDILUTE PARCEL CIN J/KG", "", "", "", ""] -atm_stashvar[5235] = ["U compnt of wind after convection", "", "", "", ""] -atm_stashvar[5236] = ["V compnt of wind after convection", "", "", "", ""] -atm_stashvar[5237] = ["NH3 SCAVENGED BY CONV PPN KG/M2/SEC", "", "", "", ""] -atm_stashvar[5238] = ["SO2 SCAVENGED BY CONV PPN KG/M2/SEC", "", "", "", ""] -atm_stashvar[5239] = ["SO4 AIT SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5240] = ["SO4 ACC SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5241] = ["SO4 DIS SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5242] = ["SOOT SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5243] = ["BIOMASS SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5244] = ["OCFF SCAVNGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5246] = ["UD MFLUX(rho lev) Component A (Pa/s)", "", "", "", ""] -atm_stashvar[5247] = ["ACC NIT SCVGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5248] = ["DISS NIT SCVGD BY CONV PPN KG/M2/S", "", "", "", ""] -atm_stashvar[5249] = ["UD MASS FLUX rho levels (Pa/s)", "", "Pa s-1", "", ""] -atm_stashvar[5250] = ["UPDRAUGHT MASS FLUX (Pa/s)", "", "Pa s-1", "", ""] -atm_stashvar[5251] = ["DOWNDRAUGHT MASS FLUX (PA/S)", "", "Pa s-1", "", ""] -atm_stashvar[5252] = ["UPDRAUGHT ENTRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5253] = ["UPDRAUGHT DETRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5254] = ["DOWNDRAUGHT ENTRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5255] = ["DOWNDRAUGHT DETRAINMENT RATE (S-1)", "", "", "", ""] -atm_stashvar[5256] = ["U INCREMENT MS-2 ( P GRID)", "", "", "", ""] -atm_stashvar[5257] = ["V INCREMENT MS-2 ( P GRID)", "", "", "", ""] -atm_stashvar[5258] = ["DEEP UW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5259] = ["DEEP VW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5260] = ["SHALL UW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5261] = ["SHALL VW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5262] = ["2D CONVECTIVE CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[5263] = ["MID UW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5264] = ["MID VW STRESS KG M-1 S-2 P GRID", "", "", "", ""] -atm_stashvar[5267] = ["DEEP CONVECTION CFL LIMITED", "", "", "", ""] -atm_stashvar[5268] = ["MID-LEVEL CONVECTION CFL LIMITED", "", "", "", ""] -atm_stashvar[5269] = ["DEEP CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5270] = ["SHALLOW CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5271] = ["CUMULUS OVER OROGRAPHY INDICATOR", "", "", "", ""] -atm_stashvar[5272] = ["MID LEVEL CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5273] = ["TOP LEVEL SURFACE MIXING LAYER", "", "", "", ""] -atm_stashvar[5274] = ["TOP LEVEL INITIAL PARCEL ASCENT", "", "", "", ""] -atm_stashvar[5275] = ["MODEL FREEZING LEVEL", "", "", "", ""] -atm_stashvar[5276] = ["TERMINATION LEVEL for DEEP CONVECT", "", "", "", ""] -atm_stashvar[5277] = ["DEEP CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5278] = ["SHALLOW CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5279] = ["MID LEVEL CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5280] = ["CONGESTUS CONV PRECIP RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[5281] = ["Dust wet dep flux conv precip div 1", "", "kg m-2 s-1", "", ""] -atm_stashvar[5282] = ["Dust wet dep flux conv precip div 2", "", "kg m-2 s-1", "", ""] -atm_stashvar[5283] = ["Dust wet dep flux conv precip div 3", "", "kg m-2 s-1", "", ""] -atm_stashvar[5284] = ["Dust wet dep flux conv precip div 4", "", "kg m-2 s-1", "", ""] -atm_stashvar[5285] = ["Dust wet dep flux conv precip div 5", "", "kg m-2 s-1", "", ""] -atm_stashvar[5286] = ["Dust wet dep flux conv precip div 6", "", "kg m-2 s-1", "", ""] -atm_stashvar[5290] = ["WQT FLUX KG/KG M/S UV LEVEL P GRID", "", "", "", ""] -atm_stashvar[5291] = ["WQL FLUX KG/KG M/S UV LEVEL P GRID", "", "", "", ""] -atm_stashvar[5292] = ["WTHETAL FLUX K M/S UV LEV P GRID", "", "", "", ""] -atm_stashvar[5293] = ["WTHETAV FLUX K M/S UV LEV P GRID", "", "", "", ""] -atm_stashvar[5300] = ["SUBCLOUD LAYER CONV VEL SCALE M/S", "", "", "", ""] -atm_stashvar[5301] = ["CUMULUS LAYER CONV VEL SCALE M/S", "", "", "", ""] -atm_stashvar[5302] = ["CLOUD BASE MASS FLUX 1 M/S", "", "", "", ""] -atm_stashvar[5303] = ["CLOUD BASE MASS FLUX 2 M/S", "", "", "", ""] -atm_stashvar[5304] = ["WQT FLUX AT CLOUD BASE KG/KG M/S", "", "", "", ""] -atm_stashvar[5305] = ["WTHETAL FLUX AT CLOUD BASE KG/KGM/S", "", "", "", ""] -atm_stashvar[5306] = ["WQT FLUX AT INVERSION KG/KG M/S", "", "", "", ""] -atm_stashvar[5307] = ["WTHETAL FLUX AT INVERSION KG/KG M/S", "", "", "", ""] -atm_stashvar[5308] = ["HEIGHT OF TOP OF SHALLOW CONV M", "", "", "", ""] -atm_stashvar[5309] = ["HEIGHT OF BASE OF SHALLOW CONV M", "", "", "", ""] -atm_stashvar[5310] = ["CONGESTUS CONVECTION INDICATOR", "", "", "", ""] -atm_stashvar[5311] = ["CONGESTUS CONVECTION INDICATOR 2", "", "", "", ""] -atm_stashvar[5312] = ["TERMINATION LEVEL FOR CONGESTUS", "", "", "", ""] -atm_stashvar[5313] = ["HEIGHT OF TOP OF CONGESTUS M", "", "", "", ""] -atm_stashvar[5314] = ["HEIGHT OF BASE OF CONGESTUS M", "", "", "", ""] -atm_stashvar[5319] = ["FREQ DEEP CONVECTION TERM HERE", "", "", "", ""] -atm_stashvar[5320] = ["MASS FLUX DEEP CONVECTION", "", "", "", ""] -atm_stashvar[5321] = ["MASS FLUX CONGESTUS CONVECTION", "", "", "", ""] -atm_stashvar[5322] = ["MASS FLUX SHALLOW CONVECTION", "", "", "", ""] -atm_stashvar[5323] = ["MASS FLUX MID-LEVEL CONVECTION", "", "", "", ""] -atm_stashvar[5324] = ["DT FROM DEEP CONVECTION K/S", "", "", "", ""] -atm_stashvar[5325] = ["DT FROM CONGESTUS CONVECTION K/S", "", "", "", ""] -atm_stashvar[5326] = ["DT FROM SHALLOW CONVECTION K/S", "", "", "", ""] -atm_stashvar[5327] = ["DT FROM MID-LEVEL CONVECTION K/S", "", "", "", ""] -atm_stashvar[5328] = ["DQ FROM DEEP CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5329] = ["DQ FROM CONGESTUS CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5330] = ["DQ FROM SHALLOW CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5331] = ["DQ FROM MID-LEVEL CONVECTION KG/KG/S", "", "", "", ""] -atm_stashvar[5332] = ["DU FROM DEEP CONV M/S2 ( P GRID)", "", "", "", ""] -atm_stashvar[5333] = ["DU FROM CONGESTUS CONV M/S2 (P GRID)", "", "", "", ""] -atm_stashvar[5334] = ["DU FROM SHALLOW CONV M/S2 ( P GRID)", "", "", "", ""] -atm_stashvar[5335] = ["DU FROM MID-LEVEL CONV M/S2 (P GRID)", "", "", "", ""] -atm_stashvar[5336] = ["DV FROM DEEP CONV M/S2 ( P GRID)", "", "", "", ""] -atm_stashvar[5337] = ["DV FROM CONGESTUS CONV MS-2 (P GRID)", "", "", "", ""] -atm_stashvar[5338] = ["DV FROM SHALLOW CONV MS-2 (P GRID)", "", "", "", ""] -atm_stashvar[5339] = ["DV FROM MID-LEVEL CONV MS-2 (P GRID)", "", "", "", ""] -atm_stashvar[5400] = ["CONV_TYPE INDICATOR", "", "", "", ""] -atm_stashvar[5401] = ["CONV_TYPE INDICATOR 1", "", "", "", ""] -atm_stashvar[5402] = ["CONV_TYPE INDICATOR 2", "", "", "", ""] -atm_stashvar[5403] = ["CONV_TYPE INDICATOR 3", "", "", "", ""] -atm_stashvar[5404] = ["CONV_TYPE INDICATOR 4", "", "", "", ""] -atm_stashvar[5405] = ["CONV_TYPE 1 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5406] = ["CONV_TYPE 2 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5407] = ["CONV_TYPE 3 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5408] = ["CONV_TYPE 4 PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[5409] = ["DT FROM CONV_TYPE 1 K/S", "", "", "", ""] -atm_stashvar[5410] = ["DT FROM CONV_TYPE 2 K/S", "", "", "", ""] -atm_stashvar[5411] = ["DT FROM CONV_TYPE 3 K/S", "", "", "", ""] -atm_stashvar[5412] = ["DT FROM CONV_TYPE 4 K/S", "", "", "", ""] -atm_stashvar[5413] = ["DQ FROM CONV_TYPE 1 KG/KG/S", "", "", "", ""] -atm_stashvar[5414] = ["DQ FROM CONV_TYPE 2 KG/KG/S", "", "", "", ""] -atm_stashvar[5415] = ["DQ FROM CONV_TYPE 3 KG/KG/S", "", "", "", ""] -atm_stashvar[5416] = ["DQ FROM CONV_TYPE 4 KG/KG/S", "", "", "", ""] -atm_stashvar[5417] = ["MASS FLUX CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5418] = ["MASS FLUX CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5419] = ["MASS FLUX CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5420] = ["MASS FLUX CONV_TYPE 4", "", "", "", ""] -atm_stashvar[5421] = ["HIGHEST LEVEL OF CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5422] = ["HIGHEST LEVEL OF CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5423] = ["HIGHEST LEVEL OF CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5424] = ["HIGHEST LEVEL OF CONV_TYPE 4", "", "", "", ""] -atm_stashvar[5425] = ["WTHETA_L CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5426] = ["WTHETA_L CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5427] = ["WTHETA_L CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5428] = ["WTHETA_L CONV_TYPE 4", "", "", "", ""] -atm_stashvar[5429] = ["WQT CONV_TYPE 1", "", "", "", ""] -atm_stashvar[5430] = ["WQT CONV_TYPE 2", "", "", "", ""] -atm_stashvar[5431] = ["WQT CONV_TYPE 3", "", "", "", ""] -atm_stashvar[5432] = ["WQT CONV_TYPE 4", "", "", "", ""] -atm_stashvar[6002] = ["U COMPNT OF WIND AFTER G.WAVE DRAG", "", "", "", ""] -atm_stashvar[6003] = ["V COMPNT OF WIND AFTER G.WAVE DRAG", "", "", "", ""] -atm_stashvar[6101] = ["EASTWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6102] = ["SOUTHWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6103] = ["WESTWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6104] = ["NORTHWARD FLUX - SPECTRAL PSEUDOMOM.", "", "", "", ""] -atm_stashvar[6105] = ["EASTWARD FORCE FROM SPECTRAL GW", "", "", "", ""] -atm_stashvar[6106] = ["NORTHWARD FORCE FROM SPECTRAL GW", "", "", "", ""] -atm_stashvar[6111] = ["E. FLUX SPECTRAL PSEUDOMOM. P LEVS", "", "", "", ""] -atm_stashvar[6113] = ["W. FLUX SPECTRAL PSEUDOMOM. P LEVS", "", "", "", ""] -atm_stashvar[6115] = ["EAST. FORCE FROM SPECTRAL GW P LEVS", "", "", "", ""] -atm_stashvar[6181] = ["GW HEATING TEMPERATURE INC", "", "", "", ""] -atm_stashvar[6185] = ["U WIND INCR: gwd scheme", "", "", "", ""] -atm_stashvar[6186] = ["V WIND INCR: gwd scheme", "", "", "", ""] -atm_stashvar[6201] = ["X COMPONENT OF GRAVITY WAVE STRESS", "", "", "", ""] -atm_stashvar[6202] = ["Y COMPONENT OF GRAVITY WAVE STRESS", "", "", "", ""] -atm_stashvar[6203] = ["STANDARD DEVIATION OF OROGRAPHY", "", "", "", ""] -atm_stashvar[6204] = ["OROGRAPHIC GRADIENT XX COMPONENT", "", "", "", ""] -atm_stashvar[6205] = ["OROGRAPHIC GRADIENT XY COMPONENT", "", "", "", ""] -atm_stashvar[6206] = ["OROGRAPHIC GRADIENT YY COMPONENT", "", "", "", ""] -atm_stashvar[6207] = ["U-ACCEL FROM SATURATED STRESS", "", "", "", ""] -atm_stashvar[6208] = ["V-ACCEL FROM SATURATED STRESS", "", "", "", ""] -atm_stashvar[6214] = ["U in the GWD surface layer", "", "", "", ""] -atm_stashvar[6215] = ["V in the GWD surface layer", "", "", "", ""] -atm_stashvar[6216] = ["N in the GWD surface layer", "", "", "", ""] -atm_stashvar[6217] = ["GWD Froude number", "", "", "", ""] -atm_stashvar[6218] = ["GWD Blocked Layer Depth", "", "", "", ""] -atm_stashvar[6222] = ["Percent of time with blocked flow", "", "", "", ""] -atm_stashvar[6223] = ["X COMPONENT OF GW SATURATION STRESS", "", "", "", ""] -atm_stashvar[6224] = ["Y COMPONENT OF GW SATURATION STRESS", "", "", "", ""] -atm_stashvar[6227] = ["X COMPONENT OF BLOCKED FLOW STRESS", "", "", "", ""] -atm_stashvar[6228] = ["Y COMPONENT OF BLOCKED FLOW STRESS", "", "", "", ""] -atm_stashvar[6231] = ["U-ACCEL FROM BLOCKED FLOW", "", "", "", ""] -atm_stashvar[6232] = ["V-ACCEL FROM BLOCKED FLOW", "", "", "", ""] -atm_stashvar[6233] = ["% of time num limiter invoked", "", "", "", ""] -atm_stashvar[6234] = ["% redn. of block stress by limiter", "", "", "", ""] -atm_stashvar[6235] = ["X-COMPONENT OF SURFACE SSO STRESS", "", "", "", ""] -atm_stashvar[6236] = ["Y-COMPONENT OF SURFACE SSO STRESS", "", "", "", ""] -atm_stashvar[6237] = ["Froude No. scaling of surface stress", "", "", "", ""] -atm_stashvar[6241] = ["X COMPT OF GRAV. WAVE STRESS P LEVS", "", "", "", ""] -atm_stashvar[6247] = ["U-ACCEL FROM SATURATED STRESS P LEVS", "", "", "", ""] -atm_stashvar[6248] = ["OROGRAPHIC SUB-GRID SLOPE", "", "", "", ""] -atm_stashvar[6249] = ["OROGRAPHIC SUB-GRID ANISOTROPY", "", "", "", ""] -atm_stashvar[6250] = ["OROGRAPHIC SUB-GRID ORIENTATION", "", "", "", ""] -atm_stashvar[8023] = ["SNOW MASS AFTER HYDROLOGY KG/M2", "snw", "kg m-2", "surface_snow_amount", "snw_afterhydrol"] -atm_stashvar[8201] = ["LAND SNOW MELT AMOUNT KG/M2/TS", "", "", "", ""] -atm_stashvar[8202] = ["LAND SNOW MELT HEAT FLUX W/M2", "", "", "", ""] -atm_stashvar[8204] = ["SFC RUNOFF AMOUNT:LAND MEAN KG/M2/TS", "", "", "", ""] -atm_stashvar[8205] = ["SUB-SFC RUNOFF AMT:LAND MN KG/M2/TS", "", "", "", ""] -atm_stashvar[8208] = ["SOIL MOISTURE CONTENT", "mrso", "kg m-2", "mass_content_of_water_in_soil", ""] -atm_stashvar[8209] = ["CANOPY WATER CONTENT", "cw", "kg m-2", "", ""] -atm_stashvar[8223] = ["SOIL MOISTURE CONTENT IN A LAYER", "mrsol", "kg m-2", "mass_content_of_water_in_soil_layer", ""] -atm_stashvar[8225] = ["DEEP SOIL TEMP. AFTER HYDROLOGY DEGK", "tsl", "K", "soil_temperature", ""] -atm_stashvar[8229] = ["UNFROZEN SOIL MOISTURE FRACTION", "mrlqso", "1", "mass_fraction_of_unfrozen_water_in_soil_moisture", ""] -atm_stashvar[8230] = ["FROZEN SOIL MOISTURE FRACTION", "mrfsofr", "1", "mass_fraction_of_frozen_water_in_soil_moisture", ""] -atm_stashvar[8231] = ["LAND SNOW MELT RATE KG/M2/S", "snm", "kg m-2 s-1", "surface_snow_melt_flux", ""] -atm_stashvar[8233] = ["CANOPY THROUGHFALL RATE KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[8234] = ["SURFACE RUNOFF RATE KG/M2/S", "mrros", "kg m-2 s-1", "surface_runoff_flux", ""] -atm_stashvar[8235] = ["SUB-SURFACE RUNOFF RATE KG/M2/S", "mrrob", "kg m-2 s-1", "subsurface_runoff_flux", ""] -atm_stashvar[8236] = ["SNOW AMOUNT ON TILES KG/M2", "", "kg m-2", "", ""] -atm_stashvar[8237] = ["SNOW MELT RATE ON TILES KG/M2/S", "snm_tile", "kg m-2 s-1", "surface_snow_melt_flux", ""] -atm_stashvar[8238] = ["SNOW GRAIN SIZE ON TILES MICRONS", "", "", "", ""] -atm_stashvar[8239] = ["BASE FLOW AMOUNT KG/M2/S", "", "", "", ""] -atm_stashvar[8240] = ["DUNNE RUNOFF KG/M2/S", "", "", "", ""] -atm_stashvar[8241] = ["BASE FLOW FROM ZW LAYER KG/M2/S", "", "", "", ""] -atm_stashvar[8242] = ["CH4 WETLAND FLUX(FOR UKCA) UG C/M2/S", "", "", "", ""] -atm_stashvar[8243] = ["MEAN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[8244] = ["STANDARD DEVN IN TOPOGRAPHIC INDEX", "", "", "", ""] -atm_stashvar[8245] = ["INLANDBASINFLOW ATM GRID KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[8246] = ["INTEGRATED GAMMA DISTRIBUTION", "", "", "", ""] -atm_stashvar[8247] = ["SURFACE SATURATION FRACTION", "", "", "", ""] -atm_stashvar[8248] = ["SURFACE WETLAND FRACTION", "", "", "", ""] -atm_stashvar[8249] = ["MEAN WATER TABLE DEPTH M", "", "", "", ""] -atm_stashvar[8250] = ["SATURATION FRAC IN DEEP LAYER", "", "", "", ""] -atm_stashvar[8251] = ["EXP DECAY IN SOIL SAT HYD CONDUCTY", "", "", "", ""] -atm_stashvar[8252] = ["DRAINAGE OUT OF SOIL MODEL KG/M2/S", "", "", "", ""] -atm_stashvar[8258] = ["ACCUM SURFACE RUNOFF RATE KG/M2/S", "", "", "", ""] -atm_stashvar[8259] = ["ACCUM SUB-SURFACE RUNOFF RATEKG/M2/S", "", "", "", ""] -atm_stashvar[8260] = ["CH4 WETLAND FLX(CS) KG C/M2/S", "", "", "", ""] -atm_stashvar[8261] = ["CH4 WETLAND FLX(NPP) KG C/M2/S", "", "", "", ""] -atm_stashvar[8262] = ["CH4 WETLAND FLX(SOIL RESP) KG C/M2/S", "", "", "", ""] -atm_stashvar[8376] = ["SNOW DEPTH ON GROUND ON TILES (M)", "", "", "", ""] -atm_stashvar[8576] = ["TEMP OF TILED SUBSURFACE (K)", "", "", "", ""] -atm_stashvar[8577] = ["TILED HEAT FLUX TO SUBSURFACE W/M2", "", "", "", ""] -atm_stashvar[8578] = ["TILED SNOW MASS BALANCE KG/M2/S", "", "", "", ""] -atm_stashvar[8579] = ["TILED SNOW TOTAL MELT RATE KG/M2/S", "", "", "", ""] -atm_stashvar[8580] = ["TILED SNOW TOTAL REFREEZE KG/M2/S", "", "", "", ""] -atm_stashvar[8581] = ["TILED SNOW SOLIDMASS CHANGE KG/M2/S", "", "", "", ""] -atm_stashvar[8582] = ["TILED SNOW LIQUID CHANGE KG/M2/S", "", "", "", ""] -atm_stashvar[8583] = ["TILED SNOW NET RUNOFF KG/M2/S", "", "", "", ""] -atm_stashvar[8700] = ["BURNT AREA FRACTION(POTEN) S-1", "", "", "", ""] -atm_stashvar[8701] = ["C EMISS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8702] = ["DPM C EMISS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8703] = ["RPM C EMISS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8710] = ["BURNT AREA FRAC ON PFTS (POTEN) S-1", "", "", "", ""] -atm_stashvar[8711] = ["C EMISS ON PFTS (POTEN) KG C/M2/S", "", "", "", ""] -atm_stashvar[8720] = ["CO2 EMISS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8721] = ["CO EMISS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8722] = ["CH4 EMISS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8723] = ["NOx EMISS (POTEN) KG NO/M2/S", "", "", "", ""] -atm_stashvar[8735] = ["CO2 EMISS ON PFTS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8736] = ["CO EMISS ON PFTS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8737] = ["CH4 EMISS ON PFTS (POTEN) KG/M2/S", "", "", "", ""] -atm_stashvar[8738] = ["NOx EMISS ON PFTS (POT) KG NO/M2/S", "", "", "", ""] -atm_stashvar[8750] = ["SO2 EMISS (POTEN) KG SO2/M2/S", "", "", "", ""] -atm_stashvar[8751] = ["BC EMISS (POTEN) KG BC/M2/S", "", "", "", ""] -atm_stashvar[8752] = ["OC EMISS (POTEN) KG OC/M2/S", "", "", "", ""] -atm_stashvar[8765] = ["SO2 EMISS ON PFTS (POT) KG SO2/M2/S", "", "", "", ""] -atm_stashvar[8766] = ["BC EMISS ON PFTS (POT) KG BC/M2/S", "", "", "", ""] -atm_stashvar[8767] = ["OC EMISS ON PFTS (POT) KG OC/M2/S", "", "", "", ""] -atm_stashvar[9004] = ["TEMPERATURE AFTER MAIN DYN CLOUD", "", "", "", ""] -atm_stashvar[9010] = ["SPEC. HUMIDITY AFTER MAIN DYN CLOUD", "", "", "", ""] -atm_stashvar[9181] = ["TEMPERATURE INC: bdy layer + ls cld", "", "", "", ""] -atm_stashvar[9182] = ["SPEC HUMIDITY INC: bdy layr + ls cld", "", "", "", ""] -atm_stashvar[9183] = ["QCL INC: bdy layer + ls cld", "", "", "", ""] -atm_stashvar[9201] = ["BULK CLOUD AMOUNT AFTER MAIN CLOUD", "", "", "", ""] -atm_stashvar[9202] = ["VERY LOW CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9203] = ["LOW CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9204] = ["MEDIUM CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9205] = ["HIGH CLOUD AMOUNT", "", "", "", ""] -atm_stashvar[9206] = ["CLOUD LIQUID WATER AFTER MAIN CLOUD", "", "", "", ""] -atm_stashvar[9207] = ["CLOUD ICE CONTENT AFTER DYNAM CLOUD", "", "", "", ""] -atm_stashvar[9208] = ["CLOUD BASE ASL COVER.GT.0.1 OCTA KFT", "", "", "", ""] -atm_stashvar[9209] = ["CLOUD BASE ASL COVER.GT.1.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9210] = ["CLOUD BASE ASL COVER.GT.2.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9211] = ["CLOUD BASE ASL COVER.GT.3.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9212] = ["CLOUD BASE ASL COVER.GT.4.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9213] = ["CLOUD BASE ASL COVER.GT.5.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9214] = ["CLOUD BASE ASL COVER.GT.6.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9215] = ["CLOUD BASE ASL COVER.GT.7.9 OCTA KFT", "", "", "", ""] -atm_stashvar[9216] = ["TOTAL CLOUD AMOUNT - RANDOM OVERLAP", "", "", "", ""] -atm_stashvar[9217] = ["TOTAL CLOUD AMOUNT MAX/RANDOM OVERLP", "clt", "1", "cloud_area_fraction", ""] -atm_stashvar[9218] = ["CLOUD FRACTION BELOW 1000 FT ASL", "", "", "", ""] -atm_stashvar[9219] = ["LOW CLOUD BASE (FT ASL)", "", "", "", ""] -atm_stashvar[9220] = ["LOW CLOUD TOP (FT ASL)", "", "", "", ""] -atm_stashvar[9221] = ["WET BULB FREEZING LEV HEIGHT (M)", "", "", "", ""] -atm_stashvar[9222] = ["WET BULB TEMPERATURE (K)", "", "", "", ""] -atm_stashvar[9223] = ["TOTAL CLOUD TOP HEIGHT (KFT)", "", "", "", ""] -atm_stashvar[9226] = ["LAYER CLOUD FREQUENCY IN EACH LAYER", "", "", "", ""] -atm_stashvar[9228] = ["CRITICAL RELATIVE HUMIDITY IN LAYERS", "", "", "", ""] -atm_stashvar[9229] = ["RELATIVE HUMIDITY AFTER MAIN CLOUD", "", "", "", ""] -atm_stashvar[9230] = ["VISIBILITY ON MODEL LEVELS M", "", "", "", ""] -atm_stashvar[9231] = ["COMBINED CLOUD AMOUNT IN EACH LAYER", "", "", "", ""] -atm_stashvar[9232] = ["CEILOMETER CLD AMT - RANDOM OVERLAP", "", "", "", ""] -atm_stashvar[9233] = ["CEILOMETER CLD AMT MAX/RANDOM OVERLP", "", "", "", ""] -atm_stashvar[9234] = ["CEILOMETER CLOUD AMT IN EACH LAYER", "", "", "", ""] -atm_stashvar[9238] = ["CLOUD TOP ASL COVER.GT.0.1 OCTA KFT", "", "", "", ""] -atm_stashvar[9239] = ["CLOUD TOP ASL COVER.GT.1.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9240] = ["CLOUD TOP ASL COVER.GT.2.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9241] = ["CLOUD TOP ASL COVER.GT.3.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9242] = ["CLOUD TOP ASL COVER.GT.4.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9243] = ["CLOUD TOP ASL COVER.GT.5.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9244] = ["CLOUD TOP ASL COVER.GT.6.5 OCTA KFT", "", "", "", ""] -atm_stashvar[9245] = ["CLOUD TOP ASL COVER.GT.7.9 OCTA KFT", "", "", "", ""] -atm_stashvar[9310] = ["Icing Index II(RH)", "", "", "", ""] -atm_stashvar[9311] = ["Icing Index Flag II(RH)>0.1", "", "", "", ""] -atm_stashvar[9312] = ["Icing Index Flag II(RH)>0.2", "", "", "", ""] -atm_stashvar[9313] = ["Icing Index Flag II(RH)>0.3", "", "", "", ""] -atm_stashvar[9314] = ["Icing Index Flag II(RH)>0.4", "", "", "", ""] -atm_stashvar[9315] = ["Icing Index Flag II(RH)>0.5", "", "", "", ""] -atm_stashvar[9316] = ["Icing Index Flag II(RH)>0.6", "", "", "", ""] -atm_stashvar[9317] = ["Icing Index Flag II(RH)>0.7", "", "", "", ""] -atm_stashvar[9318] = ["Icing Index Flag II(RH)>0.8", "", "", "", ""] -atm_stashvar[9319] = ["Icing Index Flag II(RH)>0.9", "", "", "", ""] -atm_stashvar[9320] = ["Icing Index II(RHCldPres)", "", "", "", ""] -atm_stashvar[9321] = ["Icing Index Flag II(RHCldPres)>0.1", "", "", "", ""] -atm_stashvar[9322] = ["Icing Index Flag II(RHCldPres)>0.2", "", "", "", ""] -atm_stashvar[9323] = ["Icing Index Flag II(RHCldPres)>0.3", "", "", "", ""] -atm_stashvar[9324] = ["Icing Index Flag II(RHCldPres)>0.4", "", "", "", ""] -atm_stashvar[9325] = ["Icing Index Flag II(RHCldPres)>0.5", "", "", "", ""] -atm_stashvar[9326] = ["Icing Index Flag II(RHCldPres)>0.6", "", "", "", ""] -atm_stashvar[9327] = ["Icing Index Flag II(RHCldPres)>0.7", "", "", "", ""] -atm_stashvar[9328] = ["Icing Index Flag II(RHCldPres)>0.8", "", "", "", ""] -atm_stashvar[9329] = ["Icing Index Flag II(RHCldPres)>0.9", "", "", "", ""] -atm_stashvar[9330] = ["Icing Index II(CF)", "", "", "", ""] -atm_stashvar[9331] = ["Icing Index Flag II(CF)>0.1", "", "", "", ""] -atm_stashvar[9332] = ["Icing Index II(CF)>0.2", "", "", "", ""] -atm_stashvar[9333] = ["Icing Index Flag II(CF)>0.3", "", "", "", ""] -atm_stashvar[9334] = ["Icing Index Flag II(CF)>0.4", "", "", "", ""] -atm_stashvar[9335] = ["Icing Index Flag II(CF)>0.5", "", "", "", ""] -atm_stashvar[9336] = ["Icing Index Flag II(CF)>0.6", "", "", "", ""] -atm_stashvar[9337] = ["Icing Index Flag II(CF)>0.7", "", "", "", ""] -atm_stashvar[9338] = ["Icing Index Flag II(CF)>0.8", "", "", "", ""] -atm_stashvar[9339] = ["Icing Index Flag II(CF)>0.9", "", "", "", ""] -atm_stashvar[9340] = ["Icing Index II(LCF)", "", "", "", ""] -atm_stashvar[9341] = ["Icing Index Flag II(LCF)>0.1", "", "", "", ""] -atm_stashvar[9342] = ["Icing Index Flag II(LCF)>0.2", "", "", "", ""] -atm_stashvar[9343] = ["Icing Index Flag II(LCF)>0.3", "", "", "", ""] -atm_stashvar[9344] = ["Icing Index Flag II(LCF)>0.4", "", "", "", ""] -atm_stashvar[9345] = ["Icing Index Flag II(LCF)>0.5", "", "", "", ""] -atm_stashvar[9346] = ["Icing Index Flag II(LCF)>0.6", "", "", "", ""] -atm_stashvar[9347] = ["Icing Index Flag II(LCF)>0.7", "", "", "", ""] -atm_stashvar[9348] = ["Icing Index Flag II(LCF)>0.8", "", "", "", ""] -atm_stashvar[9349] = ["Icing Index Flag II(LCF)>0.9", "", "", "", ""] -atm_stashvar[9350] = ["Icing Index II(LWC)", "", "", "", ""] -atm_stashvar[9351] = ["Icing Index Flag II(LWC)>0.1", "", "", "", ""] -atm_stashvar[9352] = ["Icing Index Flag II(LWC)>0.2", "", "", "", ""] -atm_stashvar[9353] = ["Icing Index Flag II(LWC)>0.3", "", "", "", ""] -atm_stashvar[9354] = ["Icing Index Flag II(LWC)>0.4", "", "", "", ""] -atm_stashvar[9355] = ["Icing Index Flag II(LWC)>0.5", "", "", "", ""] -atm_stashvar[9356] = ["Icing Index Flag II(LWC)>0.6", "", "", "", ""] -atm_stashvar[9357] = ["Icing Index Flag II(LWC)>0.7", "", "", "", ""] -atm_stashvar[9358] = ["Icing Index Flag II(LWC)>0.8", "", "", "", ""] -atm_stashvar[9359] = ["Icing Index Flag II(LWC)>0.9", "", "", "", ""] -atm_stashvar[9360] = ["Icing Index II(icLWC)", "", "", "", ""] -atm_stashvar[9361] = ["Icing Index Flag II(icLWC)>0.1", "", "", "", ""] -atm_stashvar[9362] = ["Icing Index Flag II(icLWC)>0.2", "", "", "", ""] -atm_stashvar[9363] = ["Icing Index Flag II(icLWC)>0.3", "", "", "", ""] -atm_stashvar[9364] = ["Icing Index Flag II(icLWC)>0.4", "", "", "", ""] -atm_stashvar[9365] = ["Icing Index Flag II(icLWC)>0.5", "", "", "", ""] -atm_stashvar[9366] = ["Icing Index Flag II(icLWC)>0.6", "", "", "", ""] -atm_stashvar[9367] = ["Icing Index Flag II(icLWC)>0.7", "", "", "", ""] -atm_stashvar[9368] = ["Icing Index Flag II(icLWC)>0.8", "", "", "", ""] -atm_stashvar[9369] = ["Icing Index Flag II(icLWC)>0.9", "", "", "", ""] -atm_stashvar[9370] = ["Icing Index II(FROST-LN)", "", "", "", ""] -atm_stashvar[9371] = ["Icing Index Flag II(FROST-LN)>0.1", "", "", "", ""] -atm_stashvar[9372] = ["Icing Index Flag II(FROST-LN)>0.2", "", "", "", ""] -atm_stashvar[9373] = ["Icing Index Flag II(FROST-LN)>0.3", "", "", "", ""] -atm_stashvar[9374] = ["Icing Index Flag II(FROST-LN)>0.4", "", "", "", ""] -atm_stashvar[9375] = ["Icing Index Flag II(FROST-LN)>0.5", "", "", "", ""] -atm_stashvar[9376] = ["Icing Index Flag II(FROST-LN)>0.6", "", "", "", ""] -atm_stashvar[9377] = ["Icing Index Flag II(FROST-LN)>0.7", "", "", "", ""] -atm_stashvar[9378] = ["Icing Index Flag II(FROST-LN)>0.8", "", "", "", ""] -atm_stashvar[9379] = ["Icing Index Flag II(FROST-LN)>0.9", "", "", "", ""] -atm_stashvar[9380] = ["Icing Index II(FROST-Gamma)", "", "", "", ""] -atm_stashvar[9381] = ["Icing Index Flag II(FROSTGamma)>0.1", "", "", "", ""] -atm_stashvar[9382] = ["Icing Index Flag II(FROSTGamma)>0.2", "", "", "", ""] -atm_stashvar[9383] = ["Icing Index Flag II(FROSTGamma)>0.3", "", "", "", ""] -atm_stashvar[9384] = ["Icing Index Flag II(FROSTGamma)>0.4", "", "", "", ""] -atm_stashvar[9385] = ["Icing Index Flag II(FROSTGamma)>0.5", "", "", "", ""] -atm_stashvar[9386] = ["Icing Index Flag II(FROSTGamma)>0.6", "", "", "", ""] -atm_stashvar[9387] = ["Icing Index Flag II(FROSTGamma)>0.7", "", "", "", ""] -atm_stashvar[9388] = ["Icing Index Flag II(FROSTGamma)>0.8", "", "", "", ""] -atm_stashvar[9389] = ["Icing Index Flag II(FROSTGamma)>0.9", "", "", "", ""] -atm_stashvar[9391] = ["Icing Index 2d MaxRan II(RH)", "", "", "", ""] -atm_stashvar[9392] = ["Icing Index 2d MaxRan II(RHCldPres)", "", "", "", ""] -atm_stashvar[9393] = ["Icing Index 2d MaxRan II(CF)", "", "", "", ""] -atm_stashvar[9394] = ["Icing Index 2d MaxRan II(LCF)", "", "", "", ""] -atm_stashvar[9395] = ["Icing Index 2d MaxRan II(LWC)", "", "", "", ""] -atm_stashvar[9396] = ["Icing Index 2d MaxRan II(icLWC)", "", "", "", ""] -atm_stashvar[9397] = ["Icing Index 2d MaxRan II(FROST-LN)", "", "", "", ""] -atm_stashvar[9398] = ["Icing Index 2d MaxRan II(FROST-Gamma", "", "", "", ""] -atm_stashvar[10181] = ["dT SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[10185] = ["dU SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[10186] = ["dV SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[10187] = ["dW SOLVER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[12002] = ["U (MODEL LEVELS) AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12003] = ["V (MODEL LEVELS) AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12004] = ["TEMPERATURE AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12010] = ["SPECIFIC HUMIDITY AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12012] = ["QCF AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12170] = ["QCL INCR: advect positive", "", "", "", ""] -atm_stashvar[12171] = ["QCL INCR: advect negative", "", "", "", ""] -atm_stashvar[12172] = ["QCF INCR: advect positive", "", "", "", ""] -atm_stashvar[12173] = ["QCF INCR: advect negative", "", "", "", ""] -atm_stashvar[12176] = ["LIQ CLOUD VOL INCR: advect positive", "", "", "", ""] -atm_stashvar[12177] = ["LIQ CLOUD VOL INCR: advect negative", "", "", "", ""] -atm_stashvar[12178] = ["FROZEN CLOUD VOL INCR:advect positiv", "", "", "", ""] -atm_stashvar[12179] = ["FROZEN CLOUD VOL INCR:advect negativ", "", "", "", ""] -atm_stashvar[12181] = ["TEMPERATURE INCR: advect K/Timestep", "", "", "", ""] -atm_stashvar[12182] = ["Q INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12183] = ["QCL INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12184] = ["QCF INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12185] = ["U WIND INCR: advection", "", "", "", ""] -atm_stashvar[12186] = ["V WIND INCR: advection", "", "", "", ""] -atm_stashvar[12187] = ["W INCR: advect m/s/timestep", "", "", "", ""] -atm_stashvar[12189] = ["RAIN INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12190] = ["GRAUPEL INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12191] = ["QCF2 INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12192] = ["BULK CLOUD VOL INCR: advect", "", "", "", ""] -atm_stashvar[12193] = ["LIQUID CLOUD VOL INCR: advect", "", "", "", ""] -atm_stashvar[12194] = ["FROZEN CLOUD VOL INCR: advect", "", "", "", ""] -atm_stashvar[12195] = ["M_V INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12196] = ["M_CL INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12197] = ["M_CF INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12198] = ["M_RAIN INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12199] = ["M_GRAUP INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12200] = ["M_CF2 INCR: advect kg/kg/timestep", "", "", "", ""] -atm_stashvar[12203] = ["dz to w departure point m", "", "", "", ""] -atm_stashvar[12204] = ["lambda w departure point radians", "", "", "", ""] -atm_stashvar[12205] = ["phi w departure point radians", "", "", "", ""] -atm_stashvar[12254] = ["QCL AFTER ADVECTION", "", "", "", ""] -atm_stashvar[12381] = ["TEMP INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12382] = ["Q INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12383] = ["QCL INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12384] = ["QCF INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12389] = ["RAIN INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12390] = ["GRAUPEL INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12391] = ["QCF2 INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12395] = ["M_V INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12396] = ["M_CL INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12397] = ["M_CF INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12398] = ["M_RAIN INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12399] = ["M_GRAUP INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[12400] = ["M_CF2 INC DUE TO ADV CORRECTION", "", "", "", ""] -atm_stashvar[13181] = ["dT DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13182] = ["dQ DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13185] = ["dU DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13186] = ["dV DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13187] = ["dW DIFFUSION INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13190] = ["SMAG: VISC_M", "", "", "", ""] -atm_stashvar[13191] = ["SMAG: VISC_H", "", "", "", ""] -atm_stashvar[13192] = ["SMAG: S (SHEAR TERM)", "", "", "", ""] -atm_stashvar[13193] = ["MIXING LENGTH RNEUTML", "", "", "", ""] -atm_stashvar[13201] = ["Indicator of local q diffusion", "", "", "", ""] -atm_stashvar[13381] = ["dT FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13385] = ["dU FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13386] = ["dV FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13387] = ["dW FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13388] = ["dEXNER FILTER INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13481] = ["dT FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13485] = ["dU FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13486] = ["dV FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[13487] = ["dW FILTER INC INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[14181] = ["TEMPERATURE INCR: En cor K/Timestep", "", "", "", ""] -atm_stashvar[14201] = ["ATMOS ENERGY CORR'N IN COLUMN W/M2", "", "", "", ""] -atm_stashvar[15002] = ["U WIND ON MODEL LEVELS B GRID", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[15003] = ["V WIND ON MODEL LEVELS B GRID", "va", "m s-1", "northward_wind", ""] -atm_stashvar[15101] = ["H OF THETA MODEL LEVS FROM SEA LEVEL", "", "", "", ""] -atm_stashvar[15102] = ["H OF RHO MODEL LEVS FROM SEA LEVEL", "", "", "", ""] -atm_stashvar[15108] = ["PRESSURE ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15119] = ["THETA ON GEOMETRIC HEIGHT LEVELS", "", "K", "air_potential_temperature", ""] -atm_stashvar[15127] = ["RHO ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15142] = ["W ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15143] = ["U ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15144] = ["V ON GEOMETRIC HEIGHT LEVELS", "", "", "", ""] -atm_stashvar[15181] = ["dT INC FROM QT_BAL_CLD", "", "", "", ""] -atm_stashvar[15182] = ["DQ INC FROM QT_BAL_CLD", "", "", "", ""] -atm_stashvar[15183] = ["DQCL INC FROM QT_BAL_CLD", "", "", "", ""] -atm_stashvar[15201] = ["U WIND ON PRESSURE LEVELS B GRID", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[15202] = ["V WIND ON PRESSURE LEVELS B GRID", "va", "m s-1", "northward_wind", ""] -atm_stashvar[15212] = ["50 METRE WIND U-COMPONENT B GRID", "", "", "", ""] -atm_stashvar[15213] = ["50 METRE WIND V-COMPONENT B GRID", "", "", "", ""] -atm_stashvar[15214] = ["ERTEL POTENTIAL VORTICITY THETA SURF", "", "", "", ""] -atm_stashvar[15215] = ["THETA ON PV=+/-2 SURFACE", "", "K", "air_potential_temperature", ""] -atm_stashvar[15216] = ["THETA AT PV POINTS", "", "K", "air_potential_temperature", ""] -atm_stashvar[15217] = ["PV ON MODEL LEVELS(CALC PV)", "", "", "", ""] -atm_stashvar[15218] = ["PV on model theta levels", "", "", "", ""] -atm_stashvar[15229] = ["POTENTIAL VORTICITY ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[15231] = ["TEST FIELD ON V-GRID-SINGLE LEVEL", "", "", "", ""] -atm_stashvar[15232] = ["TEST FIELD ON P GRID-SINGLE LEVEL", "", "", "", ""] -atm_stashvar[15233] = ["TEST FIELD ON P GRID-PRESS LEVELS", "", "", "", ""] -atm_stashvar[15234] = ["TEST FIELD ON P GRID-MODEL LEVELS", "", "", "", ""] -atm_stashvar[15242] = ["W COMPNT (OF WIND) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[15243] = ["U WIND ON PRESSURE LEVELS", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[15244] = ["V WIND ON PRESSURE LEVELS", "va", "m s-1", "northward_wind", ""] -atm_stashvar[15245] = ["50 METRE WIND U-COMPONENT", "", "", "", ""] -atm_stashvar[15246] = ["50 METRE WIND V-COMPONENT", "", "", "", ""] -atm_stashvar[15260] = ["Rho*w on rho levels", "", "", "", ""] -atm_stashvar[15261] = ["Rho*u*w on rho levels", "", "", "", ""] -atm_stashvar[15262] = ["Rho*v*w on rho levels", "", "", "", ""] -atm_stashvar[15263] = ["Rho*w with w > 0m/s on rho levels", "", "", "", ""] -atm_stashvar[15264] = ["Rho*w with w < 0m/s on rho levels", "", "", "", ""] -atm_stashvar[15265] = ["Rho*w with w > 1m/s on rho levels", "", "", "", ""] -atm_stashvar[15266] = ["Rho*w with w < -1m/s on rho levels", "", "", "", ""] -atm_stashvar[15270] = ["SQU OF NORM OF FOURIER TRANS OF W", "", "", "", ""] -atm_stashvar[15271] = ["True unscaled density", "", "", "", ""] -atm_stashvar[16004] = ["TEMPERATURE ON THETA LEVELS", "ta", "K", "air_temperature", ""] -atm_stashvar[16140] = ["QCL INCR: pc2 init positive", "", "", "", ""] -atm_stashvar[16141] = ["QCL INCR: pc2 init negative", "", "", "", ""] -atm_stashvar[16142] = ["QCF INCR: pc2 init positive", "", "", "", ""] -atm_stashvar[16143] = ["QCF INCR: pc2 init negative", "", "", "", ""] -atm_stashvar[16146] = ["LIQ CLOUD VOL INCR: pc2 init positiv", "", "", "", ""] -atm_stashvar[16147] = ["LIQ CLOUD VOL INCR: pc2 init negativ", "", "", "", ""] -atm_stashvar[16148] = ["ICE CLOUD VOL INCR: pc2 init positiv", "", "", "", ""] -atm_stashvar[16149] = ["ICE CLOUD VOL INCR: pc2 init negativ", "", "", "", ""] -atm_stashvar[16150] = ["QCL INCR: pc2 pressure change positi", "", "", "", ""] -atm_stashvar[16151] = ["QCL INCR: pc2 pressure change negati", "", "", "", ""] -atm_stashvar[16156] = ["LIQ CLOUD VOL INCR: pc2 press positi", "", "", "", ""] -atm_stashvar[16157] = ["LIQ CLOUD VOL INCR: pc2 press negati", "", "", "", ""] -atm_stashvar[16161] = ["TEMPERATURE INCR: pc2 initialisation", "", "", "", ""] -atm_stashvar[16162] = ["SPECIFIC HUMIDITY INCR: pc2 initiali", "", "", "", ""] -atm_stashvar[16163] = ["QCL INCR: pc2 initialisation", "", "", "", ""] -atm_stashvar[16164] = ["QCF INCR: pc2 initialisation", "", "", "", ""] -atm_stashvar[16172] = ["BULK CLOUD VOL INCR: pc2 initialisat", "", "", "", ""] -atm_stashvar[16173] = ["LIQ CLOUD VOL INCR: pc2 init", "", "", "", ""] -atm_stashvar[16174] = ["ICE CLOUD VOL INCR: pc2 initialise", "", "", "", ""] -atm_stashvar[16181] = ["TEMPERATURE INCR: pc2 pres change", "", "", "", ""] -atm_stashvar[16182] = ["SPECIFIC HUMIDITY INCR: pc2 pressure", "", "", "", ""] -atm_stashvar[16183] = ["QCL INCR: pc2 pressure change", "", "", "", ""] -atm_stashvar[16184] = ["QCF INCR: from pc2 pressure change", "", "", "", ""] -atm_stashvar[16192] = ["BULK CLOUD VOL INCR: pc2 pres change", "", "", "", ""] -atm_stashvar[16193] = ["LIQ CLOUD VOL INCR: pc2 pressure cha", "", "", "", ""] -atm_stashvar[16194] = ["FROZEN CLOUD VOL INCR: pc2 pressure", "", "", "", ""] -atm_stashvar[16201] = ["GEOPOTENTIAL HEIGHT ON THETA LEVELS", "zg", "m", "geopotential_height", ""] -atm_stashvar[16202] = ["GEOPOTENTIAL HEIGHT ON P LEV/P GRID", "zg", "m", "geopotential_height", ""] -atm_stashvar[16203] = ["TEMPERATURE ON P LEV/P GRID", "ta", "K", "air_temperature", ""] -atm_stashvar[16204] = ["RH WRT ICE ON P LEV/P GRID", "hur", "%", "relative_humidity", ""] -atm_stashvar[16205] = ["WET BULB POTENTIAL TEMPERATURE K", "", "", "", ""] -atm_stashvar[16206] = ["CLOUD WATER CONTENT (qc)", "", "", "", ""] -atm_stashvar[16207] = ["TOTAL SPECIFIC HUMIDITY (qT)", "", "", "", ""] -atm_stashvar[16222] = ["PRESSURE AT MEAN SEA LEVEL", "psl", "Pa", "air_pressure_at_sea_level", ""] -atm_stashvar[16255] = ["GEOPOTENTIAL HEIGHT ON RHO LEVELS", "zg", "m", "geopotential_height", ""] -atm_stashvar[16256] = ["RH WRT WATER ON P LEV/P GRID", "hur", "%", "relative_humidity", ""] -atm_stashvar[17203] = ["MSA MASS MIXING RATIO FLUX KG/KG/S", "", "", "", ""] -atm_stashvar[17204] = ["NH3 DEPLETION KG/KG AFTER TSTEP", "", "", "", ""] -atm_stashvar[17205] = ["DIMETHYL SULPHIDE EMISSIONS", "", "", "", ""] -atm_stashvar[17206] = ["DMS DRY OXIDATION MMR FLUX KG/KG/S", "", "", "", ""] -atm_stashvar[17207] = ["DMS DRY OXIDATION TO SO2 KG/KG/S", "", "", "", ""] -atm_stashvar[17208] = ["DMS DRY OXIDATION TO SO4 ACC KG/KG/S", "", "", "", ""] -atm_stashvar[17209] = ["DMS DRY OXIDATION TO SO4 AIT KG/KG/S", "", "", "", ""] -atm_stashvar[17210] = ["SO2 DRY OXID BY OH MMR FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17211] = ["SO2 WET OXID BY H2O2 FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17212] = ["SO2 WET OXID BY O3 FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17213] = ["SO4 DIS TO ACC BY EVAP FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17214] = ["SO4 ACC TO DIS BY NUCL FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17215] = ["SO4 AIT TO DIS BY DIFF FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17216] = ["SO4 AIT TO ACC BY COAG FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17217] = ["SO2 DRY OXID TO SO4 ACC FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17218] = ["SO2 DRY OXID TO SO4 AIT FLX KG/KG/S", "", "", "", ""] -atm_stashvar[17219] = ["SO4 AIT-ACC BY MODE MERGING kg/kg/s", "", "", "", ""] -atm_stashvar[17220] = ["PM10 CONCENTRATION", "", "", "", ""] -atm_stashvar[17221] = ["PM2.5 CONCENTRATION", "", "", "", ""] -atm_stashvar[17222] = ["SULPHATE CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17223] = ["SULPHATE CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17224] = ["BLACK CARBON CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17225] = ["BLACK CARBON CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17226] = ["BIOM BURNING CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17227] = ["BIOM BURNING CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17228] = ["OCFF CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17229] = ["OCFF CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17230] = ["SOA CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17231] = ["SOA CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17232] = ["SEA SALT CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17233] = ["SEA SALT CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17234] = ["DUST CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17235] = ["DUST CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17236] = ["NITRATE CONTRIB TO PM10 CONC", "", "", "", ""] -atm_stashvar[17237] = ["NITRATE CONTRIB TO PM2.5 CONC", "", "", "", ""] -atm_stashvar[17240] = ["NH3 OXID BY HNO3 MMR FLX KG[N]/KG/S", "", "", "", ""] -atm_stashvar[17241] = ["NIT ACC TO DIS BY NUC FLX KG[N]/KG/S", "", "", "", ""] -atm_stashvar[17242] = ["NIT DIS-ACC BY EVAP FLX KG[N]/KG/S", "", "", "", ""] -atm_stashvar[17257] = ["TOTAL DUST CONC (microg/m3)", "", "", "", ""] -atm_stashvar[19001] = ["VEGETATION CARBON ON PFTS KG C/M2", "", "", "", ""] -atm_stashvar[19002] = ["GRIDBOX MEAN VEG CARBON KG C/M2", "", "", "", ""] -atm_stashvar[19003] = ["PHENOLOGICAL LEAF TURNOVER RATE PFTS", "", "", "", ""] -atm_stashvar[19004] = ["LITTER CARBON ON PFTS KG C/M2/YEAR", "", "", "", ""] -atm_stashvar[19005] = ["GRIDBOX MEAN LITTER CARBN KGC/M2/YR", "", "", "", ""] -atm_stashvar[19006] = ["MEAN LEAF TRNVR RATE PFTS FOR PHENOL", "", "", "", ""] -atm_stashvar[19007] = ["LEAF AREA INDEX PFTS AFTER PHENOLOGY", "", "", "", ""] -atm_stashvar[19008] = ["MN LEAF TRNVR RATE PFTS FOR TRIFFID", "", "", "", ""] -atm_stashvar[19009] = ["MEAN NPP ON PFTS FOR TRIFFID", "", "", "", ""] -atm_stashvar[19010] = ["MEAN WOOD RESP ON PFTS FOR TRIFFID", "", "", "", ""] -atm_stashvar[19011] = ["MEAN SOIL RESPIRATION FOR TRIFFID", "", "", "", ""] -atm_stashvar[19012] = ["DISTURBED FRACTION OF VEGETATION", "", "", "", ""] -atm_stashvar[19013] = ["SURFACE TYPE FRACTIONS AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19014] = ["LEAF AREA INDEX PFTS AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19015] = ["CANOPY HEIGHT ON PFTS AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19016] = ["SOIL CARBON CONTENT AFTER TRIFFID", "", "", "", ""] -atm_stashvar[19017] = ["DPM SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19018] = ["RPM SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19019] = ["BIO SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19020] = ["HUM SOIL RESP FOR TRIFFID KG C/M2/S", "", "", "", ""] -atm_stashvar[19021] = ["DPM SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19022] = ["RPM SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19023] = ["BIO SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19024] = ["HUM SOIL-C AFTER TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19025] = ["LEAF CARBON ON PFTS KGC/M2", "", "", "", ""] -atm_stashvar[19026] = ["GRIDBOX MEAN LEAF CARBON KGC/M2", "", "", "", ""] -atm_stashvar[19027] = ["WOOD CARBON ON PFTS KGC/M2", "", "", "", ""] -atm_stashvar[19028] = ["GRIDBOX MEAN WOOD CARBON KGC/M2", "", "", "", ""] -atm_stashvar[19029] = ["ROOT CARBON ON PFTS KGC/M2", "", "", "", ""] -atm_stashvar[19030] = ["GRIDBOX MEAN ROOT CARBON KGC/M2", "", "", "", ""] -atm_stashvar[19031] = ["PREVIOUS DIST FRAC OF VEGETATION", "", "", "", ""] -atm_stashvar[19032] = ["FAST TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[19033] = ["MEDIUM TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[19034] = ["SLOW TURNOVER WOOD PRODUCT KGC/M2", "", "", "", ""] -atm_stashvar[19036] = ["LU C FLUX TO FAST POOL KGC/M2/YR", "", "", "", ""] -atm_stashvar[19037] = ["LU C FLUX TO MEDIUM POOL KGC/M2/YR", "", "", "", ""] -atm_stashvar[19038] = ["LU C FLUX TO SLOW POOL KGC/M2/YR", "", "", "", ""] -atm_stashvar[19039] = ["FAST POOL DECOMP C FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19040] = ["MEDIUM POOL DECOMP C FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19041] = ["SLOW POOL DECOMP C FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19042] = ["LANDUSE CO2 FLUX TO ATM KGC/M2/YR", "", "", "", ""] -atm_stashvar[19043] = ["HARVEST C ON PFTS KGC/M2/360d", "", "", "", ""] -atm_stashvar[19044] = ["HARVEST C (GBM) KGC/M2/360d", "", "", "", ""] -atm_stashvar[19045] = ["LANDUSE C TO SOIL ON PFTS KG/M2/YR", "", "", "", ""] -atm_stashvar[19046] = ["LANDUSE C TO SOIL (GBM) KGC/M2/YR", "", "", "", ""] -atm_stashvar[19047] = ["TRIFFID CO2 FLUX TO ATMOS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19048] = ["CARBON ERROR IN VEG2 KGC/M2", "", "", "", ""] -atm_stashvar[19049] = ["CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19050] = ["VEG CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19051] = ["SOIL CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19052] = ["WP CARBON ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19053] = ["SOIL TO ATMOS RESP FLUX KGC/M2/YR", "", "", "", ""] -atm_stashvar[19054] = ["FRAC. OF TOTAL LITTER GOING TO DPM", "", "", "", ""] -atm_stashvar[19101] = ["NPP ON PFTS POST N-LIMIT KGC/M2/YR", "", "", "", ""] -atm_stashvar[19102] = ["NPP POST N-LIMIT (GBM) KGC/M2/YR", "", "", "", ""] -atm_stashvar[19103] = ["EXUDATES ON PFTS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19104] = ["GRIDBOX MEAN EXUDATES KGC/M2/YR", "", "", "", ""] -atm_stashvar[19111] = ["NITROGEN DEPOSITION KGN/M2/YR", "", "", "", ""] -atm_stashvar[19112] = ["NITROGEN FIXATION PFTS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19113] = ["NITROGEN FIXATION (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19114] = ["NITROGEN LEACHING (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19115] = ["MINERALISED NIT. GAS LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19116] = ["INORG NITROGEN LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19117] = ["NITROGEN ATM GAS LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19118] = ["NITROGEN TOTAL LOSS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19119] = ["HARVEST N ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19120] = ["HARVEST N (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19121] = ["NITROGEN LUC ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19122] = ["NITROGEN LUC (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19123] = ["NITROGEN LITTER ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19124] = ["NITROGEN LITTER (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19125] = ["N FERTILISER ON PFTS KGN/M2/YR", "", "", "", ""] -atm_stashvar[19126] = ["N FERTILISER (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19127] = ["LANDUSE N TO SOIL ON PFTS KG/M2/YR", "", "", "", ""] -atm_stashvar[19128] = ["LANDUSE N TO SOIL (GBM) KGC/M2/YR", "", "", "", ""] -atm_stashvar[19131] = ["NITROGEN STEM/WOOD KGN/M2", "", "", "", ""] -atm_stashvar[19132] = ["NITROGEN LEAF KGN/M2", "", "", "", ""] -atm_stashvar[19133] = ["NITROGEN ROOT KGN/M2", "", "", "", ""] -atm_stashvar[19134] = ["NITROGEN LEAF LABILE KGN/M2", "", "", "", ""] -atm_stashvar[19135] = ["NITROGEN LEAF ALLOCATED KGN/M2", "", "", "", ""] -atm_stashvar[19136] = ["NITROGEN VEG KGN/M2", "", "", "", ""] -atm_stashvar[19137] = ["NITROGEN VEG (GBM) KGN/M2", "", "", "", ""] -atm_stashvar[19141] = ["NITROGEN SOIL RPM KGN/M2", "", "", "", ""] -atm_stashvar[19142] = ["NITROGEN SOIL DPM KGN/M2", "", "", "", ""] -atm_stashvar[19143] = ["NITROGEN SOIL BIO KGN/M2", "", "", "", ""] -atm_stashvar[19144] = ["NITROGEN SOIL HUM KGN/M2", "", "", "", ""] -atm_stashvar[19145] = ["NITROGEN SOIL TOTAL KGN/M2", "", "", "", ""] -atm_stashvar[19146] = ["INORGANIC NITROGEN KGN/M2", "", "", "", ""] -atm_stashvar[19147] = ["NITROGEN TOTAL ECOSYSTEM KGN/M2", "", "", "", ""] -atm_stashvar[19152] = ["N DEMAND GROWTH KGN/M2/YR", "", "", "", ""] -atm_stashvar[19153] = ["N DEMAND SPREAD KGN/M2/YR", "", "", "", ""] -atm_stashvar[19154] = ["N DEMAND TOTAL KGN/M2/YR", "", "", "", ""] -atm_stashvar[19155] = ["N DEMAND TOTAL (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19156] = ["N UPTAKE TURNOVER KGN/M2/YR", "", "", "", ""] -atm_stashvar[19157] = ["N UPTAKE GROWTH KGN/M2/YR", "", "", "", ""] -atm_stashvar[19158] = ["N UPTAKE SPREAD KGN/M2/YR", "", "", "", ""] -atm_stashvar[19159] = ["N UPTAKE TOTAL KGN/M2/YR", "", "", "", ""] -atm_stashvar[19160] = ["N UPTAKE TOTAL (GBM) KGN/M2/YR", "", "", "", ""] -atm_stashvar[19161] = ["N SOIL DECOMPOSITION RATE MODIFIER", "", "", "", ""] -atm_stashvar[19162] = ["N IMMOBILIS POTEN DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19163] = ["N IMMOBILIS POTEN RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19164] = ["N IMMOBILIS POTEN BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19165] = ["N IMMOBILIS POTEN HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19166] = ["N IMMOBILIS POTEN TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19167] = ["N IMMOBILIS DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19168] = ["N IMMOBILIS RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19169] = ["N IMMOBILIS BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19170] = ["N IMMOBILIS HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19171] = ["N IMMOBILIS TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19172] = ["N MINERALIS POTEN DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19173] = ["N MINERALIS POTEN RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19174] = ["N MINERALIS POTEN BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19175] = ["N MINERALIS POTEN HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19176] = ["N MINERALIS POTEN TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19177] = ["N MINERALIS DPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19178] = ["N MINERALIS RPM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19179] = ["N MINERALIS BIO KGN/M2/YR", "", "", "", ""] -atm_stashvar[19180] = ["N MINERALIS HUM KGN/M2/YR", "", "", "", ""] -atm_stashvar[19181] = ["N MINERALIS TOT KGN/M2/YR", "", "", "", ""] -atm_stashvar[19182] = ["GPP ON PFTS (KGC/M2/YR)", "", "", "", ""] -atm_stashvar[19183] = ["GPP GRIDBOX MEAN (KGC/M2/YR)", "", "", "", ""] -atm_stashvar[19184] = ["PLANT RESP AFT N LIM PFTS KGC/M2/YR", "", "", "", ""] -atm_stashvar[19185] = ["PLANT RESP AFT N LIM GBM KGC/M2/YR", "", "", "", ""] -atm_stashvar[19186] = ["VEG NITROGEN ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19187] = ["SOIL NITROGEN ERROR TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19188] = ["INORG NITROGEN ERROR TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[19189] = ["NITROGEN ERROR IN TRIFFID KGC/M2", "", "", "", ""] -atm_stashvar[20001] = ["THICKNESS : 1000-500 MB", "", "", "", ""] -atm_stashvar[20002] = ["THICKNESS : 1000-850 MB", "", "", "", ""] -atm_stashvar[20003] = ["WIND SPEEDS : 10 METRES B GRID", "", "", "", ""] -atm_stashvar[20004] = ["WIND SPEEDS : PRESSURE LEVEL", "", "", "", ""] -atm_stashvar[20005] = ["DIVERGENCE", "", "", "", ""] -atm_stashvar[20006] = ["RELATIVE VORTICITY", "", "", "", ""] -atm_stashvar[20007] = ["MOUNTAIN WAVE TURBULENCE PREDICTOR", "", "", "", ""] -atm_stashvar[20012] = ["CONVECTIVE CLOUD DEPTHS (kft)", "", "", "", ""] -atm_stashvar[20013] = ["TOTAL PRECIP ACCUMULATION : 6 HOURS", "", "", "", ""] -atm_stashvar[20014] = ["PRECIPITATION SYMBOL", "", "", "", ""] -atm_stashvar[20015] = ["PRESENT WEATHER CODE", "", "", "", ""] -atm_stashvar[20016] = ["CAT PREDICTOR", "", "", "", ""] -atm_stashvar[20017] = ["MAX CAT", "", "", "", ""] -atm_stashvar[20018] = ["MAX CAT PRESSURE", "", "", "", ""] -atm_stashvar[20020] = ["MAX WIND U-COMPONENT", "", "", "", ""] -atm_stashvar[20021] = ["MAX WIND V-COMPONENT", "", "", "", ""] -atm_stashvar[20022] = ["MAX WIND PRESSURE", "", "", "", ""] -atm_stashvar[20023] = ["MAX WIND ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20024] = ["TROPOPAUSE PRESSURE", "", "", "", ""] -atm_stashvar[20025] = ["TROPOPAUSE TEMPERATURE", "", "", "", ""] -atm_stashvar[20026] = ["TROPOPAUSE HEIGHT", "", "", "", ""] -atm_stashvar[20027] = ["TROPOPAUSE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20028] = ["SNOW PROBABILITY", "", "", "", ""] -atm_stashvar[20029] = ["CONTRAIL - LOWER LIMIT", "", "", "", ""] -atm_stashvar[20030] = ["CONTRAIL - UPPER LIMIT", "", "", "", ""] -atm_stashvar[20031] = ["THERMAL ADVECTION", "", "", "", ""] -atm_stashvar[20032] = ["MEAN THERMAL ADVECTION", "", "", "", ""] -atm_stashvar[20033] = ["FREEZING LEVEL GEOPOTENTIAL HEIGHT", "", "", "", ""] -atm_stashvar[20034] = ["FREEZING LEVEL PRESSURE", "", "", "", ""] -atm_stashvar[20035] = ["FREEZING LEVEL ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20036] = ["-20C ISOTHERM GEOPOTENTIAL HEIGHT", "", "", "", ""] -atm_stashvar[20037] = ["-20C ISOTHERM PRESSURE", "", "", "", ""] -atm_stashvar[20038] = ["-20C ISOTHERM ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20039] = ["CONV CLOUD BASE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20040] = ["CONV CLOUD TOP ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20041] = ["MAXIMUM WIND BASE - ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20042] = ["MAXIMUM WIND TOP - ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20043] = ["WAFC ICING POTENTIAL", "", "", "", ""] -atm_stashvar[20044] = ["WAFC ICING POTENTIAL (retired)", "", "", "", ""] -atm_stashvar[20045] = ["WAFC IN-CLOUD TURB POTENTIAL", "", "", "", ""] -atm_stashvar[20046] = ["WAFC IN-CLOUD TURB POTENTIAL (ret)", "", "", "", ""] -atm_stashvar[20047] = ["WAFC CAT POTENTIAL", "", "", "", ""] -atm_stashvar[20048] = ["WAFC CAT POTENTIAL (retired)", "", "", "", ""] -atm_stashvar[20049] = ["WAFC CB HORIZONTAL EXTENT", "", "", "", ""] -atm_stashvar[20050] = ["WAFC PRESSURE AT CB BASE", "", "", "", ""] -atm_stashvar[20051] = ["WAFC PRESSURE AT CB TOP", "", "", "", ""] -atm_stashvar[20052] = ["WAFC PRESSURE AT EMBD CB BASE", "", "", "", ""] -atm_stashvar[20053] = ["WAFC PRESSURE AT EMBD CB TOP", "", "", "", ""] -atm_stashvar[20054] = ["WAFC ICAO HEIGHT AT CB BASE", "", "", "", ""] -atm_stashvar[20055] = ["WAFC ICAO HEIGHT AT CB TOP", "", "", "", ""] -atm_stashvar[20056] = ["WAFC ICAO HGHT EMBD CB BASE", "", "", "", ""] -atm_stashvar[20057] = ["WAFC ICAO HGHT EMBD CB TOP", "", "", "", ""] -atm_stashvar[20058] = ["SURFACE DUST CONCENTRATION (g/m3)", "", "", "", ""] -atm_stashvar[20059] = ["2000-5000FT DUST CONCENTRATION(g/m3)", "", "", "", ""] -atm_stashvar[20060] = ["ZENITH TOTAL DELAY", "", "", "", ""] -atm_stashvar[20061] = ["-70C ISOTHERM GEOPOTENTIAL HEIGHT", "", "", "", ""] -atm_stashvar[20062] = ["-70C ISOTHERM PRESSURE", "", "", "", ""] -atm_stashvar[20063] = ["-70C ISOTHERM ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20064] = ["TROPOPAUSE PRESSURE", "", "", "", ""] -atm_stashvar[20065] = ["TROPOPAUSE TEMPERATURE", "", "", "", ""] -atm_stashvar[20066] = ["TROPOPAUSE HEIGHT", "", "", "", ""] -atm_stashvar[20067] = ["TROPOPAUSE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[20068] = ["THINNED LS RAINFALL RATE KG/M2/S", "", "", "", ""] -atm_stashvar[20069] = ["THINNED TOTAL PRECIP RATE KG/M2/S", "", "", "", ""] -atm_stashvar[20070] = ["VIS AT 1.5M (incl ppn and dust) M", "", "", "", ""] -atm_stashvar[20071] = ["VIS IN DUST ONLY AT 1.5M M", "", "", "", ""] -atm_stashvar[20072] = ["CONVECTIVE PRECIP RATE: kg/m2/s", "", "", "", ""] -atm_stashvar[20073] = ["EXTENDED CONV PRECIP RATE: kg/m2/s", "", "", "", ""] -atm_stashvar[20074] = ["COLSON-PANOFSKY TURB INDEX m2/s2", "", "", "", ""] -atm_stashvar[20075] = ["ELLRODS TI1 TURBULENCE INDEX s-2", "", "", "", ""] -atm_stashvar[20076] = ["INVERSE RICHARDSON NUMBER (-)", "", "", "", ""] -atm_stashvar[20077] = ["WAFC CAT POT. (Turp et al) (StaGE)", "", "", "", ""] -atm_stashvar[20080] = ["UPDRAFT HELICITY 2000-5000m M2/S2", "", "", "", ""] -atm_stashvar[20084] = ["TROPOPAUSE PRESSURE", "", "", "", ""] -atm_stashvar[20085] = ["TROPOPAUSE TEMPERATURE", "", "", "", ""] -atm_stashvar[20086] = ["TROPOPAUSE HEIGHT", "", "", "", ""] -atm_stashvar[20087] = ["TROPOPAUSE ICAO HEIGHT", "", "", "", ""] -atm_stashvar[21100] = ["FLASH RATE S-1", "", "", "", ""] -atm_stashvar[21101] = ["STORM LOCATION FLAG", "", "", "", ""] -atm_stashvar[21102] = ["GRAUPEL WATER PATH IN ELEC KG M-2", "", "", "", ""] -atm_stashvar[21103] = ["TOTAL ICE WATER PATH IN ELEC KG M-2", "", "", "", ""] -atm_stashvar[21104] = ["NUMBER OF LIGHTNING FLASHES", "", "", "", ""] -atm_stashvar[21105] = ["FLASH RATE: GRAUP. FLX (MCCAUL) S-1", "", "", "", ""] -atm_stashvar[21106] = ["FLASH RATE: TOTAL ICE (MCCAUL) S-1", "", "", "", ""] -atm_stashvar[26001] = ["RIVER WATER STORAGE KG", "", "", "", ""] -atm_stashvar[26002] = ["GRIDBOX OUTFLOW KG/S", "", "kg s-1", "", ""] -atm_stashvar[26003] = ["GRIDBOX INFLOW KG/S", "", "kg s-1", "", ""] -atm_stashvar[26004] = ["RIVER OUTFLOW KG/M2/S", "", "kg m-2 s-1", "", ""] -atm_stashvar[26006] = ["INLANDBASINFLOW TRIP GRID KG/S", "", "kg s-1", "", ""] -atm_stashvar[30001] = ["U COMPNT OF WIND RHO GRID", "ua", "m s-1", "eastward_wind", ""] -atm_stashvar[30002] = ["V COMPNT OF WIND RHO GRID", "va", "m s-1", "northward_wind", ""] -atm_stashvar[30003] = ["W COMPNT OF WIND RHO GRID", "", "", "", ""] -atm_stashvar[30004] = ["TEMPERATURE RHO GRID", "ta", "K", "air_temperature", ""] -atm_stashvar[30005] = ["SPECIFIC HUMIDITY RHO GRID", "hus", "1", "specific_humidity", ""] -atm_stashvar[30006] = ["height model levels RHO GRID M", "", "", "", ""] -atm_stashvar[30007] = ["KE model levels RHO GRID m2/s2", "", "", "", ""] -atm_stashvar[30008] = ["OMEGA ON THETA LEVELS (C GRID)", "", "", "", ""] -atm_stashvar[30011] = ["U*U*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30012] = ["U*V*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30013] = ["U*W*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30014] = ["U*T*rho_dry*dr X1.E-5 kgK/ms", "", "", "", ""] -atm_stashvar[30015] = ["U*Q*rho_dry*dr X1.E-5 kg/ms", "", "", "", ""] -atm_stashvar[30016] = ["U*Z*rho_dry*dr X1.E-5 kg/s", "", "", "", ""] -atm_stashvar[30017] = ["U*KE*rho_dry*dr X1.E-5 kgm/s3", "", "", "", ""] -atm_stashvar[30022] = ["V*V*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30023] = ["V*W*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30024] = ["V*T*rho_dry*dr X1.E-5 kgK/ms", "", "", "", ""] -atm_stashvar[30025] = ["V*Q *rho_dry*dr X1.E-5 kg/ms", "", "", "", ""] -atm_stashvar[30026] = ["V*Z*rho_dry*dr X1.E-5 kg/s", "", "", "", ""] -atm_stashvar[30027] = ["V*KE*rho_dry*dr X1.E-5 kgm/s3", "", "", "", ""] -atm_stashvar[30033] = ["W*W*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30034] = ["W*T*rho_dry*dr X1.E-5 kgK/ms", "", "", "", ""] -atm_stashvar[30035] = ["W*Q *rho_dry*dr X1.E-5 kg/ms", "", "", "", ""] -atm_stashvar[30036] = ["W*Z*rho_dry*dr X1.E-5 kg/s", "", "", "", ""] -atm_stashvar[30037] = ["W*KE*rho_dry*dr X1.E-5 kgm/s3", "", "", "", ""] -atm_stashvar[30044] = ["T*T*rho_dry*dr X1.E-5 kgK2/m2", "", "", "", ""] -atm_stashvar[30045] = ["T*Q*rho_dry*dr X1.E-5 kgK/m2", "", "", "", ""] -atm_stashvar[30046] = ["TZ*rho_dry*dr X1.E-5 kgK/m", "", "", "", ""] -atm_stashvar[30047] = ["T*KE*rho_dry*dr X1.E-5 kgK/s2", "", "", "", ""] -atm_stashvar[30055] = ["QQ*rho_dry*dr X1.E-5 kg/m2", "", "", "", ""] -atm_stashvar[30056] = ["Q*Z*rho_dry*dr X1.E-5 kg", "", "", "", ""] -atm_stashvar[30057] = ["Q*KE*rho_dry*dr X1.E-5 kg/s2", "", "", "", ""] -atm_stashvar[30066] = ["Z*Z*rho_dry*dr X1.E-5 kg", "", "", "", ""] -atm_stashvar[30067] = ["Z*KE*rho_dry*dr X1.E-5 kg/ms2", "", "", "", ""] -atm_stashvar[30077] = ["KE*KE*rho_dry*dr X1.E-5 kg/m4s4", "", "", "", ""] -atm_stashvar[30078] = ["ZOM RHO GRID X1.E-16", "", "", "", ""] -atm_stashvar[30101] = ["U MASS WEIGHTED RHO GRID kgm/s", "", "", "", ""] -atm_stashvar[30102] = ["V MASS WEIGHTED RHO GRID kg/ms", "", "", "", ""] -atm_stashvar[30103] = ["W MASS WEIGHTED RHO GRID kg/ms", "", "", "", ""] -atm_stashvar[30104] = ["T MASS WEIGHTED RHO GRID kgK/m2", "", "", "", ""] -atm_stashvar[30105] = ["Q MASS WEIGHTED RHO GRID kg/m2", "", "", "", ""] -atm_stashvar[30106] = ["height mass weighted kg/m", "", "", "", ""] -atm_stashvar[30107] = ["KE mass weighted RHO GRID kg/s2", "", "", "", ""] -atm_stashvar[30111] = ["T AT EOT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30112] = ["WBIG Set to 1 if w GT 1.0m/s", "", "", "", ""] -atm_stashvar[30113] = ["RH on model levels at end timestep", "", "", "", ""] -atm_stashvar[30114] = ["WBIG Set to 1 if w GT 0.1m/s", "", "", "", ""] -atm_stashvar[30115] = ["DRY MASS WEIGHTING MODEL LEV KG/M2", "", "", "", ""] -atm_stashvar[30171] = ["dT**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30172] = ["dQ**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30173] = ["dQcl**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30174] = ["dQcf**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30175] = ["dU**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30176] = ["dV**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30177] = ["dW**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30178] = ["dRHO**2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30181] = ["T TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30182] = ["Q TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30183] = ["QCL TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30184] = ["QCF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30185] = ["U TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30186] = ["V TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30187] = ["W TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30188] = ["RHO TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30189] = ["RAIN TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30190] = ["GRAUPEL TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30191] = ["QCF2 TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30192] = ["CF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30193] = ["CFL TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30194] = ["CFF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30195] = ["M_V TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30196] = ["M_CL TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30197] = ["M_CF TOTAL INCREMENT ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30198] = ["M_RAIN TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30199] = ["M_GRAUP TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30200] = ["M_CF2 TOTAL INC ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30201] = ["U COMPNT OF WIND ON P LEV/UV GRID", "ua", "m s-1", "eastward_wind", "ua_plev"] -atm_stashvar[30202] = ["V COMPNT OF WIND ON P LEV/UV GRID", "va", "m s-1", "northward_wind", "va_plev"] -atm_stashvar[30203] = ["W COMPNT OF WIND ON P LEV/UV GRID", "wa", "m s-1", "upward_air_velocity", "wa_plev"] -atm_stashvar[30204] = ["TEMPERATURE ON P LEV/UV GRID", "ta", "K", "air_temperature", "ta_plev"] -atm_stashvar[30205] = ["SPECIFIC HUMIDITY ON P LEV/UV GRID", "hus", "1", "specific_humidity", "hus_plev"] -atm_stashvar[30206] = ["RELATIVE HUMIDITY ON P LEV/UV GRID", "hur", "%", "relative_humidity", "hur_plev"] -atm_stashvar[30207] = ["GEOPOTENTIAL HEIGHT ON P LEV/UV GRID", "zg", "m", "geopotential_height", "zg_plev"] -atm_stashvar[30208] = ["OMEGA ON P LEV/UV GRID", "wap", "Pa s-1", "lagrangian_tendency_of_air_pressure", "wap_plev"] -atm_stashvar[30211] = ["UU ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30212] = ["UV ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30213] = ["UW ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30214] = ["UT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30215] = ["UQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30217] = ["UZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30218] = ["UOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30222] = ["VV ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30223] = ["VW ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30224] = ["VT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30225] = ["VQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30227] = ["VZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30228] = ["VOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30233] = ["WW ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30234] = ["WT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30235] = ["WQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30237] = ["WZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30238] = ["WOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30244] = ["TT ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30245] = ["TQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30247] = ["TZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30248] = ["TOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30255] = ["QQ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30257] = ["QZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30258] = ["QOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30277] = ["ZZ ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30278] = ["ZOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30288] = ["OMOM ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30293] = ["W COMPNT OF WIND ON P LEV/T GRID", "", "", "", ""] -atm_stashvar[30294] = ["TEMPERATURE ON P LEV/T GRID", "ta", "K", "air_temperature", "ta_plev"] -atm_stashvar[30295] = ["SPECIFIC HUMIDITY ON P LEV/T GRID", "hus", "1", "specific_humidity", "hus_plev"] -atm_stashvar[30296] = ["RELATIVE HUMIDITY ON P LEV/T GRID", "hur", "%", "relative_humidity", "hur_plev"] -atm_stashvar[30297] = ["GEOPOTENTIAL HEIGHT ON P LEV/T GRID", "zg", "m", "geopotential_height", "zg_plev"] -atm_stashvar[30298] = ["OMEGA ON P LEV/T GRID", "wa", "Pa s-1", "lagrangian_tendency_of_air_pressure", "wap_plev"] -atm_stashvar[30301] = ["HEAVYSIDE FN ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30302] = ["VIRTUAL TEMPERATURE ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30303] = ["VIRTUAL TEMP*OMEGA ON P LEV/UV GRID", "", "", "", ""] -atm_stashvar[30304] = ["HEAVYSIDE FN ON P LEV/T GRID", "", "", "", ""] -atm_stashvar[30310] = ["RESIDUAL MN MERID. CIRC. VSTARBAR", "", "", "", ""] -atm_stashvar[30311] = ["RESIDUAL MN MERID. CIRC. WSTARBAR", "", "", "", ""] -atm_stashvar[30312] = ["ELIASSEN-PALM FLUX (MERID. COMPNT)", "", "", "", ""] -atm_stashvar[30313] = ["ELIASSEN-PALM FLUX (VERT. COMPNT)", "", "", "", ""] -atm_stashvar[30314] = ["DIVERGENCE OF ELIASSEN-PALM FLUX", "", "", "", ""] -atm_stashvar[30315] = ["MERIDIONAL HEAT FLUX", "", "", "", ""] -atm_stashvar[30316] = ["MERIDIONAL MOMENTUM FLUX", "", "", "", ""] -atm_stashvar[30401] = ["TOTAL KE PER UNIT AREA RHO GRID", "", "", "", ""] -atm_stashvar[30402] = ["TOTAL KE PER UA WITH W RHO GRID", "", "", "", ""] -atm_stashvar[30403] = ["TOTAL COLUMN DRY MASS RHO GRID", "", "kg m-2", "", ""] -atm_stashvar[30404] = ["TOTAL COLUMN WET MASS RHO GRID", "", "kg m-2", "", ""] -atm_stashvar[30405] = ["TOTAL COLUMN QCL RHO GRID", "lwp", "kg m-2", "atmosphere_cloud_liquid_water_content", ""] -atm_stashvar[30406] = ["TOTAL COLUMN QCF RHO GRID", "clivi", "kg m-2", "atmosphere_cloud_ice_content", ""] -atm_stashvar[30407] = ["TOTAL WATER VAPOUR FLUX U RHO GRID", "", "", "", ""] -atm_stashvar[30408] = ["TOTAL WATER VAPOUR FLUX V RHO GRID", "", "", "", ""] -atm_stashvar[30409] = ["TOTAL WATER VAPOUR FLUX W RHO GRID", "", "", "", ""] -atm_stashvar[30410] = ["MOUNTAIN TORQUE PER UNIT AREA N/M", "", "", "", ""] -atm_stashvar[30411] = ["ANGULAR MOMENTUM M1 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30412] = ["ANGULAR MOMENTUM M2 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30413] = ["ANGULAR MOMENTUM M3 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30414] = ["ANGULAR MOMENTUM W1 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30415] = ["ANGULAR MOMENTUM W2 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30416] = ["ANGULAR MOMENTUM W3 KG M2/S X10-24", "", "", "", ""] -atm_stashvar[30417] = ["PSTAR P GRID", "", "Pa", "surface_air_pressure", ""] -atm_stashvar[30418] = ["PSTAR UV GRID", "", "", "", ""] -atm_stashvar[30419] = ["ENERGY CORR P GRID IN COLUMN W/M2", "", "", "", ""] -atm_stashvar[30420] = ["column integral cvT per unit area", "", "", "", ""] -atm_stashvar[30421] = ["column integral gr per unit area", "", "", "", ""] -atm_stashvar[30422] = ["dry mass col int u*gz per unit area", "", "", "", ""] -atm_stashvar[30423] = ["dry mass col int v*gz per unit area", "", "", "", ""] -atm_stashvar[30424] = ["dry mass col int w*gz per unit area", "", "", "", ""] -atm_stashvar[30425] = ["dry mass col int u*T per unit area", "", "", "", ""] -atm_stashvar[30426] = ["dry mass col int v*T per unit area", "", "", "", ""] -atm_stashvar[30427] = ["dry mass col int w*T per unit area", "", "", "", ""] -atm_stashvar[30428] = ["dry mass col int u*q per unit area", "", "", "", ""] -atm_stashvar[30429] = ["dry mass col int v*q per unit area", "", "", "", ""] -atm_stashvar[30430] = ["dry mass col int w*q per unit area", "", "", "", ""] -atm_stashvar[30431] = ["dry mass col int u*v per unit area", "", "", "", ""] -atm_stashvar[30432] = ["dry mass col int u*w per unit area", "", "", "", ""] -atm_stashvar[30433] = ["dry mass col int v*w per unit area", "", "", "", ""] -atm_stashvar[30434] = ["dry mass col int u*KE per unit area", "", "", "", ""] -atm_stashvar[30435] = ["dry mass col int v*KE per unit area", "", "", "", ""] -atm_stashvar[30436] = ["dry mass col int w*KE per unit area", "", "", "", ""] -atm_stashvar[30437] = ["dry mass col int u per unit area", "", "", "", ""] -atm_stashvar[30438] = ["dry mass col int v per unit area", "", "", "", ""] -atm_stashvar[30439] = ["dry mass col int w per unit area", "", "", "", ""] -atm_stashvar[30440] = ["mountain x-surf. pressure drag N/m-2", "", "", "", ""] -atm_stashvar[30441] = ["mountain y-surf. pressure drag N/m-2", "", "", "", ""] -atm_stashvar[30442] = ["COLUMN SATURATION FRACTION", "", "", "", ""] -atm_stashvar[30451] = ["Pressure at Tropopause Level", "", "", "", ""] -atm_stashvar[30452] = ["Temperature at Tropopause Level", "", "", "", ""] -atm_stashvar[30453] = ["Height at Tropopause Level", "", "", "", ""] -atm_stashvar[30454] = ["ICAO HT OF TROP- NEED HT,TEMP,PRESS", "", "", "", ""] -atm_stashvar[30455] = ["VORTICITY 850", "", "", "", ""] -atm_stashvar[30456] = ["FILTERED VORTICITY 850", "", "", "", ""] -atm_stashvar[30457] = ["VORTICITY TC", "", "", "", ""] -atm_stashvar[30458] = ["FILTERED VORTICITY TC", "", "", "", ""] -atm_stashvar[30459] = ["MEAN VORTICITY of req. levels", "", "", "", ""] -atm_stashvar[30460] = ["FIL MEAN VORT of req. levels", "", "", "", ""] -atm_stashvar[30461] = ["TOTAL COLUMN Q (WATER VAPOUR PATH)", "", "kg m-2", "", ""] -atm_stashvar[30462] = ["TOTAL MOISTURE FLUX U RHO GRID", "", "", "", ""] -atm_stashvar[30463] = ["TOTAL MOISTURE FLUX V RHO GRID", "", "", "", ""] -atm_stashvar[30464] = ["ATMOSPHERIC CO2 BURDEN IN GtC", "", "", "", ""] -atm_stashvar[30465] = ["ATMOSPHERIC CO2 BURDEN IN kg(CO2)", "", "", "", ""] -atm_stashvar[30466] = ["CO2 CONCENTRATION (ppmv)", "", "", "", ""] -atm_stashvar[30467] = ["CO2 MASS MIXING RATIO (kg/kg)", "", "", "", ""] -atm_stashvar[30901] = ["THETA TOTAL INCR ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30902] = ["THETAVD TOTAL INCR ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[30903] = ["DRY RHO TOTAL INCR ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[31001] = ["OROGRAPHY HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31002] = ["U HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31003] = ["V HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31004] = ["W HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31005] = ["DENSITY HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31006] = ["POTENTIAL TEMP HORIZ BOUND VALUE", "", "", "", ""] -atm_stashvar[31007] = ["SPECIFIC HUMIDTY HORIZ BOUND VALUE", "", "", "", ""] -atm_stashvar[31008] = ["QCL HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31009] = ["QCF HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31010] = ["EXNER PRESSURE HORIZ BOUND VALUE", "", "", "", ""] -atm_stashvar[31011] = ["U_ADV HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31012] = ["V_ADV HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31013] = ["W_ADV HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31014] = ["CLD ICE (CRY) HORIZ. BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31015] = ["RAIN HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31016] = ["GRAUPEL HORIZONTAL BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31017] = ["TOTAL CLOUD FRACTION BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31018] = ["LIQUID CLOUD FRACTION BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31019] = ["FROZEN CLOUD FRACTION BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31020] = ["TOTAL AEROSOL (MURK) BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31023] = ["DUST DIV 1 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31024] = ["DUST DIV 2 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31025] = ["DUST DIV 3 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31026] = ["DUST DIV 4 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31027] = ["DUST DIV 5 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31028] = ["DUST DIV 6 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31029] = ["SO2 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31030] = ["DMS BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31031] = ["SO4_AITKEN BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31032] = ["SO4_ACCU BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31033] = ["SO4_DISS BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31035] = ["NH3 BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31036] = ["SOOT_NEW BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31037] = ["SOOT_AGD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31038] = ["SOOT_CLD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31039] = ["BMASS_NEW BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31040] = ["BMASS_AGD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31041] = ["BMASS_CLD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31042] = ["OCFF_NEW BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31043] = ["OCFF_AGD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31044] = ["OCFF_CLD BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31045] = ["NITR_ACC BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31046] = ["NITR_DISS BOUNDARY VALUE", "", "", "", ""] -atm_stashvar[31257] = ["U HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31258] = ["V HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31259] = ["W HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31260] = ["DENSITY HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31261] = ["POTENTIAL TEMP HORIZ BOUND TENDENCY", "", "", "", ""] -atm_stashvar[31262] = ["SPECIFIC HUMIDTY HORIZ BOUND TEND", "", "", "", ""] -atm_stashvar[31263] = ["QCL HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31264] = ["QCF HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31265] = ["EXNER PRESSURE HORIZ BOUND TENDENCY", "", "", "", ""] -atm_stashvar[31266] = ["U_ADV HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31267] = ["V_ADV HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31268] = ["W_ADV HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31269] = ["CLD ICE (CRY) HORIZ. BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31270] = ["RAIN HORIZONTAL BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31271] = ["GRAUPEL HORIZONTAL BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31272] = ["TOTAL CLOUD FRACTN BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31273] = ["LIQUID CLOUD FRACN BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31274] = ["FROZEN CLOUD FRACN BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[31275] = ["TOTAL AEROSOL (MURK) BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31276] = ["DUST DIV 1 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31277] = ["DUST DIV 2 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31278] = ["DUST DIV 3 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31279] = ["DUST DIV 4 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31280] = ["DUST DIV 5 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31281] = ["DUST DIV 6 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31282] = ["SO2 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31283] = ["DMS BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31284] = ["SO4_AITKEN BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31285] = ["SO4_ACCU BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31286] = ["SO4_DISS BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31288] = ["NH3 BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31289] = ["SOOT_NEW BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31290] = ["SOOT_AGD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31291] = ["SOOT_CLD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31292] = ["BMASS_NEW BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31293] = ["BMASS_AGD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31294] = ["BMASS_CLD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31295] = ["OCFF_NEW BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31296] = ["OCFF_AGD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31297] = ["OCFF_CLD BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31298] = ["NITR_ACC BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[31299] = ["NITR_DISS BOUNDARY TEND.", "", "", "", ""] -atm_stashvar[32001] = ["OROGRAPHY HORIZONTAL BV OUT retired", "", "", "", ""] -atm_stashvar[32002] = ["U HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32003] = ["V HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32004] = ["W HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32005] = ["DENSITY HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32006] = ["POTENTIAL TEMP HORIZ BV OUT(retired)", "", "", "", ""] -atm_stashvar[32007] = ["SPECIFIC HUMIDTY HORIZ BV OUT (retd)", "", "", "", ""] -atm_stashvar[32008] = ["QCL HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32009] = ["QCF HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32010] = ["EXNER PRESSURE HORIZ BV OUT(retired)", "", "", "", ""] -atm_stashvar[32011] = ["U_ADV HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32012] = ["V_ADV HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32013] = ["W_ADV HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32014] = ["CLOUD ICE HORIZONTAL BV OUT retired", "", "", "", ""] -atm_stashvar[32015] = ["RAIN HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32016] = ["GRAUPEL HORIZONTAL BV OUT (retired)", "", "", "", ""] -atm_stashvar[32017] = ["TOTAL CLOUD FRACTION BV OUT(retired)", "", "", "", ""] -atm_stashvar[32018] = ["LIQUID CLOUD FRACTION BV OUT", "", "", "", ""] -atm_stashvar[32019] = ["FROZEN CLOUD FRACTION BV OUT (retd)", "", "", "", ""] -atm_stashvar[32020] = ["TOTAL AEROSOL (MURK) BV OUT (retd)", "", "", "", ""] -atm_stashvar[32021] = ["ATM FREE TRACER BOUND VAL. OUT retd", "", "", "", ""] -atm_stashvar[32022] = ["UKCA TRACER BOUND VAL. OUT (retired)", "", "", "", ""] -atm_stashvar[32023] = ["DUST DIV 1 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32024] = ["DUST DIV 2 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32025] = ["DUST DIV 3 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32026] = ["DUST DIV 4 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32027] = ["DUST DIV 5 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32028] = ["DUST DIV 6 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32029] = ["SO2 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32030] = ["DMS BV OUT (retired)", "", "", "", ""] -atm_stashvar[32031] = ["SO4_AITKEN BV OUT (retired)", "", "", "", ""] -atm_stashvar[32032] = ["SO4_ACCU BV OUT (retired)", "", "", "", ""] -atm_stashvar[32033] = ["SO4_DISS BV OUT (retired)", "", "", "", ""] -atm_stashvar[32035] = ["NH3 BV OUT (retired)", "", "", "", ""] -atm_stashvar[32036] = ["SOOT_NEW BV OUT (retired)", "", "", "", ""] -atm_stashvar[32037] = ["SOOT_AGD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32038] = ["SOOT_CLD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32039] = ["BMASS_NEW BV OUT (retired)", "", "", "", ""] -atm_stashvar[32040] = ["BMASS_AGD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32041] = ["BMASS_CLD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32042] = ["OCFF_NEW BV OUT (retired)", "", "", "", ""] -atm_stashvar[32043] = ["OCFF_AGD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32044] = ["OCFF_CLD BV OUT (retired)", "", "", "", ""] -atm_stashvar[32045] = ["NITR_ACC BV OUT (retired)", "", "", "", ""] -atm_stashvar[32046] = ["NITR_DISS BV OUT (retired)", "", "", "", ""] -atm_stashvar[33001] = ["ATM TRACER 1 AFTER TS", "", "", "", ""] -atm_stashvar[33002] = ["ATM TRACER 2 AFTER TS", "", "", "", ""] -atm_stashvar[33003] = ["ATM TRACER 3 AFTER TS", "", "", "", ""] -atm_stashvar[33004] = ["ATM TRACER 4 AFTER TS", "", "", "", ""] -atm_stashvar[33005] = ["ATM TRACER 5 AFTER TS", "", "", "", ""] -atm_stashvar[33006] = ["ATM TRACER 6 AFTER TS", "", "", "", ""] -atm_stashvar[33007] = ["ATM TRACER 7 AFTER TS", "", "", "", ""] -atm_stashvar[33008] = ["ATM TRACER 8 AFTER TS", "", "", "", ""] -atm_stashvar[33009] = ["ATM TRACER 9 AFTER TS", "", "", "", ""] -atm_stashvar[33010] = ["ATM TRACER 10 AFTER TS", "", "", "", ""] -atm_stashvar[33011] = ["ATM TRACER 11 AFTER TS", "", "", "", ""] -atm_stashvar[33012] = ["ATM TRACER 12 AFTER TS", "", "", "", ""] -atm_stashvar[33013] = ["ATM TRACER 13 AFTER TS", "", "", "", ""] -atm_stashvar[33014] = ["ATM TRACER 14 AFTER TS", "", "", "", ""] -atm_stashvar[33015] = ["ATM TRACER 15 AFTER TS", "", "", "", ""] -atm_stashvar[33016] = ["ATM TRACER 16 AFTER TS", "", "", "", ""] -atm_stashvar[33017] = ["ATM TRACER 17 AFTER TS", "", "", "", ""] -atm_stashvar[33018] = ["ATM TRACER 18 AFTER TS", "", "", "", ""] -atm_stashvar[33019] = ["ATM TRACER 19 AFTER TS", "", "", "", ""] -atm_stashvar[33020] = ["ATM TRACER 20 AFTER TS", "", "", "", ""] -atm_stashvar[33021] = ["ATM TRACER 21 AFTER TS", "", "", "", ""] -atm_stashvar[33022] = ["ATM TRACER 22 AFTER TS", "", "", "", ""] -atm_stashvar[33023] = ["ATM TRACER 23 AFTER TS", "", "", "", ""] -atm_stashvar[33024] = ["ATM TRACER 24 AFTER TS", "", "", "", ""] -atm_stashvar[33025] = ["ATM TRACER 25 AFTER TS", "", "", "", ""] -atm_stashvar[33026] = ["ATM TRACER 26 AFTER TS", "", "", "", ""] -atm_stashvar[33027] = ["ATM TRACER 27 AFTER TS", "", "", "", ""] -atm_stashvar[33028] = ["ATM TRACER 28 AFTER TS", "", "", "", ""] -atm_stashvar[33029] = ["ATM TRACER 29 AFTER TS", "", "", "", ""] -atm_stashvar[33030] = ["ATM TRACER 30 AFTER TS", "", "", "", ""] -atm_stashvar[33031] = ["ATM TRACER 31 AFTER TS", "", "", "", ""] -atm_stashvar[33032] = ["ATM TRACER 32 AFTER TS", "", "", "", ""] -atm_stashvar[33033] = ["ATM TRACER 33 AFTER TS", "", "", "", ""] -atm_stashvar[33034] = ["ATM TRACER 34 AFTER TS", "", "", "", ""] -atm_stashvar[33035] = ["ATM TRACER 35 AFTER TS", "", "", "", ""] -atm_stashvar[33036] = ["ATM TRACER 36 AFTER TS", "", "", "", ""] -atm_stashvar[33037] = ["ATM TRACER 37 AFTER TS", "", "", "", ""] -atm_stashvar[33038] = ["ATM TRACER 38 AFTER TS", "", "", "", ""] -atm_stashvar[33039] = ["ATM TRACER 39 AFTER TS", "", "", "", ""] -atm_stashvar[33040] = ["ATM TRACER 40 AFTER TS", "", "", "", ""] -atm_stashvar[33041] = ["ATM TRACER 41 AFTER TS", "", "", "", ""] -atm_stashvar[33042] = ["ATM TRACER 42 AFTER TS", "", "", "", ""] -atm_stashvar[33043] = ["ATM TRACER 43 AFTER TS", "", "", "", ""] -atm_stashvar[33044] = ["ATM TRACER 44 AFTER TS", "", "", "", ""] -atm_stashvar[33045] = ["ATM TRACER 45 AFTER TS", "", "", "", ""] -atm_stashvar[33046] = ["ATM TRACER 46 AFTER TS", "", "", "", ""] -atm_stashvar[33047] = ["ATM TRACER 47 AFTER TS", "", "", "", ""] -atm_stashvar[33048] = ["ATM TRACER 48 AFTER TS", "", "", "", ""] -atm_stashvar[33049] = ["ATM TRACER 49 AFTER TS", "", "", "", ""] -atm_stashvar[33050] = ["ATM TRACER 50 AFTER TS", "", "", "", ""] -atm_stashvar[33051] = ["ATM TRACER 51 AFTER TS", "", "", "", ""] -atm_stashvar[33052] = ["ATM TRACER 52 AFTER TS", "", "", "", ""] -atm_stashvar[33053] = ["ATM TRACER 53 AFTER TS", "", "", "", ""] -atm_stashvar[33054] = ["ATM TRACER 54 AFTER TS", "", "", "", ""] -atm_stashvar[33055] = ["ATM TRACER 55 AFTER TS", "", "", "", ""] -atm_stashvar[33056] = ["ATM TRACER 56 AFTER TS", "", "", "", ""] -atm_stashvar[33057] = ["ATM TRACER 57 AFTER TS", "", "", "", ""] -atm_stashvar[33058] = ["ATM TRACER 58 AFTER TS", "", "", "", ""] -atm_stashvar[33059] = ["ATM TRACER 59 AFTER TS", "", "", "", ""] -atm_stashvar[33060] = ["ATM TRACER 60 AFTER TS", "", "", "", ""] -atm_stashvar[33061] = ["ATM TRACER 61 AFTER TS", "", "", "", ""] -atm_stashvar[33062] = ["ATM TRACER 62 AFTER TS", "", "", "", ""] -atm_stashvar[33063] = ["ATM TRACER 63 AFTER TS", "", "", "", ""] -atm_stashvar[33064] = ["ATM TRACER 64 AFTER TS", "", "", "", ""] -atm_stashvar[33065] = ["ATM TRACER 65 AFTER TS", "", "", "", ""] -atm_stashvar[33066] = ["ATM TRACER 66 AFTER TS", "", "", "", ""] -atm_stashvar[33067] = ["ATM TRACER 67 AFTER TS", "", "", "", ""] -atm_stashvar[33068] = ["ATM TRACER 68 AFTER TS", "", "", "", ""] -atm_stashvar[33069] = ["ATM TRACER 69 AFTER TS", "", "", "", ""] -atm_stashvar[33070] = ["ATM TRACER 70 AFTER TS", "", "", "", ""] -atm_stashvar[33071] = ["ATM TRACER 71 AFTER TS", "", "", "", ""] -atm_stashvar[33072] = ["ATM TRACER 72 AFTER TS", "", "", "", ""] -atm_stashvar[33073] = ["ATM TRACER 73 AFTER TS", "", "", "", ""] -atm_stashvar[33074] = ["ATM TRACER 74 AFTER TS", "", "", "", ""] -atm_stashvar[33075] = ["ATM TRACER 75 AFTER TS", "", "", "", ""] -atm_stashvar[33076] = ["ATM TRACER 76 AFTER TS", "", "", "", ""] -atm_stashvar[33077] = ["ATM TRACER 77 AFTER TS", "", "", "", ""] -atm_stashvar[33078] = ["ATM TRACER 78 AFTER TS", "", "", "", ""] -atm_stashvar[33079] = ["ATM TRACER 79 AFTER TS", "", "", "", ""] -atm_stashvar[33080] = ["ATM TRACER 80 AFTER TS", "", "", "", ""] -atm_stashvar[33081] = ["ATM TRACER 81 AFTER TS", "", "", "", ""] -atm_stashvar[33082] = ["ATM TRACER 82 AFTER TS", "", "", "", ""] -atm_stashvar[33083] = ["ATM TRACER 83 AFTER TS", "", "", "", ""] -atm_stashvar[33084] = ["ATM TRACER 84 AFTER TS", "", "", "", ""] -atm_stashvar[33085] = ["ATM TRACER 85 AFTER TS", "", "", "", ""] -atm_stashvar[33086] = ["ATM TRACER 86 AFTER TS", "", "", "", ""] -atm_stashvar[33087] = ["ATM TRACER 87 AFTER TS", "", "", "", ""] -atm_stashvar[33088] = ["ATM TRACER 88 AFTER TS", "", "", "", ""] -atm_stashvar[33089] = ["ATM TRACER 89 AFTER TS", "", "", "", ""] -atm_stashvar[33090] = ["ATM TRACER 90 AFTER TS", "", "", "", ""] -atm_stashvar[33091] = ["ATM TRACER 91 AFTER TS", "", "", "", ""] -atm_stashvar[33092] = ["ATM TRACER 92 AFTER TS", "", "", "", ""] -atm_stashvar[33093] = ["ATM TRACER 93 AFTER TS", "", "", "", ""] -atm_stashvar[33094] = ["ATM TRACER 94 AFTER TS", "", "", "", ""] -atm_stashvar[33095] = ["ATM TRACER 95 AFTER TS", "", "", "", ""] -atm_stashvar[33096] = ["ATM TRACER 96 AFTER TS", "", "", "", ""] -atm_stashvar[33097] = ["ATM TRACER 97 AFTER TS", "", "", "", ""] -atm_stashvar[33098] = ["ATM TRACER 98 AFTER TS", "", "", "", ""] -atm_stashvar[33099] = ["ATM TRACER 99 AFTER TS", "", "", "", ""] -atm_stashvar[33100] = ["ATM TRACER100 AFTER TS", "", "", "", ""] -atm_stashvar[33101] = ["ATM TRACER101 AFTER TS", "", "", "", ""] -atm_stashvar[33102] = ["ATM TRACER102 AFTER TS", "", "", "", ""] -atm_stashvar[33103] = ["ATM TRACER103 AFTER TS", "", "", "", ""] -atm_stashvar[33104] = ["ATM TRACER104 AFTER TS", "", "", "", ""] -atm_stashvar[33105] = ["ATM TRACER105 AFTER TS", "", "", "", ""] -atm_stashvar[33106] = ["ATM TRACER106 AFTER TS", "", "", "", ""] -atm_stashvar[33107] = ["ATM TRACER107 AFTER TS", "", "", "", ""] -atm_stashvar[33108] = ["ATM TRACER108 AFTER TS", "", "", "", ""] -atm_stashvar[33109] = ["ATM TRACER109 AFTER TS", "", "", "", ""] -atm_stashvar[33110] = ["ATM TRACER110 AFTER TS", "", "", "", ""] -atm_stashvar[33111] = ["ATM TRACER111 AFTER TS", "", "", "", ""] -atm_stashvar[33112] = ["ATM TRACER112 AFTER TS", "", "", "", ""] -atm_stashvar[33113] = ["ATM TRACER113 AFTER TS", "", "", "", ""] -atm_stashvar[33114] = ["ATM TRACER114 AFTER TS", "", "", "", ""] -atm_stashvar[33115] = ["ATM TRACER115 AFTER TS", "", "", "", ""] -atm_stashvar[33116] = ["ATM TRACER116 AFTER TS", "", "", "", ""] -atm_stashvar[33117] = ["ATM TRACER117 AFTER TS", "", "", "", ""] -atm_stashvar[33118] = ["ATM TRACER118 AFTER TS", "", "", "", ""] -atm_stashvar[33119] = ["ATM TRACER119 AFTER TS", "", "", "", ""] -atm_stashvar[33120] = ["ATM TRACER120 AFTER TS", "", "", "", ""] -atm_stashvar[33121] = ["ATM TRACER121 AFTER TS", "", "", "", ""] -atm_stashvar[33122] = ["ATM TRACER122 AFTER TS", "", "", "", ""] -atm_stashvar[33123] = ["ATM TRACER123 AFTER TS", "", "", "", ""] -atm_stashvar[33124] = ["ATM TRACER124 AFTER TS", "", "", "", ""] -atm_stashvar[33125] = ["ATM TRACER125 AFTER TS", "", "", "", ""] -atm_stashvar[33126] = ["ATM TRACER126 AFTER TS", "", "", "", ""] -atm_stashvar[33127] = ["ATM TRACER127 AFTER TS", "", "", "", ""] -atm_stashvar[33128] = ["ATM TRACER128 AFTER TS", "", "", "", ""] -atm_stashvar[33129] = ["ATM TRACER129 AFTER TS", "", "", "", ""] -atm_stashvar[33130] = ["ATM TRACER130 AFTER TS", "", "", "", ""] -atm_stashvar[33131] = ["ATM TRACER131 AFTER TS", "", "", "", ""] -atm_stashvar[33132] = ["ATM TRACER132 AFTER TS", "", "", "", ""] -atm_stashvar[33133] = ["ATM TRACER133 AFTER TS", "", "", "", ""] -atm_stashvar[33134] = ["ATM TRACER134 AFTER TS", "", "", "", ""] -atm_stashvar[33135] = ["ATM TRACER135 AFTER TS", "", "", "", ""] -atm_stashvar[33136] = ["ATM TRACER136 AFTER TS", "", "", "", ""] -atm_stashvar[33137] = ["ATM TRACER137 AFTER TS", "", "", "", ""] -atm_stashvar[33138] = ["ATM TRACER138 AFTER TS", "", "", "", ""] -atm_stashvar[33139] = ["ATM TRACER139 AFTER TS", "", "", "", ""] -atm_stashvar[33140] = ["ATM TRACER140 AFTER TS", "", "", "", ""] -atm_stashvar[33141] = ["ATM TRACER141 AFTER TS", "", "", "", ""] -atm_stashvar[33142] = ["ATM TRACER142 AFTER TS", "", "", "", ""] -atm_stashvar[33143] = ["ATM TRACER143 AFTER TS", "", "", "", ""] -atm_stashvar[33144] = ["ATM TRACER144 AFTER TS", "", "", "", ""] -atm_stashvar[33145] = ["ATM TRACER145 AFTER TS", "", "", "", ""] -atm_stashvar[33146] = ["ATM TRACER146 AFTER TS", "", "", "", ""] -atm_stashvar[33147] = ["ATM TRACER147 AFTER TS", "", "", "", ""] -atm_stashvar[33148] = ["ATM TRACER148 AFTER TS", "", "", "", ""] -atm_stashvar[33149] = ["ATM TRACER149 AFTER TS", "", "", "", ""] -atm_stashvar[33150] = ["ATM TRACER150 AFTER TS", "", "", "", ""] -atm_stashvar[34001] = ["O3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34002] = ["NO MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34003] = ["NO3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34004] = ["NO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34005] = ["N2O5 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34006] = ["HO2NO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34007] = ["HONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34008] = ["H2O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34009] = ["CH4 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34010] = ["CO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34011] = ["HCHO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34012] = ["MeOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34013] = ["HONO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34014] = ["C2H6 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34015] = ["EtOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34016] = ["MeCHO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34017] = ["PAN MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34018] = ["C3H8 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34019] = ["n-PrOOH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34020] = ["i-PrOOH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34021] = ["EtCHO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34022] = ["Me2CO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34023] = ["MeCOCH2OOH MASS MIXING RATIO AFT TS", "", "", "", ""] -atm_stashvar[34024] = ["PPAN MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34025] = ["MeONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34026] = ["O3S MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34027] = ["C5H8 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34028] = ["ISOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34029] = ["ISON MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34030] = ["MACR MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34031] = ["MACROOH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34032] = ["MPAN MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34033] = ["HACET MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34034] = ["MGLY MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34035] = ["NALD MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34036] = ["HCOOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34037] = ["MeCO3H MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34038] = ["MeCO2H MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34039] = ["MVK MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34040] = ["MVKOOH MASS MIXING RATIO AFTER T", "", "", "", ""] -atm_stashvar[34041] = ["Cl MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34042] = ["ClO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34043] = ["Cl2O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34044] = ["OClO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34045] = ["Br MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34047] = ["BrCl MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34048] = ["BrONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34049] = ["N2O MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34051] = ["HOCl MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34052] = ["HBr MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34053] = ["HOBr MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34054] = ["ClONO2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34055] = ["CFCl3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34056] = ["CF2Cl2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34057] = ["MeBr MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34058] = ["N MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34059] = ["O3P MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34060] = ["ORGNIT MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34069] = ["CH3OH MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34070] = ["H2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34071] = ["DMS MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34072] = ["SO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34073] = ["H2SO4 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34074] = ["MSA MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34075] = ["DMSO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34076] = ["NH3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34077] = ["CS2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34078] = ["COS MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34079] = ["H2S MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34080] = ["H MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34081] = ["OH MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34082] = ["HO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34083] = ["MeOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34084] = ["EtOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34085] = ["MeCO3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34086] = ["n-PrOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34087] = ["i-PrOO MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34088] = ["EtCO3 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34089] = ["MeCOCH2OO MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34090] = ["MeOH MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34091] = ["MONOTERPENE MASS MIXING RATIO AFT TS", "", "", "", ""] -atm_stashvar[34092] = ["SEC_ORG MASS MIXING RATIO AFTER TS", "", "", "", ""] -atm_stashvar[34093] = ["C3H6 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34094] = ["SO3 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34095] = ["C4H9OOH MASS MIXING RATIO AFT TSTEP", "", "", "", ""] -atm_stashvar[34096] = ["MEK MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34097] = ["TOLUENE MASS MIXING RATIO AFT TSTEP", "", "", "", ""] -atm_stashvar[34098] = ["LUMPED N (as NO2) MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34099] = ["LUMPED Br (as BrO) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34100] = ["LUMPED Cl (as HCl) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34101] = ["NUCLEATION MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34102] = ["NUCLEATION MODE (SOLUBLE) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34103] = ["AITKEN MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34104] = ["AITKEN MODE (SOLUBLE) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34105] = ["AITKEN MODE (SOLUBLE) BC MMR", "", "", "", ""] -atm_stashvar[34106] = ["AITKEN MODE (SOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34107] = ["ACCUMULATION MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34108] = ["ACCUMULATION MODE (SOL) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34109] = ["ACCUMULATION MODE (SOL) BC MMR", "", "", "", ""] -atm_stashvar[34110] = ["ACCUMULATION MODE (SOL) OM MMR", "", "", "", ""] -atm_stashvar[34111] = ["ACCUMULATION MODE (SOL) SEA SALT MMR", "", "", "", ""] -atm_stashvar[34112] = ["ACCUMULATION MODE (SOL) DUST MMR", "", "", "", ""] -atm_stashvar[34113] = ["COARSE MODE (SOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34114] = ["COARSE MODE (SOLUBLE) H2SO4 MMR", "", "", "", ""] -atm_stashvar[34115] = ["COARSE MODE (SOLUBLE) BC MMR", "", "", "", ""] -atm_stashvar[34116] = ["COARSE MODE (SOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34117] = ["COARSE MODE (SOLUBLE) SEA SALT MMR", "", "", "", ""] -atm_stashvar[34118] = ["COARSE MODE (SOLUBLE) DUST MMR", "", "", "", ""] -atm_stashvar[34119] = ["AITKEN MODE (INSOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34120] = ["AITKEN MODE (INSOLUBLE) BC MMR", "", "", "", ""] -atm_stashvar[34121] = ["AITKEN MODE (INSOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34122] = ["ACCUMULATION MODE (INSOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34123] = ["ACCUMULATION MODE (INSOLUBLE) DUST", "", "", "", ""] -atm_stashvar[34124] = ["COARSE MODE (INSOLUBLE) NUMBER", "", "", "", ""] -atm_stashvar[34125] = ["COARSE MODE (INSOLUBLE) DUST MMR", "", "", "", ""] -atm_stashvar[34126] = ["NUCLEATION MODE (SOLUBLE) OM MMR", "", "", "", ""] -atm_stashvar[34127] = ["AITKEN MODE (SOLUBLE) SEA SALT MMR", "", "", "", ""] -atm_stashvar[34128] = ["NUCLEATION MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34129] = ["AITKEN MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34130] = ["ACCUMULATION MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34131] = ["COARSE MODE (SOLUBLE) OM2 MMR", "", "", "", ""] -atm_stashvar[34132] = ["NUCLEATION MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34133] = ["AITKEN MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34134] = ["ACCUMULATION MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34135] = ["COARSE MODE (SOLUBLE) NH4 MMR", "", "", "", ""] -atm_stashvar[34136] = ["NUCLEATION MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34137] = ["AITKEN MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34138] = ["ACCUMULATION MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34139] = ["COARSE MODE (SOLUBLE) NO3 MMR", "", "", "", ""] -atm_stashvar[34149] = ["PASSIVE O3 MASS MIXING RATIO", "", "", "", ""] -atm_stashvar[34150] = ["AGE OF AIR IN SECONDS", "", "", "", ""] -atm_stashvar[34151] = ["UKCA NON-TRANSP SPECIES 151 RETIRED", "", "", "", ""] -atm_stashvar[34152] = ["UKCA NON-TRANSP SPECIES 152 RETIRED", "", "", "", ""] -atm_stashvar[34153] = ["UKCA NON-TRANSP SPECIES 153 RETIRED", "", "", "", ""] -atm_stashvar[34154] = ["UKCA NON-TRANSP SPECIES 154 RETIRED", "", "", "", ""] -atm_stashvar[34155] = ["UKCA NON-TRANSP SPECIES 155 RETIRED", "", "", "", ""] -atm_stashvar[34156] = ["UKCA NON-TRANSP SPECIES 156 RETIRED", "", "", "", ""] -atm_stashvar[34157] = ["UKCA NON-TRANSP SPECIES 157 RETIRED", "", "", "", ""] -atm_stashvar[34158] = ["UKCA NON-TRANSP SPECIES 158 RETIRED", "", "", "", ""] -atm_stashvar[34159] = ["UKCA NON-TRANSP SPECIES 159 RETIRED", "", "", "", ""] -atm_stashvar[34160] = ["UKCA NON-TRANSP SPECIES 160 RETIRED", "", "", "", ""] -atm_stashvar[34161] = ["UKCA NON-TRANSP SPECIES 161 RETIRED", "", "", "", ""] -atm_stashvar[34162] = ["UKCA NON-TRANSP SPECIES 162 RETIRED", "", "", "", ""] -atm_stashvar[34163] = ["UKCA NON-TRANSP SPECIES 163 RETIRED", "", "", "", ""] -atm_stashvar[34164] = ["UKCA NON-TRANSP SPECIES 164 RETIRED", "", "", "", ""] -atm_stashvar[34165] = ["UKCA NON-TRANSP SPECIES 165 RETIRED", "", "", "", ""] -atm_stashvar[34166] = ["UKCA NON-TRANSP SPECIES 166 RETIRED", "", "", "", ""] -atm_stashvar[34167] = ["UKCA NON-TRANSP SPECIES 167 RETIRED", "", "", "", ""] -atm_stashvar[34168] = ["UKCA NON-TRANSP SPECIES 168 RETIRED", "", "", "", ""] -atm_stashvar[34169] = ["UKCA NON-TRANSP SPECIES 169 RETIRED", "", "", "", ""] -atm_stashvar[34170] = ["UKCA NON-TRANSP SPECIES 170 RETIRED", "", "", "", ""] -atm_stashvar[34171] = ["UKCA NON-TRANSP SPECIES 171 RETIRED", "", "", "", ""] -atm_stashvar[34172] = ["UKCA NON-TRANSP SPECIES 172 RETIRED", "", "", "", ""] -atm_stashvar[34921] = ["DRY PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[34922] = ["DRY PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[34923] = ["DRY PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[34924] = ["DRY PARTICLE DIAMETER AITKEN-INS", "", "", "", ""] -atm_stashvar[34925] = ["DRY PARTICLE DIAMETER ACCUMULATN-INS", "", "", "", ""] -atm_stashvar[34926] = ["DRY PARTICLE DIAMETER COARSE-INSOL", "", "", "", ""] -atm_stashvar[34927] = ["WET PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[34928] = ["WET PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[34929] = ["WET PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[34930] = ["PTCL MASS DENSITY AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[34931] = ["PTCL MASS DENSITY ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[34932] = ["PTCL MASS DENSITY COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[34933] = ["PTCL MASS DENSITY AITKEN-INS", "", "", "", ""] -atm_stashvar[34934] = ["PTCL MASS DENSITY ACCUM.-INS", "", "", "", ""] -atm_stashvar[34935] = ["PTCL MASS DENSITY COARSE-INS", "", "", "", ""] -atm_stashvar[34936] = ["H2SO4 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34937] = ["BC PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34938] = ["OM1 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34939] = ["NO3 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34940] = ["OM2 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34941] = ["H2O PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[34942] = ["H2SO4 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34943] = ["BC PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34944] = ["OM1 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34945] = ["SS PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34946] = ["NO3 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34947] = ["DU PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34948] = ["OM2 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34949] = ["CL PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34950] = ["NA PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34951] = ["H2O PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[34952] = ["H2SO4 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34953] = ["BC PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34954] = ["OM1 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34955] = ["SSALT PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34956] = ["NO3 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34957] = ["DU PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34958] = ["OM2 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34959] = ["CL PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34960] = ["NA PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34961] = ["H2O PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[34962] = ["BC PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[34963] = ["OM1 PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[34964] = ["DU PARTIAL VOLUME CONC (ACC-INS)", "", "", "", ""] -atm_stashvar[34965] = ["DU PARTIAL VOLUME CONC (COR-INS)", "", "", "", ""] -atm_stashvar[34966] = ["Aerosol surface area dens (cm2/cm3)", "", "", "", ""] -atm_stashvar[34967] = ["Cloud Droplet No. Conc. ^-1/3 (m-1)", "", "", "", ""] -atm_stashvar[34968] = ["Cloud Droplet No. Conc. (m-3)", "", "", "", ""] -atm_stashvar[34969] = ["Stratospheric HO2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34970] = ["Stratospheric OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34971] = ["Stratospheric O(1D) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34972] = ["Stratospheric O(3P) MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34973] = ["Self reaction of HO2 on aerosol (s-1)", "", "", "", ""] -atm_stashvar[34974] = ["Loss rate of N2O5 on aerosol (s-1)", "", "", "", ""] -atm_stashvar[34975] = ["HOC6H5CH3O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34976] = ["HOC5H8O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34977] = ["CH3COCH(O2)CH2OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34978] = ["CHOCH(OH)CO2CH3CHO MMR AFTER TSTEP", "", "", "", ""] -atm_stashvar[34979] = ["C6H5CH2O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34980] = ["CH3CHO2CH2OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34981] = ["CH2O2CH2OH MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34982] = ["CH3COCH(O2)CH3 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34983] = ["CH3COCH2O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34984] = ["CH3COC2O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34985] = ["C2H5COO2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34986] = ["i-C2H7O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34987] = ["s-C4H9O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34988] = ["n-C2H7O2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34989] = ["CH3COO2 MMR AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34990] = ["C2H5O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34991] = ["CH3O2 MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34992] = ["HCl MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34993] = ["HO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34994] = ["BrO MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34995] = ["OH MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34996] = ["NO2 MASS MIXING RATIO AFTER TIMESTEP", "", "", "", ""] -atm_stashvar[34997] = ["O(1D) MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[34998] = ["O(3P) MASS MIXING RATIO AFTER TSTEP", "", "", "", ""] -atm_stashvar[35001] = ["U COMPNT OF WIND AFTER SKEB2", "", "", "", ""] -atm_stashvar[35002] = ["V COMPNT OF WIND AFTER SKEB2", "", "", "", ""] -atm_stashvar[35003] = ["U COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35004] = ["V COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35005] = ["ROT U COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35006] = ["ROT V COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35007] = ["DIV U COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35008] = ["DIV V COMPNT OF WIND INCR SKEB2", "", "", "", ""] -atm_stashvar[35009] = ["SKEB2 DISSIPATION FROM SMAG", "", "", "", ""] -atm_stashvar[35010] = ["SKEB2 DISSIPATION FROM CONVECTION", "", "", "", ""] -atm_stashvar[35011] = ["SKEB2 DISS FROM SKEB1-TYPE PATTERN", "", "", "", ""] -atm_stashvar[35012] = ["SKEB2 SMOOTHED MODULATING FIELD", "", "", "", ""] -atm_stashvar[35013] = ["SKEB2 STREAMFUNCTION FORC FIELD", "", "", "", ""] -atm_stashvar[35014] = ["SKEB2 INITIAL RANDOM PATTERN", "", "", "", ""] -atm_stashvar[35015] = ["MASS VERT INT OF STRM FORC FIELD", "", "", "", ""] -atm_stashvar[35016] = ["VERT INTEG NUMERICAL DISSP (W/M^2)", "", "", "", ""] -atm_stashvar[35017] = ["VERT INTEG CONVECTVE DISSP (W/M^2)", "", "", "", ""] -atm_stashvar[35018] = ["VERT INTEG SKEB1-TYPE DISS (W/M^2)", "", "", "", ""] -atm_stashvar[35019] = ["MASS VERT INT OF MODULATED STRMFUNC", "", "", "", ""] -atm_stashvar[35020] = ["V INT KE WIND INCR PRE SKEB2 (J/M^2)", "", "", "", ""] -atm_stashvar[35021] = ["V INT KE WIND INCR SKEB2 (J/M^2)", "", "", "", ""] -atm_stashvar[35022] = ["V INT KE WIND INCR POST SKEB2(J/M^2)", "", "", "", ""] -atm_stashvar[35023] = ["SPT FORCING PATTERN", "", "", "", ""] -atm_stashvar[35024] = ["THETA TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35025] = ["Q TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35026] = ["U TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35027] = ["V TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[35028] = ["CFL criteria breached", "", "", "", ""] -atm_stashvar[35029] = ["T TENDENCY SPT INCREMENT", "", "", "", ""] -atm_stashvar[36001] = ["ATM TRACER 1 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36002] = ["ATM TRACER 2 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36003] = ["ATM TRACER 3 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36004] = ["ATM TRACER 4 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36005] = ["ATM TRACER 5 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36006] = ["ATM TRACER 6 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36007] = ["ATM TRACER 7 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36008] = ["ATM TRACER 8 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36009] = ["ATM TRACER 9 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36010] = ["ATM TRACER 10 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36011] = ["ATM TRACER 11 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36012] = ["ATM TRACER 12 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36013] = ["ATM TRACER 13 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36014] = ["ATM TRACER 14 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36015] = ["ATM TRACER 15 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36016] = ["ATM TRACER 16 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36017] = ["ATM TRACER 17 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36018] = ["ATM TRACER 18 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36019] = ["ATM TRACER 19 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36020] = ["ATM TRACER 20 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36021] = ["ATM TRACER 21 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36022] = ["ATM TRACER 22 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36023] = ["ATM TRACER 23 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36024] = ["ATM TRACER 24 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36025] = ["ATM TRACER 25 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36026] = ["ATM TRACER 26 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36027] = ["ATM TRACER 27 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36028] = ["ATM TRACER 28 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36029] = ["ATM TRACER 29 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36030] = ["ATM TRACER 30 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36031] = ["ATM TRACER 31 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36032] = ["ATM TRACER 32 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36033] = ["ATM TRACER 33 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36034] = ["ATM TRACER 34 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36035] = ["ATM TRACER 35 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36036] = ["ATM TRACER 36 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36037] = ["ATM TRACER 37 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36038] = ["ATM TRACER 38 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36039] = ["ATM TRACER 39 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36040] = ["ATM TRACER 40 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36041] = ["ATM TRACER 41 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36042] = ["ATM TRACER 42 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36043] = ["ATM TRACER 43 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36044] = ["ATM TRACER 44 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36045] = ["ATM TRACER 45 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36046] = ["ATM TRACER 46 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36047] = ["ATM TRACER 47 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36048] = ["ATM TRACER 48 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36049] = ["ATM TRACER 49 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36050] = ["ATM TRACER 50 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36051] = ["ATM TRACER 51 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36052] = ["ATM TRACER 52 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36053] = ["ATM TRACER 53 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36054] = ["ATM TRACER 54 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36055] = ["ATM TRACER 55 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36056] = ["ATM TRACER 56 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36057] = ["ATM TRACER 57 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36058] = ["ATM TRACER 58 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36059] = ["ATM TRACER 59 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36060] = ["ATM TRACER 60 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36061] = ["ATM TRACER 61 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36062] = ["ATM TRACER 62 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36063] = ["ATM TRACER 63 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36064] = ["ATM TRACER 64 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36065] = ["ATM TRACER 65 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36066] = ["ATM TRACER 66 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36067] = ["ATM TRACER 67 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36068] = ["ATM TRACER 68 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36069] = ["ATM TRACER 69 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36070] = ["ATM TRACER 70 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36071] = ["ATM TRACER 71 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36072] = ["ATM TRACER 72 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36073] = ["ATM TRACER 73 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36074] = ["ATM TRACER 74 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36075] = ["ATM TRACER 75 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36076] = ["ATM TRACER 76 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36077] = ["ATM TRACER 77 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36078] = ["ATM TRACER 78 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36079] = ["ATM TRACER 79 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36080] = ["ATM TRACER 80 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36081] = ["ATM TRACER 81 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36082] = ["ATM TRACER 82 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36083] = ["ATM TRACER 83 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36084] = ["ATM TRACER 84 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36085] = ["ATM TRACER 85 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36086] = ["ATM TRACER 86 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36087] = ["ATM TRACER 87 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36088] = ["ATM TRACER 88 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36089] = ["ATM TRACER 89 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36090] = ["ATM TRACER 90 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36091] = ["ATM TRACER 91 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36092] = ["ATM TRACER 92 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36093] = ["ATM TRACER 93 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36094] = ["ATM TRACER 94 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36095] = ["ATM TRACER 95 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36096] = ["ATM TRACER 96 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36097] = ["ATM TRACER 97 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36098] = ["ATM TRACER 98 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36099] = ["ATM TRACER 99 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36100] = ["ATM TRACER 100 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36101] = ["ATM TRACER 101 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36102] = ["ATM TRACER 102 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36103] = ["ATM TRACER 103 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36104] = ["ATM TRACER 104 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36105] = ["ATM TRACER 105 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36106] = ["ATM TRACER 106 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36107] = ["ATM TRACER 107 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36108] = ["ATM TRACER 108 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36109] = ["ATM TRACER 109 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36110] = ["ATM TRACER 110 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36111] = ["ATM TRACER 111 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36112] = ["ATM TRACER 112 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36113] = ["ATM TRACER 113 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36114] = ["ATM TRACER 114 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36115] = ["ATM TRACER 115 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36116] = ["ATM TRACER 116 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36117] = ["ATM TRACER 117 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36118] = ["ATM TRACER 118 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36119] = ["ATM TRACER 119 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36120] = ["ATM TRACER 120 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36121] = ["ATM TRACER 121 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36122] = ["ATM TRACER 122 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36123] = ["ATM TRACER 123 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36124] = ["ATM TRACER 124 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36125] = ["ATM TRACER 125 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36126] = ["ATM TRACER 126 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36127] = ["ATM TRACER 127 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36128] = ["ATM TRACER 128 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36129] = ["ATM TRACER 129 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36130] = ["ATM TRACER 130 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36131] = ["ATM TRACER 131 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36132] = ["ATM TRACER 132 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36133] = ["ATM TRACER 133 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36134] = ["ATM TRACER 134 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36135] = ["ATM TRACER 135 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36136] = ["ATM TRACER 136 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36137] = ["ATM TRACER 137 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36138] = ["ATM TRACER 138 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36139] = ["ATM TRACER 139 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36140] = ["ATM TRACER 140 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36141] = ["ATM TRACER 141 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36142] = ["ATM TRACER 142 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36143] = ["ATM TRACER 143 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36144] = ["ATM TRACER 144 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36145] = ["ATM TRACER 145 LATERAL BOUNDARY", "", "", "", ""] -atm_stashvar[36146] = ["ATM TRACER 146 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36147] = ["ATM TRACER 147 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36148] = ["ATM TRACER 148 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36149] = ["ATM TRACER 149 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36150] = ["ATM TRACER 150 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[36257] = ["ATM TRACER 1 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36258] = ["ATM TRACER 2 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36259] = ["ATM TRACER 3 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36260] = ["ATM TRACER 4 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36261] = ["ATM TRACER 5 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36262] = ["ATM TRACER 6 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36263] = ["ATM TRACER 7 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36264] = ["ATM TRACER 8 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36265] = ["ATM TRACER 9 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36266] = ["ATM TRACER 10 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36267] = ["ATM TRACER 11 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36268] = ["ATM TRACER 12 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36269] = ["ATM TRACER 13 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36270] = ["ATM TRACER 14 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36271] = ["ATM TRACER 15 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36272] = ["ATM TRACER 16 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36273] = ["ATM TRACER 17 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36274] = ["ATM TRACER 18 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36275] = ["ATM TRACER 19 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36276] = ["ATM TRACER 20 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36277] = ["ATM TRACER 21 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36278] = ["ATM TRACER 22 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36279] = ["ATM TRACER 23 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36280] = ["ATM TRACER 24 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36281] = ["ATM TRACER 25 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36282] = ["ATM TRACER 26 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36283] = ["ATM TRACER 27 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36284] = ["ATM TRACER 28 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36285] = ["ATM TRACER 29 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36286] = ["ATM TRACER 30 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36287] = ["ATM TRACER 31 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36288] = ["ATM TRACER 32 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36289] = ["ATM TRACER 33 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36290] = ["ATM TRACER 34 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36291] = ["ATM TRACER 35 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36292] = ["ATM TRACER 36 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36293] = ["ATM TRACER 37 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36294] = ["ATM TRACER 38 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36295] = ["ATM TRACER 39 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36296] = ["ATM TRACER 40 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36297] = ["ATM TRACER 41 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36298] = ["ATM TRACER 42 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36299] = ["ATM TRACER 43 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36300] = ["ATM TRACER 44 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36301] = ["ATM TRACER 45 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36302] = ["ATM TRACER 46 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36303] = ["ATM TRACER 47 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36304] = ["ATM TRACER 48 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36305] = ["ATM TRACER 49 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36306] = ["ATM TRACER 50 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36307] = ["ATM TRACER 51 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36308] = ["ATM TRACER 52 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36309] = ["ATM TRACER 53 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36310] = ["ATM TRACER 54 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36311] = ["ATM TRACER 55 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36312] = ["ATM TRACER 56 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36313] = ["ATM TRACER 57 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36314] = ["ATM TRACER 58 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36315] = ["ATM TRACER 59 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36316] = ["ATM TRACER 60 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36317] = ["ATM TRACER 61 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36318] = ["ATM TRACER 62 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36319] = ["ATM TRACER 63 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36320] = ["ATM TRACER 64 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36321] = ["ATM TRACER 65 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36322] = ["ATM TRACER 66 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36323] = ["ATM TRACER 67 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36324] = ["ATM TRACER 68 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36325] = ["ATM TRACER 69 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36326] = ["ATM TRACER 70 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36327] = ["ATM TRACER 71 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36328] = ["ATM TRACER 72 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36329] = ["ATM TRACER 73 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36330] = ["ATM TRACER 74 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36331] = ["ATM TRACER 75 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36332] = ["ATM TRACER 76 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36333] = ["ATM TRACER 77 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36334] = ["ATM TRACER 78 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36335] = ["ATM TRACER 79 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36336] = ["ATM TRACER 80 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36337] = ["ATM TRACER 81 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36338] = ["ATM TRACER 82 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36339] = ["ATM TRACER 83 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36340] = ["ATM TRACER 84 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36341] = ["ATM TRACER 85 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36342] = ["ATM TRACER 86 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36343] = ["ATM TRACER 87 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36344] = ["ATM TRACER 88 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36345] = ["ATM TRACER 89 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36346] = ["ATM TRACER 90 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36347] = ["ATM TRACER 91 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36348] = ["ATM TRACER 92 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36349] = ["ATM TRACER 93 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36350] = ["ATM TRACER 94 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36351] = ["ATM TRACER 95 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36352] = ["ATM TRACER 96 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36353] = ["ATM TRACER 97 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36354] = ["ATM TRACER 98 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36355] = ["ATM TRACER 99 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36356] = ["ATM TRACER 100 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36357] = ["ATM TRACER 101 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36358] = ["ATM TRACER 102 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36359] = ["ATM TRACER 103 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36360] = ["ATM TRACER 104 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36361] = ["ATM TRACER 105 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36362] = ["ATM TRACER 106 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36363] = ["ATM TRACER 107 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36364] = ["ATM TRACER 108 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36365] = ["ATM TRACER 109 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36366] = ["ATM TRACER 110 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36367] = ["ATM TRACER 111 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36368] = ["ATM TRACER 112 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36369] = ["ATM TRACER 113 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36370] = ["ATM TRACER 114 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36371] = ["ATM TRACER 115 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36372] = ["ATM TRACER 116 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36373] = ["ATM TRACER 117 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36374] = ["ATM TRACER 118 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36375] = ["ATM TRACER 119 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36376] = ["ATM TRACER 120 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36377] = ["ATM TRACER 121 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36378] = ["ATM TRACER 122 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36379] = ["ATM TRACER 123 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36380] = ["ATM TRACER 124 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36381] = ["ATM TRACER 125 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36382] = ["ATM TRACER 126 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36383] = ["ATM TRACER 127 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36384] = ["ATM TRACER 128 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36385] = ["ATM TRACER 129 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36386] = ["ATM TRACER 130 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36387] = ["ATM TRACER 131 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36388] = ["ATM TRACER 132 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36389] = ["ATM TRACER 133 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36390] = ["ATM TRACER 134 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36391] = ["ATM TRACER 135 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36392] = ["ATM TRACER 136 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36393] = ["ATM TRACER 137 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36394] = ["ATM TRACER 138 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36395] = ["ATM TRACER 139 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36396] = ["ATM TRACER 140 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36397] = ["ATM TRACER 141 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36398] = ["ATM TRACER 142 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36399] = ["ATM TRACER 143 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36400] = ["ATM TRACER 144 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36401] = ["ATM TRACER 145 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36402] = ["ATM TRACER 146 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36403] = ["ATM TRACER 147 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36404] = ["ATM TRACER 148 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36405] = ["ATM TRACER 149 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[36406] = ["ATM TRACER 150 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37001] = ["UKCA TRACER 1 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37002] = ["UKCA TRACER 2 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37003] = ["UKCA TRACER 3 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37004] = ["UKCA TRACER 4 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37005] = ["UKCA TRACER 5 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37006] = ["UKCA TRACER 6 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37007] = ["UKCA TRACER 7 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37008] = ["UKCA TRACER 8 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37009] = ["UKCA TRACER 9 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37010] = ["UKCA TRACER 10 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37011] = ["UKCA TRACER 11 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37012] = ["UKCA TRACER 12 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37013] = ["UKCA TRACER 13 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37014] = ["UKCA TRACER 14 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37015] = ["UKCA TRACER 15 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37016] = ["UKCA TRACER 16 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37017] = ["UKCA TRACER 17 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37018] = ["UKCA TRACER 18 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37019] = ["UKCA TRACER 19 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37020] = ["UKCA TRACER 20 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37021] = ["UKCA TRACER 21 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37022] = ["UKCA TRACER 22 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37023] = ["UKCA TRACER 23 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37024] = ["UKCA TRACER 24 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37025] = ["UKCA TRACER 25 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37026] = ["UKCA TRACER 26 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37027] = ["UKCA TRACER 27 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37028] = ["UKCA TRACER 28 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37029] = ["UKCA TRACER 29 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37030] = ["UKCA TRACER 30 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37031] = ["UKCA TRACER 31 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37032] = ["UKCA TRACER 32 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37033] = ["UKCA TRACER 33 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37034] = ["UKCA TRACER 34 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37035] = ["UKCA TRACER 35 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37036] = ["UKCA TRACER 36 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37037] = ["UKCA TRACER 37 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37038] = ["UKCA TRACER 38 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37039] = ["UKCA TRACER 39 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37040] = ["UKCA TRACER 40 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37041] = ["UKCA TRACER 41 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37042] = ["UKCA TRACER 42 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37043] = ["UKCA TRACER 43 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37044] = ["UKCA TRACER 44 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37045] = ["UKCA TRACER 45 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37046] = ["UKCA TRACER 46 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37047] = ["UKCA TRACER 47 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37048] = ["UKCA TRACER 48 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37049] = ["UKCA TRACER 49 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37050] = ["UKCA TRACER 50 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37051] = ["UKCA TRACER 51 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37052] = ["UKCA TRACER 52 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37053] = ["UKCA TRACER 53 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37054] = ["UKCA TRACER 54 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37055] = ["UKCA TRACER 55 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37056] = ["UKCA TRACER 56 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37057] = ["UKCA TRACER 57 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37058] = ["UKCA TRACER 58 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37059] = ["UKCA TRACER 59 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37060] = ["UKCA TRACER 60 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37061] = ["UKCA TRACER 61 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37062] = ["UKCA TRACER 62 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37063] = ["UKCA TRACER 63 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37064] = ["UKCA TRACER 64 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37065] = ["UKCA TRACER 65 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37066] = ["UKCA TRACER 66 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37067] = ["UKCA TRACER 67 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37068] = ["UKCA TRACER 68 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37069] = ["UKCA TRACER 69 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37070] = ["UKCA TRACER 70 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37071] = ["UKCA TRACER 71 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37072] = ["UKCA TRACER 72 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37073] = ["UKCA TRACER 73 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37074] = ["UKCA TRACER 74 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37075] = ["UKCA TRACER 75 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37076] = ["UKCA TRACER 76 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37077] = ["UKCA TRACER 77 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37078] = ["UKCA TRACER 78 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37079] = ["UKCA TRACER 79 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37080] = ["UKCA TRACER 80 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37081] = ["UKCA TRACER 81 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37082] = ["UKCA TRACER 82 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37083] = ["UKCA TRACER 83 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37084] = ["UKCA TRACER 84 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37085] = ["UKCA TRACER 85 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37086] = ["UKCA TRACER 86 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37087] = ["UKCA TRACER 87 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37088] = ["UKCA TRACER 88 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37089] = ["UKCA TRACER 89 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37090] = ["UKCA TRACER 90 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37091] = ["UKCA TRACER 91 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37092] = ["UKCA TRACER 92 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37093] = ["UKCA TRACER 93 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37094] = ["UKCA TRACER 94 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37095] = ["UKCA TRACER 95 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37096] = ["UKCA TRACER 96 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37097] = ["UKCA TRACER 97 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37098] = ["UKCA TRACER 98 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37099] = ["UKCA TRACER 99 LATERAL BOUNDARY VAL.", "", "", "", ""] -atm_stashvar[37100] = ["UKCA TRACER 100 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37101] = ["UKCA TRACER 101 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37102] = ["UKCA TRACER 102 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37103] = ["UKCA TRACER 103 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37104] = ["UKCA TRACER 104 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37105] = ["UKCA TRACER 105 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37106] = ["UKCA TRACER 106 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37107] = ["UKCA TRACER 107 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37108] = ["UKCA TRACER 108 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37109] = ["UKCA TRACER 109 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37110] = ["UKCA TRACER 110 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37111] = ["UKCA TRACER 111 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37112] = ["UKCA TRACER 112 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37113] = ["UKCA TRACER 113 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37114] = ["UKCA TRACER 114 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37115] = ["UKCA TRACER 115 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37116] = ["UKCA TRACER 116 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37117] = ["UKCA TRACER 117 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37118] = ["UKCA TRACER 118 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37119] = ["UKCA TRACER 119 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37120] = ["UKCA TRACER 120 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37121] = ["UKCA TRACER 121 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37122] = ["UKCA TRACER 122 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37123] = ["UKCA TRACER 123 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37124] = ["UKCA TRACER 124 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37125] = ["UKCA TRACER 125 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37126] = ["UKCA TRACER 126 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37127] = ["UKCA TRACER 127 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37128] = ["UKCA TRACER 128 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37129] = ["UKCA TRACER 129 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37130] = ["UKCA TRACER 130 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37131] = ["UKCA TRACER 131 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37132] = ["UKCA TRACER 132 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37133] = ["UKCA TRACER 133 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37134] = ["UKCA TRACER 134 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37135] = ["UKCA TRACER 135 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37136] = ["UKCA TRACER 136 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37137] = ["UKCA TRACER 137 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37138] = ["UKCA TRACER 138 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37139] = ["UKCA TRACER 139 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37140] = ["UKCA TRACER 140 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37141] = ["UKCA TRACER 141 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37142] = ["UKCA TRACER 142 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37143] = ["UKCA TRACER 143 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37144] = ["UKCA TRACER 144 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37145] = ["UKCA TRACER 145 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37146] = ["UKCA TRACER 146 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37147] = ["UKCA TRACER 147 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37148] = ["UKCA TRACER 148 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37149] = ["UKCA TRACER 149 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37150] = ["UKCA TRACER 150 LATERAL BOUNDARY VAL", "", "", "", ""] -atm_stashvar[37257] = ["UKCA TRACER 1 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37258] = ["UKCA TRACER 2 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37259] = ["UKCA TRACER 3 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37260] = ["UKCA TRACER 4 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37261] = ["UKCA TRACER 5 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37262] = ["UKCA TRACER 6 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37263] = ["UKCA TRACER 7 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37264] = ["UKCA TRACER 8 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37265] = ["UKCA TRACER 9 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37266] = ["UKCA TRACER 10 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37267] = ["UKCA TRACER 11 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37268] = ["UKCA TRACER 12 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37269] = ["UKCA TRACER 13 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37270] = ["UKCA TRACER 14 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37271] = ["UKCA TRACER 15 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37272] = ["UKCA TRACER 16 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37273] = ["UKCA TRACER 17 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37274] = ["UKCA TRACER 18 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37275] = ["UKCA TRACER 19 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37276] = ["UKCA TRACER 20 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37277] = ["UKCA TRACER 21 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37278] = ["UKCA TRACER 22 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37279] = ["UKCA TRACER 23 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37280] = ["UKCA TRACER 24 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37281] = ["UKCA TRACER 25 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37282] = ["UKCA TRACER 26 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37283] = ["UKCA TRACER 27 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37284] = ["UKCA TRACER 28 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37285] = ["UKCA TRACER 29 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37286] = ["UKCA TRACER 30 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37287] = ["UKCA TRACER 31 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37288] = ["UKCA TRACER 32 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37289] = ["UKCA TRACER 33 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37290] = ["UKCA TRACER 34 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37291] = ["UKCA TRACER 35 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37292] = ["UKCA TRACER 36 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37293] = ["UKCA TRACER 37 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37294] = ["UKCA TRACER 38 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37295] = ["UKCA TRACER 39 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37296] = ["UKCA TRACER 40 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37297] = ["UKCA TRACER 41 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37298] = ["UKCA TRACER 42 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37299] = ["UKCA TRACER 43 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37300] = ["UKCA TRACER 44 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37301] = ["UKCA TRACER 45 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37302] = ["UKCA TRACER 46 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37303] = ["UKCA TRACER 47 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37304] = ["UKCA TRACER 48 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37305] = ["UKCA TRACER 49 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37306] = ["UKCA TRACER 50 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37307] = ["UKCA TRACER 51 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37308] = ["UKCA TRACER 52 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37309] = ["UKCA TRACER 53 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37310] = ["UKCA TRACER 54 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37311] = ["UKCA TRACER 55 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37312] = ["UKCA TRACER 56 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37313] = ["UKCA TRACER 57 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37314] = ["UKCA TRACER 58 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37315] = ["UKCA TRACER 59 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37316] = ["UKCA TRACER 60 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37317] = ["UKCA TRACER 61 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37318] = ["UKCA TRACER 62 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37319] = ["UKCA TRACER 63 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37320] = ["UKCA TRACER 64 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37321] = ["UKCA TRACER 65 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37322] = ["UKCA TRACER 66 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37323] = ["UKCA TRACER 67 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37324] = ["UKCA TRACER 68 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37325] = ["UKCA TRACER 69 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37326] = ["UKCA TRACER 70 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37327] = ["UKCA TRACER 71 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37328] = ["UKCA TRACER 72 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37329] = ["UKCA TRACER 73 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37330] = ["UKCA TRACER 74 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37331] = ["UKCA TRACER 75 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37332] = ["UKCA TRACER 76 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37333] = ["UKCA TRACER 77 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37334] = ["UKCA TRACER 78 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37335] = ["UKCA TRACER 79 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37336] = ["UKCA TRACER 80 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37337] = ["UKCA TRACER 81 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37338] = ["UKCA TRACER 82 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37339] = ["UKCA TRACER 83 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37340] = ["UKCA TRACER 84 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37341] = ["UKCA TRACER 85 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37342] = ["UKCA TRACER 86 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37343] = ["UKCA TRACER 87 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37344] = ["UKCA TRACER 88 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37345] = ["UKCA TRACER 89 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37346] = ["UKCA TRACER 90 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37347] = ["UKCA TRACER 91 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37348] = ["UKCA TRACER 92 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37349] = ["UKCA TRACER 93 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37350] = ["UKCA TRACER 94 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37351] = ["UKCA TRACER 95 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37352] = ["UKCA TRACER 96 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37353] = ["UKCA TRACER 97 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37354] = ["UKCA TRACER 98 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37355] = ["UKCA TRACER 99 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37356] = ["UKCA TRACER 100 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37357] = ["UKCA TRACER 101 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37358] = ["UKCA TRACER 102 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37359] = ["UKCA TRACER 103 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37360] = ["UKCA TRACER 104 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37361] = ["UKCA TRACER 105 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37362] = ["UKCA TRACER 106 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37363] = ["UKCA TRACER 107 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37364] = ["UKCA TRACER 108 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37365] = ["UKCA TRACER 109 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37366] = ["UKCA TRACER 110 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37367] = ["UKCA TRACER 111 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37368] = ["UKCA TRACER 112 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37369] = ["UKCA TRACER 113 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37370] = ["UKCA TRACER 114 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37371] = ["UKCA TRACER 115 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37372] = ["UKCA TRACER 116 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37373] = ["UKCA TRACER 117 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37374] = ["UKCA TRACER 118 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37375] = ["UKCA TRACER 119 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37376] = ["UKCA TRACER 120 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37377] = ["UKCA TRACER 121 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37378] = ["UKCA TRACER 122 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37379] = ["UKCA TRACER 123 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37380] = ["UKCA TRACER 124 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37381] = ["UKCA TRACER 125 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37382] = ["UKCA TRACER 126 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37383] = ["UKCA TRACER 127 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37384] = ["UKCA TRACER 128 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37385] = ["UKCA TRACER 129 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37386] = ["UKCA TRACER 130 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37387] = ["UKCA TRACER 131 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37388] = ["UKCA TRACER 132 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37389] = ["UKCA TRACER 133 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37390] = ["UKCA TRACER 134 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37391] = ["UKCA TRACER 135 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37392] = ["UKCA TRACER 136 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37393] = ["UKCA TRACER 137 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37394] = ["UKCA TRACER 138 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37395] = ["UKCA TRACER 139 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37396] = ["UKCA TRACER 140 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37397] = ["UKCA TRACER 141 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37398] = ["UKCA TRACER 142 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37399] = ["UKCA TRACER 143 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37400] = ["UKCA TRACER 144 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37401] = ["UKCA TRACER 145 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37402] = ["UKCA TRACER 146 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37403] = ["UKCA TRACER 147 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37404] = ["UKCA TRACER 148 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37405] = ["UKCA TRACER 149 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[37406] = ["UKCA TRACER 150 BOUNDARY TENDENCY", "", "", "", ""] -atm_stashvar[38201] = ["PRIMARY H2SO4 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38202] = ["PRIMARY H2SO4 TO ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38203] = ["PRIMARY H2SO4 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38204] = ["PRIMARY SEA-SALT TO ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38205] = ["PRIMARY SEA-SALT TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38206] = ["PRIMARY BLACK CARBON TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38207] = ["PRIMARY BLACK CARBON TO AITKEN (INS)", "", "", "", ""] -atm_stashvar[38208] = ["PRIMARY OM TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38209] = ["PRIMARY OM TO AITKEN (INS)", "", "", "", ""] -atm_stashvar[38210] = ["PRIMARY DUST TO ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38211] = ["PRIMARY DUST TO ACCUMULATION (INS)", "", "", "", ""] -atm_stashvar[38212] = ["PRIMARY DUST TO COARSE (SOLUBLE)", "", "", "", ""] -atm_stashvar[38213] = ["PRIMARY DUST TO COARSE (INSOLUBLE)", "", "", "", ""] -atm_stashvar[38214] = ["DRY DEPOSITION H2SO4 NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38215] = ["DRY DEPOSITION H2SO4 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38216] = ["DRY DEPOSITION H2SO4 ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38217] = ["DRY DEPOSITION H2SO4 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38218] = ["DRY DEPOSITION SEA-SALT ACC (SOL)", "", "", "", ""] -atm_stashvar[38219] = ["DRY DEPOSITION SEA-SALT COARSE (SOL)", "", "", "", ""] -atm_stashvar[38220] = ["DRY DEPOSITION BLK CARB AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38221] = ["DRY DEPOSITION BLK CARB ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38222] = ["DRY DEPOSITION BLK CARB COARSE (SOL)", "", "", "", ""] -atm_stashvar[38223] = ["DRY DEPOSITION BLK CARB AITKEN (INS)", "", "", "", ""] -atm_stashvar[38224] = ["DRY DEPOSITION OM NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38225] = ["DRY DEPOSITION OM AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38226] = ["DRY DEPOSITION OM ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38227] = ["DRY DEPOSITION OM COARSE (SOL)", "", "", "", ""] -atm_stashvar[38228] = ["DRY DEPOSITION OM AITKEN (INS)", "", "", "", ""] -atm_stashvar[38229] = ["DRY DEPOSITION OM2 NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38230] = ["DRY DEPOSITION OM2 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38231] = ["DRY DEPOSITION OM2 ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38232] = ["DRY DEPOSITION OM2 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38233] = ["DRY DEPOSITION DUST ACCUMULATN (SOL)", "", "", "", ""] -atm_stashvar[38234] = ["DRY DEPOSITION DUST COARSE (SOL)", "", "", "", ""] -atm_stashvar[38235] = ["DRY DEPOSITION DUST ACCUMULATN (INS)", "", "", "", ""] -atm_stashvar[38236] = ["DRY DEPOSITION DUST COARSE (INS)", "", "", "", ""] -atm_stashvar[38237] = ["NUC SCAVENGING H2SO4 NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38238] = ["NUC SCAVENGING H2SO4 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38239] = ["NUC SCAVENGING H2SO4 ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38240] = ["NUC SCAVENGING H2SO4 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38241] = ["NUC SCAVENGING SEA-SALT ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38242] = ["NUC SCAVENGING SEA-SALT COARSE (SOL)", "", "", "", ""] -atm_stashvar[38243] = ["NUC SCAVENGING BLK CARB AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38244] = ["NUC SCAVENGING BLK CARB ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38245] = ["NUC SCAVENGING BLK CARB COARSE (SOL)", "", "", "", ""] -atm_stashvar[38246] = ["NUC SCAVENGING BLK CARB AITKEN (INS)", "", "", "", ""] -atm_stashvar[38247] = ["NUC SCAVENGING OM NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38248] = ["NUC SCAVENGING OM AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38249] = ["NUC SCAVENGING OM ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38250] = ["NUC SCAVENGING OM COARSE (SOL)", "", "", "", ""] -atm_stashvar[38251] = ["NUC SCAVENGING OM AITKEN (INS)", "", "", "", ""] -atm_stashvar[38252] = ["NUC SCAVENGING OM2 NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38253] = ["NUC SCAVENGING OM2 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38254] = ["NUC SCAVENGING OM2 ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38255] = ["NUC SCAVENGING OM2 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38257] = ["NUC SCAVENGING DUST ACCUMULTN. (SOL)", "", "", "", ""] -atm_stashvar[38258] = ["NUC SCAVENGING DUST COARSE (SOL)", "", "", "", ""] -atm_stashvar[38259] = ["NUC SCAVENGING DUST ACCUMULTN. (INS)", "", "", "", ""] -atm_stashvar[38260] = ["NUC SCAVENGING DUST COARSE (INS)", "", "", "", ""] -atm_stashvar[38261] = ["IMP SCAVENGING H2SO4 NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38262] = ["IMP SCAVENGING H2SO4 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38263] = ["IMP SCAVENGING H2SO4 ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38264] = ["IMP SCAVENGING H2SO4 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38265] = ["IMP SCAVENGING SEA-SALT ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38266] = ["IMP SCAVENGING SEA-SALT COARSE (SOL)", "", "", "", ""] -atm_stashvar[38267] = ["IMP SCAVENGING BLK CARB AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38268] = ["IMP SCAVENGING BLK CARB ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38269] = ["IMP SCAVENGING BLK CARB COARSE (SOL)", "", "", "", ""] -atm_stashvar[38270] = ["IMP SCAVENGING BLK CARB AITKEN (INS)", "", "", "", ""] -atm_stashvar[38271] = ["IMP SCAVENGING OM NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38272] = ["IMP SCAVENGING OM AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38273] = ["IMP SCAVENGING OM ACCUMULATION (SOL)", "", "", "", ""] -atm_stashvar[38274] = ["IMP SCAVENGING OM COARSE (SOL)", "", "", "", ""] -atm_stashvar[38275] = ["IMP SCAVENGING OM AITKEN (INS)", "", "", "", ""] -atm_stashvar[38276] = ["IMP SCAVENGING OM2 NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38277] = ["IMP SCAVENGING OM2 AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38278] = ["IMP SCAVENGING OM2 ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38279] = ["IMP SCAVENGING OM2 COARSE (SOL)", "", "", "", ""] -atm_stashvar[38280] = ["IMP SCAVENGING DUST ACCUMULTN. (SOL)", "", "", "", ""] -atm_stashvar[38281] = ["IMP SCAVENGING DUST COARSE (SOL)", "", "", "", ""] -atm_stashvar[38282] = ["IMP SCAVENGING DUST ACCUMULTN. (INS)", "", "", "", ""] -atm_stashvar[38283] = ["IMP SCAVENGING DUST COARSE (INS)", "", "", "", ""] -atm_stashvar[38284] = ["INCLOUD H2SO4 (H2O2) TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38285] = ["INCLOUD H2SO4 (H2O2) TO ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38286] = ["INCLOUD H2SO4 (H2O2) TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38287] = ["INCLOUD H2SO4 (O3) TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38288] = ["INCLOUD H2SO4 (O3) TO ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38289] = ["INCLOUD H2SO4 (O3) TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38290] = ["CLOUDPROC H2SO4 AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38291] = ["CLOUDPROC BC AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38292] = ["CLOUDPROC OM AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38293] = ["CLOUDPROC OM2 AITSOL --> ACCSOL", "", "", "", ""] -atm_stashvar[38294] = ["CONDENSATION H2SO4 TO NUCLN. (SOL)", "", "", "", ""] -atm_stashvar[38295] = ["CONDENSATION H2SO4 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38296] = ["CONDENSATION H2SO4 TO ACCUM. (SOL)", "", "", "", ""] -atm_stashvar[38297] = ["CONDENSATION H2SO4 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38298] = ["CONDENSATION H2SO4 TO AITKEN (INSOL)", "", "", "", ""] -atm_stashvar[38299] = ["CONDENSATION H2SO4 TO ACCUM. (INSOL)", "", "", "", ""] -atm_stashvar[38300] = ["CONDENSATION H2SO4 TO COARSE (INSOL)", "", "", "", ""] -atm_stashvar[38301] = ["CONDENSATION OM1 TO NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38302] = ["CONDENSATION OM1 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38303] = ["CONDENSATION OM1 TO ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38304] = ["CONDENSATION OM1 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38305] = ["CONDENSATION OM1 TO AITKEN (INSOL)", "", "", "", ""] -atm_stashvar[38306] = ["CONDENSATION OM1 TO ACCUM. (INSOL)", "", "", "", ""] -atm_stashvar[38307] = ["CONDENSATION OM1 TO COARSE (INSOL)", "", "", "", ""] -atm_stashvar[38308] = ["CONDENSATION OM2 TO NUCLEATION (SOL)", "", "", "", ""] -atm_stashvar[38309] = ["CONDENSATION OM2 TO AITKEN (SOL)", "", "", "", ""] -atm_stashvar[38310] = ["CONDENSATION OM2 TO ACCUMULTN (SOL)", "", "", "", ""] -atm_stashvar[38311] = ["CONDENSATION OM2 TO COARSE (SOL)", "", "", "", ""] -atm_stashvar[38312] = ["CONDENSATION OM2 TO AITKEN (INSOL)", "", "", "", ""] -atm_stashvar[38313] = ["CONDENSATION OM2 TO ACCUM. (INSOL)", "", "", "", ""] -atm_stashvar[38314] = ["CONDENSATION OM2 TO COARSE (INSOL)", "", "", "", ""] -atm_stashvar[38315] = ["HETOX ON DUST {SO2 -> SO4} (ACC-SOL)", "", "", "", ""] -atm_stashvar[38316] = ["HETOX ON DUST {SO2 -> SO4} (COR-SOL)", "", "", "", ""] -atm_stashvar[38317] = ["HETOX ON DUST {SO2 -> SO4} (ACC-INS)", "", "", "", ""] -atm_stashvar[38318] = ["HETOX ON DUST {SO2 -> SO4} (COR-INS)", "", "", "", ""] -atm_stashvar[38319] = ["NUCLEATION OF H2SO4 (TO NUC-SOL)", "", "", "", ""] -atm_stashvar[38320] = ["COAG H2SO4 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38321] = ["COAG H2SO4 NUCLTN-SOL TO ACCUM.-SOL", "", "", "", ""] -atm_stashvar[38322] = ["COAG H2SO4 NUCLTN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38323] = ["COAG H2SO4 NUCLTN-SOL TO AITKEN-INS", "", "", "", ""] -atm_stashvar[38324] = ["COAG H2SO4 NUCLTN-SOL TO ACCUM.-INS", "", "", "", ""] -atm_stashvar[38325] = ["COAG H2SO4 NUCLTN-SOL TO COARSE-INS", "", "", "", ""] -atm_stashvar[38326] = ["COAG OM1 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38327] = ["COAG OM1 NUCLTN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38328] = ["COAG OM1 NUCLTN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38329] = ["COAG OM1 NUCLTN-SOL TO AITKEN-INSOL", "", "", "", ""] -atm_stashvar[38330] = ["COAG OM1 NUCLTN-SOL TO ACCUM.-INSOL", "", "", "", ""] -atm_stashvar[38331] = ["COAG OM1 NUCLTN-SOL TO COARSE-INSOL", "", "", "", ""] -atm_stashvar[38332] = ["COAG OM2 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38333] = ["COAG OM2 NUCLTN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38334] = ["COAG OM2 NUCLTN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38335] = ["COAG OM2 NUCLTN-SOL TO AITKEN-INSOL", "", "", "", ""] -atm_stashvar[38336] = ["COAG OM2 NUCLTN-SOL TO ACCUM.-INSOL", "", "", "", ""] -atm_stashvar[38337] = ["COAG OM2 NUCLTN-SOL TO COARSE-INSOL", "", "", "", ""] -atm_stashvar[38338] = ["COAG H2SO4 AITKEN-SOL TO ACCUM.-SOL", "", "", "", ""] -atm_stashvar[38339] = ["COAG H2SO4 AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38342] = ["COAG BC AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38343] = ["COAG BC AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38346] = ["COAG OM1 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38347] = ["COAG OM1 AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38350] = ["COAG OM2 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38351] = ["COAG OM2 AITKEN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38354] = ["COAG H2SO4 ACCUM.-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38356] = ["COAG BC ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38358] = ["COAG OM1 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38360] = ["COAG SEA-SALT ACC-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38362] = ["COAG OM2 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38364] = ["COAG DU ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38366] = ["COAG BC AITKEN-INS TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38367] = ["COAG OM1 AITKEN-INS TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38368] = ["COAG BC AITKEN-INS TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38369] = ["COAG OM1 AITKEN-INS TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38370] = ["COAG DU ACCUM.-INS TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38371] = ["AGEING H2SO4 AITKEN-INS TO AIT.-SOL", "", "", "", ""] -atm_stashvar[38372] = ["AGEING BC AITKEN-INS TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38373] = ["AGEING OM1 AITKEN-INS TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38374] = ["AGEING OM2 AITKEN-INS TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38375] = ["MERGE H2SO4 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38376] = ["MERGE OM1 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38377] = ["MERGE OM2 NUCLTN-SOL TO AITKEN-SOL", "", "", "", ""] -atm_stashvar[38378] = ["MERGE H2SO4 AITKEN-SOL TO ACCUM.-SOL", "", "", "", ""] -atm_stashvar[38379] = ["MERGE BC AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38380] = ["MERGE OM1 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38381] = ["MERGE OM2 AITKEN-SOL TO ACCUMULN-SOL", "", "", "", ""] -atm_stashvar[38382] = ["MERGE H2SO4 ACCUM.-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38383] = ["MERGE SEA_SALT ACC-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38384] = ["MERGE BC ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38385] = ["MERGE OM1 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38386] = ["MERGE DU ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38387] = ["MERGE OM2 ACCUMULN-SOL TO COARSE-SOL", "", "", "", ""] -atm_stashvar[38401] = ["DRY PARTICLE DIAMETER NUCLEATION-SOL", "", "", "", ""] -atm_stashvar[38402] = ["DRY PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[38403] = ["DRY PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[38404] = ["DRY PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[38405] = ["DRY PARTICLE DIAMETER AITKEN-INS", "", "", "", ""] -atm_stashvar[38406] = ["DRY PARTICLE DIAMETER ACCUMULATN-INS", "", "", "", ""] -atm_stashvar[38407] = ["DRY PARTICLE DIAMETER COARSE-INS", "", "", "", ""] -atm_stashvar[38408] = ["WET PARTICLE DIAMETER NUCLEATION-SOL", "", "", "", ""] -atm_stashvar[38409] = ["WET PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[38410] = ["WET PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[38411] = ["WET PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[38412] = ["WATER CONTENT FOR NUCLEATION-SOLUBLE", "", "", "", ""] -atm_stashvar[38413] = ["WATER CONTENT FOR AITKEN -SOLUBLE", "", "", "", ""] -atm_stashvar[38414] = ["WATER CONTENT FOR ACCUMULTN.-SOLUBLE", "", "", "", ""] -atm_stashvar[38415] = ["WATER CONTENT FOR COARSE -SOLUBLE", "", "", "", ""] -atm_stashvar[38416] = ["SURFACE AREA CONC NUCLN.-SOL (WET)", "", "", "", ""] -atm_stashvar[38417] = ["SURFACE AREA CONC AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[38418] = ["SURFACE AREA CONC ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[38419] = ["SURFACE AREA CONC COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[38420] = ["SURFACE AREA CONC AITKEN-INS", "", "", "", ""] -atm_stashvar[38421] = ["SURFACE AREA CONC ACCUM.-INS", "", "", "", ""] -atm_stashvar[38422] = ["SURFACE AREA CONC COARSE-INS", "", "", "", ""] -atm_stashvar[38423] = ["VOLUME CONCENTRN. NUCLN.-SOL (WET)", "", "", "", ""] -atm_stashvar[38424] = ["VOLUME CONCENTRN. AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[38425] = ["VOLUME CONCENTRN. ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[38426] = ["VOLUME CONCENTRN. COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[38427] = ["VOLUME CONCENTRN. AITKEN-INS", "", "", "", ""] -atm_stashvar[38428] = ["VOLUME CONCENTRN. ACCUM.-INS", "", "", "", ""] -atm_stashvar[38429] = ["VOLUME CONCENTRN. COARSE-INS", "", "", "", ""] -atm_stashvar[38430] = ["PTCL MASS DENSITY NUCLN.-SOL (WET)", "", "", "", ""] -atm_stashvar[38431] = ["PTCL MASS DENSITY AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[38432] = ["PTCL MASS DENSITY ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[38433] = ["PTCL MASS DENSITY COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[38434] = ["PTCL MASS DENSITY AITKEN-INS", "", "", "", ""] -atm_stashvar[38435] = ["PTCL MASS DENSITY ACCUM.-INS", "", "", "", ""] -atm_stashvar[38436] = ["PTCL MASS DENSITY COARSE-INS", "", "", "", ""] -atm_stashvar[38437] = ["CN NUMBER CONCENTRATION", "", "", "", ""] -atm_stashvar[38438] = ["CCN NO. CONCENTRN. (ACC+COR)", "", "", "", ""] -atm_stashvar[38439] = ["CCN NO. CONCENTRN. (ACC+COR+AIT>25r)", "", "", "", ""] -atm_stashvar[38440] = ["CCN NO. CONCENTRN. (ACC+COR+AIT>35r)", "", "", "", ""] -atm_stashvar[38441] = ["CD NUMBER CONCENTRATION", "", "", "", ""] -atm_stashvar[38442] = ["H2SO4 PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38443] = ["OM1 PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38444] = ["OM2 PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38445] = ["H2O PARTIAL VOLUME CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38446] = ["H2SO4 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38447] = ["BC PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38448] = ["OM1 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38449] = ["OM2 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38450] = ["H2O PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38451] = ["H2SO4 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38452] = ["BC PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38453] = ["OM1 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38454] = ["SS PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38455] = ["DU PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38456] = ["OM2 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38457] = ["H2O PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38458] = ["H2SO4 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38459] = ["BC PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38460] = ["OM1 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38461] = ["SSALT PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38462] = ["DU PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38463] = ["OM2 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38464] = ["H2O PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38465] = ["BC PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[38466] = ["OM1 PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[38467] = ["DU PARTIAL VOLUME CONC (ACC-INS)", "", "", "", ""] -atm_stashvar[38468] = ["DU PARTIAL VOLUME CONC (COR-INS)", "", "", "", ""] -atm_stashvar[38469] = ["ACTIVE CLOUD DROP NO CONC (NUC-SOL)", "", "", "", ""] -atm_stashvar[38470] = ["ACTIVE CLOUD DROP NO CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[38471] = ["ACTIVE CLOUD DROP NO CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[38472] = ["ACTIVE CLOUD DROP NO CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[38473] = ["Maximum Supersaturation (percent)", "", "", "", ""] -atm_stashvar[38474] = ["Cloud base for aerosol activation", "", "", "", ""] -atm_stashvar[38475] = ["Sigmaw Updraught Velocity", "", "", "", ""] -atm_stashvar[38476] = ["CLOUD LIQUID FRACTION", "", "", "", ""] -atm_stashvar[38477] = ["TOTAL CDNC * CLOUD LIQ FRACTION", "", "", "", ""] -atm_stashvar[38478] = ["CLOUD FLAG", "", "", "", ""] -atm_stashvar[38479] = ["TOTAL CDNC * CLOUD FLAG (m^-3)", "", "", "", ""] -atm_stashvar[38480] = ["Max SuperSaturation*CLD FLAG (perc)", "", "", "", ""] -atm_stashvar[38481] = ["Charac updraft * CLD FLAG (m s^-1)", "", "", "", ""] -atm_stashvar[38482] = ["Sigmaw * CLOUD FLAG (m s^-1)", "", "", "", ""] -atm_stashvar[38483] = ["BL TKE * CLOUD FLAG (m^2 s^-2)", "", "", "", ""] -atm_stashvar[38484] = ["CCN at fixed Supersaturation (m^-3)", "", "", "", ""] -atm_stashvar[38485] = ["H2SO4 Nucleation-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38486] = ["H2SO4 Aitken-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38487] = ["H2SO4 accumulation-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38488] = ["H2SO4 coarse-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38489] = ["BC Aitken-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38490] = ["BC accumulation-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38491] = ["BC coarse-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38492] = ["BC Aitken-insol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38493] = ["OM Nucleation-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38494] = ["OM Aitken-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38495] = ["OM accumulation-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38496] = ["OM coarse-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38497] = ["OM Aitken-insol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38498] = ["Sea-salt accumln-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38499] = ["Sea-salt coarse-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38500] = ["Dust accumln-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38501] = ["Dust coarse-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38502] = ["Dust accumln-insol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38503] = ["Dust coarse-insol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38504] = ["Number Nucleation-sol mode (m^-3)", "", "kg m-3", "", ""] -atm_stashvar[38505] = ["Number Aitken-sol mode (m^-3)", "", "kg m-3", "", ""] -atm_stashvar[38506] = ["Number accumulation-sol mode (m^-3)", "", "kg m-3", "", ""] -atm_stashvar[38507] = ["Number coarse-sol mode (m^-3)", "", "kg m-3", "", ""] -atm_stashvar[38508] = ["Number Aitken-insol mode (m^-3)", "", "kg m-3", "", ""] -atm_stashvar[38509] = ["Number accumln-insol mode (m^-3)", "", "kg m-3", "", ""] -atm_stashvar[38510] = ["Number coarse-insol mode (m^-3)", "", "kg m-3", "", ""] -atm_stashvar[38511] = ["H2O Nucleation-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38512] = ["H2O Aitken-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38513] = ["H2O accumulation-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38514] = ["H2O coarse-sol mode (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38515] = ["Total aerosol water content (kgm^-3)", "", "kg m-3", "", ""] -atm_stashvar[38516] = ["H2SO4 load Nucleation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38517] = ["H2SO4 load Aitken-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38518] = ["H2SO4 load accumulation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38519] = ["H2SO4 load coarse-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38520] = ["Total aerosol H2SO4 load (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38521] = ["BC load Aitken-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38522] = ["BC load accumulation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38523] = ["BC load coarse-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38524] = ["BC load Aitken-insol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38525] = ["Total aerosol BC load (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38526] = ["OM load Nucleation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38527] = ["OM load Aitken-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38528] = ["OM load accumulation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38529] = ["OM load coarse-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38530] = ["OM load Aitken-insol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38531] = ["Total aerosol OM load (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38532] = ["Dust load accumulation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38533] = ["Dust load coarse-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38534] = ["Dust load accumultn-insol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38535] = ["Dust load coarse-insol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38536] = ["Total aerosol Dust load (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38537] = ["Sea-salt load accumltn-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38538] = ["Sea-salt load coarse-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38539] = ["Total aerosol Sea-salt load (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38540] = ["H2O load nucleation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38541] = ["H2O load Aitken-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38542] = ["H2O load accumulation-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38543] = ["H2O load coarse-sol (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38544] = ["Total aerosol H2O load (kgm^-2)", "", "kg m-2", "", ""] -atm_stashvar[38545] = ["H2O mass mixing ratio (kg/kg)", "", "kg kg-1", "", ""] -atm_stashvar[38546] = ["MASS REMOVED BY MDT FIX NUCL-SOL", "", "", "", ""] -atm_stashvar[38547] = ["MASS REMOVED BY MDT FIX AITKEN-SOL", "", "", "", ""] -atm_stashvar[38548] = ["MASS REMOVED BY MDT FIX ACCUM-SOL", "", "", "", ""] -atm_stashvar[38549] = ["MASS REMOVED BY MDT FIX COARSE-SOL", "", "", "", ""] -atm_stashvar[38550] = ["MASS REMOVED BY MDT FIX AITKEN-INS", "", "", "", ""] -atm_stashvar[38551] = ["MASS REMOVED BY MDT FIX ACCUM-INS", "", "", "", ""] -atm_stashvar[38552] = ["MASS REMOVED BY MDT FIX COARSE-INS", "", "", "", ""] -atm_stashvar[38553] = ["FREQUENCY MDT FIX (%) NUCL-SOL", "", "", "", ""] -atm_stashvar[38554] = ["FREQUENCY MDT FIX (%) AITKEN-SOL", "", "", "", ""] -atm_stashvar[38555] = ["FREQUENCY MDT FIX (%) ACCUM-SOL", "", "", "", ""] -atm_stashvar[38556] = ["FREQUENCY MDT FIX (%) COARSE-SOL", "", "", "", ""] -atm_stashvar[38557] = ["FREQUENCY MDT FIX (%) AITKEN-INS", "", "", "", ""] -atm_stashvar[38558] = ["FREQUENCY MDT FIX (%) ACCUM-INS", "", "", "", ""] -atm_stashvar[38559] = ["FREQUENCY MDT FIX (%) COARSE-INS", "", "", "", ""] -atm_stashvar[38560] = ["PM10 concentration, wet (ug m-3)", "", "", "", ""] -atm_stashvar[38561] = ["PM2.5 concentration, wet (ug m-3)", "", "", "", ""] -atm_stashvar[38562] = ["PM10 concentration, dry (ug m-3)", "", "", "", ""] -atm_stashvar[38563] = ["PM2.5 concentration, dry (ug m-3)", "", "", "", ""] -atm_stashvar[38564] = ["H2SO4 contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38565] = ["H2SO4 contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38566] = ["BC contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38567] = ["BC contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38568] = ["OM contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38569] = ["OM contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38570] = ["Sea-salt contrib. to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38571] = ["Sea-salt contrib. to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38572] = ["Dust contribution to PM10 (ug m-3)", "", "", "", ""] -atm_stashvar[38573] = ["Dust contribution to PM2.5 (ug m-3)", "", "", "", ""] -atm_stashvar[38900] = ["Plume scvnging Nuc-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38901] = ["Plume scavenging Nuc-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38902] = ["Plume scavenging Nuc-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38903] = ["Plume scavenging Nuc-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38904] = ["Plume scavenging Nuc-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38905] = ["Plume scvnging Ait-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38906] = ["Plume scavenging Ait-sol BC (mol/s)", "", "", "", ""] -atm_stashvar[38907] = ["Plume scavenging Ait-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38908] = ["Plume scavenging Ait-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38909] = ["Plume scavenging Ait-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38910] = ["Plume scavenging Ait-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38911] = ["Plume scvnging acc-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38912] = ["Plume scavenging acc-sol BC (mol/s)", "", "", "", ""] -atm_stashvar[38913] = ["Plume scavenging acc-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38914] = ["Plume scavenging acc-sol Cl (mol/s)", "", "", "", ""] -atm_stashvar[38915] = ["Plume scavenging acc-sol Na (mol/s)", "", "", "", ""] -atm_stashvar[38916] = ["Plume scavenging acc-sol Dust(mol/s)", "", "", "", ""] -atm_stashvar[38917] = ["Plume scavenging acc-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38918] = ["Plume scavenging acc-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38919] = ["Plume scavenging acc-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38920] = ["Plume scvnging cor-sol H2SO4 (mol/s)", "", "", "", ""] -atm_stashvar[38921] = ["Plume scavenging cor-sol BC (mol/s)", "", "", "", ""] -atm_stashvar[38922] = ["Plume scavenging cor-sol OM (mol/s)", "", "", "", ""] -atm_stashvar[38923] = ["Plume scavenging cor-sol Cl (mol/s)", "", "", "", ""] -atm_stashvar[38924] = ["Plume scavenging cor-sol Na (mol/s)", "", "", "", ""] -atm_stashvar[38925] = ["Plume scavenging cor-sol Dust(mol/s)", "", "", "", ""] -atm_stashvar[38926] = ["Plume scavenging cor-sol OM2 (mol/s)", "", "", "", ""] -atm_stashvar[38927] = ["Plume scavenging cor-sol NO3 (mol/s)", "", "", "", ""] -atm_stashvar[38928] = ["Plume scavenging cor-sol NH4 (mol/s)", "", "", "", ""] -atm_stashvar[38929] = ["Plume scavenging Ait-ins BC (mol/s)", "", "", "", ""] -atm_stashvar[38930] = ["Plume scavenging Ait-ins OM (mol/s)", "", "", "", ""] -atm_stashvar[38931] = ["Plume scavenging acc-ins Dust(mol/s)", "", "", "", ""] -atm_stashvar[38932] = ["Plume scavenging cor-ins Dust(mol/s)", "", "", "", ""] -atm_stashvar[39001] = ["ANALYSIS TEMPERATURE ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[39002] = ["MODEL TEMPERATURE AFTER NUDGING", "", "", "", ""] -atm_stashvar[39003] = ["TEMPERATURE INCREMENT DUE TO NUDG", "", "", "", ""] -atm_stashvar[39004] = ["TEMPERATURE INCREMENT DUE TO OTHER", "", "", "", ""] -atm_stashvar[39005] = ["TEMPERATURE RELAXATION PARAMETER", "", "", "", ""] -atm_stashvar[39006] = ["ANALYSIS U WIND ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[39007] = ["U COMPNT OF WIND AFTER NUDGING", "", "", "", ""] -atm_stashvar[39008] = ["U WIND INCREMENT DUE TO NUDGING", "", "", "", ""] -atm_stashvar[39009] = ["U WIND INCREMENT DUE TO OTHER", "", "", "", ""] -atm_stashvar[39010] = ["U WIND RELAXATION PARAMETER", "", "", "", ""] -atm_stashvar[39011] = ["ANALYSIS V WIND ON MODEL LEVELS", "", "", "", ""] -atm_stashvar[39012] = ["V COMPNT OF WIND AFTER NUDGING", "", "", "", ""] -atm_stashvar[39013] = ["V WIND INCREMENT DUE TO NUDGING", "", "", "", ""] -atm_stashvar[39014] = ["V WIND INCREMENT DUE TO OTHER", "", "", "", ""] -atm_stashvar[39015] = ["V WIND RELAXATION PARAMETER", "", "", "", ""] -atm_stashvar[44001] = ["Karbou surface emissivity 23.8 GHz", "", "", "", ""] -atm_stashvar[44002] = ["Karbou surf emiss (stdev) 23.8 GHz", "", "", "", ""] -atm_stashvar[44003] = ["Karbou surface emissivity 31.4 GHz", "", "", "", ""] -atm_stashvar[44004] = ["Karbou surf emiss (stdev) 31.4 GHz", "", "", "", ""] -atm_stashvar[44005] = ["Karbou surface emissivity 50.0 GHz", "", "", "", ""] -atm_stashvar[44006] = ["Karbou surf emiss (stdev) 50.0 GHz", "", "", "", ""] -atm_stashvar[44007] = ["Karbou surface emissivity 89.0 GHz", "", "", "", ""] -atm_stashvar[44008] = ["Karbou surf emiss (stdev) 89.0 GHz", "", "", "", ""] -atm_stashvar[44009] = ["Karbou surface emissivity 150.0 GHz", "", "", "", ""] -atm_stashvar[44010] = ["Karbou surf emiss (stdev) 150.0 GHz", "", "", "", ""] -atm_stashvar[44011] = ["DISTANCE OFF-SHORE", "", "", "", ""] -atm_stashvar[44012] = ["MW Surface Emissivity", "", "", "", ""] -atm_stashvar[44013] = ["MW Surface Emissivity (stdev)", "", "", "", ""] -atm_stashvar[50001] = ["Ox PROD: HO2+NO", "", "", "", ""] -atm_stashvar[50002] = ["Ox PROD: MeOO+NO", "", "", "", ""] -atm_stashvar[50003] = ["Ox PROD: NO+RO2", "", "", "", ""] -atm_stashvar[50004] = ["Ox PROD: OH+INORGANIC ACID", "", "", "", ""] -atm_stashvar[50005] = ["Ox PROD: OH+ORGANIC NITRATE", "", "", "", ""] -atm_stashvar[50006] = ["Ox PROD: ORGANIC NITRATE PHOTOLYSIS", "", "", "", ""] -atm_stashvar[50007] = ["Ox PROD: OH + PAN-TYPE REACTIONS", "", "", "", ""] -atm_stashvar[50011] = ["Ox LOSS: O(1D)+H2O", "", "", "", ""] -atm_stashvar[50012] = ["Ox LOSS: MINOR LOSS REACTIONS", "", "", "", ""] -atm_stashvar[50013] = ["Ox LOSS: HO2+O3", "", "", "", ""] -atm_stashvar[50014] = ["Ox LOSS: OH+O3", "", "", "", ""] -atm_stashvar[50015] = ["Ox LOSS: O3+ALKENE", "", "", "", ""] -atm_stashvar[50016] = ["Ox LOSS: N2O5+H2O", "", "", "", ""] -atm_stashvar[50017] = ["Ox LOSS: NO3 CHEMICAL LOSS", "", "", "", ""] -atm_stashvar[50021] = ["Ox BUDGET: O3 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50022] = ["Ox BUDGET: NOy DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50031] = ["Ox BUDGET: NOy WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50041] = ["RXN FLUX: OH+CH4 (CH4 LIFETIME) TROP", "", "", "", ""] -atm_stashvar[50042] = ["RXN FLUX: NO3+C5H8->ISON", "", "", "", ""] -atm_stashvar[50043] = ["RXN FLUX: NO+ISO2->ISON", "", "", "", ""] -atm_stashvar[50044] = ["RXN FLUX: H2O2 PRODUCTION", "", "", "", ""] -atm_stashvar[50045] = ["RXN FLUX: ROOH PRODUCTION", "", "", "", ""] -atm_stashvar[50046] = ["RXN FLUX: HONO2 PRODUCTION (HNO3)", "", "", "", ""] -atm_stashvar[50051] = ["STE: O3", "", "", "", ""] -atm_stashvar[50052] = ["TENDENCY: O3 (TROP ONLY)", "", "", "", ""] -atm_stashvar[50053] = ["TROPOSPHERIC O3", "", "", "", ""] -atm_stashvar[50054] = ["TENDENCY: O3 (WHOLE ATMOS)", "", "", "", ""] -atm_stashvar[50061] = ["AIR MASS DIAGNOSTIC (TROP ONLY)", "", "", "", ""] -atm_stashvar[50062] = ["TROPOSPHERIC MASK", "", "", "", ""] -atm_stashvar[50063] = ["AIR MASS DIAGNOSTIC (WHOLE ATMOS)", "", "", "", ""] -atm_stashvar[50071] = ["CO BUDGET: CO LOSS VIA OH+CO", "", "", "", ""] -atm_stashvar[50072] = ["CO BUDGET: CO PROD VIA HCHO+OH/NO3", "", "", "", ""] -atm_stashvar[50073] = ["CO BUDGET: CO PROD VIA MGLY+OH/NO3", "", "", "", ""] -atm_stashvar[50074] = ["CO BUDGET: CO MISC PROD&O3+MACR/ISOP", "", "", "", ""] -atm_stashvar[50075] = ["CO BUDGET: CO PROD VIA HCHO PHOT RAD", "", "", "", ""] -atm_stashvar[50076] = ["CO BUDGET: CO PROD VIA HCHO PHOT MOL", "", "", "", ""] -atm_stashvar[50077] = ["CO BUDGET: CO PROD VIA MGLY PHOTOL", "", "", "", ""] -atm_stashvar[50078] = ["CO BUDGET: CO PROD VIA MISC PHOTOL", "", "", "", ""] -atm_stashvar[50079] = ["CO BUDGET: CO DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50081] = ["LIGHTNING NOx EMISSIONS 3D", "", "", "", ""] -atm_stashvar[50082] = ["LIGHTNING DIAGNOSTIC: TOT FLASHES 2D", "", "", "", ""] -atm_stashvar[50083] = ["LIGHTNING DIAG: CLD TO GRND FLSH 2D", "", "", "", ""] -atm_stashvar[50084] = ["LIGHTNING DIAG: CLD TO CLD FLSH 2D", "", "", "", ""] -atm_stashvar[50085] = ["LIGHTNING DIAG: TOTAL N PRODUCED 2D", "", "", "", ""] -atm_stashvar[50091] = ["STRATOSPHERIC OH PRODUCTION", "", "", "", ""] -atm_stashvar[50092] = ["STRATOSPHERIC OH LOSS", "", "", "", ""] -atm_stashvar[50101] = ["STRAT O3 PROD: O2+PHOTON->O(3P)+O(3P", "", "", "", ""] -atm_stashvar[50102] = ["STRAT O3 PROD: O2+PHOTON->O(3P)+O(1D", "", "", "", ""] -atm_stashvar[50103] = ["STRAT O3 PROD: HO2 + NO", "", "", "", ""] -atm_stashvar[50104] = ["STRAT O3 PROD: MeOO + NO", "", "", "", ""] -atm_stashvar[50111] = ["STRAT O3 LOSS: Cl2O2 + PHOTON", "", "", "", ""] -atm_stashvar[50112] = ["STRAT O3 LOSS: BrO + ClO", "", "", "", ""] -atm_stashvar[50113] = ["STRAT O3 LOSS: HO2 + O3", "", "", "", ""] -atm_stashvar[50114] = ["STRAT O3 LOSS: ClO + HO2", "", "", "", ""] -atm_stashvar[50115] = ["STRAT O3 LOSS: BrO + HO2", "", "", "", ""] -atm_stashvar[50116] = ["STRAT O3 LOSS: O(3P) + ClO", "", "", "", ""] -atm_stashvar[50117] = ["STRAT O3 LOSS: O(3P) + NO2", "", "", "", ""] -atm_stashvar[50118] = ["STRAT O3 LOSS: O(3P) + HO2", "", "", "", ""] -atm_stashvar[50119] = ["STRAT O3 LOSS: O3 + H", "", "", "", ""] -atm_stashvar[50120] = ["STRAT O3 LOSS: O(3P) + O3", "", "", "", ""] -atm_stashvar[50121] = ["STRAT O3 LOSS: NO3 + PHOTON", "", "", "", ""] -atm_stashvar[50122] = ["STRAT O3 LOSS: O(1D) + H2O", "", "", "", ""] -atm_stashvar[50123] = ["STRAT O3 LOSS: HO2 + NO3", "", "", "", ""] -atm_stashvar[50124] = ["STRAT O3 LOSS: OH + NO3", "", "", "", ""] -atm_stashvar[50125] = ["STRAT O3 LOSS: NO3 + HCHO", "", "", "", ""] -atm_stashvar[50131] = ["STRAT MISC: O3 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50132] = ["STRAT MISC: NOy DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50133] = ["STRAT MISC: NOy WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50140] = ["DMS + OH => SO2 + MeOO + HCHO", "", "", "", ""] -atm_stashvar[50141] = ["DMS + OH => 0.6SO2 + 0.4DMSO + MeOO", "", "", "", ""] -atm_stashvar[50142] = ["DMS + NO3 => SO2 + HONO2 + MeOO", "", "", "", ""] -atm_stashvar[50143] = ["DMSO + OH => 0.6SO2 + 0.4MSA", "", "", "", ""] -atm_stashvar[50144] = ["CS2 + OH => SO2 + COS", "", "", "", ""] -atm_stashvar[50145] = ["H2S + OH => SO2", "", "", "", ""] -atm_stashvar[50146] = ["COS + OH => SO2", "", "", "", ""] -atm_stashvar[50147] = ["Monoterp + OH => Sec_org", "", "", "", ""] -atm_stashvar[50148] = ["Monoterp + O3 => Sec_org", "", "", "", ""] -atm_stashvar[50149] = ["Monoterp + NO3 => Sec_org", "", "", "", ""] -atm_stashvar[50150] = ["SO2 + OH => HO2 + H2SO4", "", "", "", ""] -atm_stashvar[50151] = ["SO2 + H2O2 => NULL0", "", "", "", ""] -atm_stashvar[50152] = ["SO2 + O3 => NULL1", "", "", "", ""] -atm_stashvar[50153] = ["SO2 + O3 => NULL2", "", "", "", ""] -atm_stashvar[50154] = ["SO2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50155] = ["SO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50156] = ["NO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50157] = ["CH4 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50158] = ["CO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50159] = ["HCHO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50160] = ["C2H6 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50161] = ["C3H8 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50162] = ["Me2CO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50163] = ["MeCHO surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50164] = ["C5H8 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50165] = ["C4H10 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50166] = ["C2H4 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50167] = ["C3H6 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50168] = ["TOLUENE surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50169] = ["oXYLENE surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50170] = ["CH3OH surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50171] = ["H2 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50172] = ["NO emiss from aircraft (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50173] = ["NO2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50174] = ["HNO3 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50175] = ["H2O2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50176] = ["CH4 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50177] = ["MeOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50178] = ["EtOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50179] = ["PAN DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50180] = ["i-PrOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50181] = ["O3S DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50182] = ["ISOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50183] = ["MVKOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50184] = ["ORGNIT DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50185] = ["H2 DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50186] = ["s-BuOOH DRY DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50187] = ["NO3 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50188] = ["N2O5 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50189] = ["HO2NO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50190] = ["HONO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50191] = ["H2O2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50192] = ["HCHO WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50193] = ["HO2 WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50194] = ["MeOO WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50195] = ["MeOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50196] = ["EtOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50197] = ["i-PrOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50198] = ["ISOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50199] = ["ISON WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50200] = ["MGLY WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50201] = ["MVKOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50202] = ["ORGNIT WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50203] = ["CH3OH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50204] = ["s-BuOOH WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50205] = ["GLY WET DEPOSITION (3D)", "", "", "", ""] -atm_stashvar[50206] = ["O3 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50207] = ["OH as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50208] = ["NO3 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50209] = ["HO2 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50210] = ["H2O2 as Offline oxidant (MMR)", "", "", "", ""] -atm_stashvar[50211] = ["Monoterp surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50212] = ["NVOC surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50213] = ["NH3 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50214] = ["DMS surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50215] = ["SO2 surf emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50216] = ["SO2 high lev emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50217] = ["SO2 natural emissions (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50218] = ["Nitric Acid Trihydrate (kg/kg)", "", "", "", ""] -atm_stashvar[50219] = ["Ozone column in Dobson Units", "", "", "", ""] -atm_stashvar[50220] = ["Tropospheric CH4 burden in moles", "", "", "", ""] -atm_stashvar[50221] = ["Tropospheric O3 burden in moles", "", "", "", ""] -atm_stashvar[50222] = ["Tropospheric OH burden in moles", "", "", "", ""] -atm_stashvar[50223] = ["Stratospheric CH4 burden in moles", "", "", "", ""] -atm_stashvar[50224] = ["Pressure of PV-THETA tropopause (Pa)", "", "", "", ""] -atm_stashvar[50226] = ["Stratospheric CH4 loss rate (mol/s)", "", "", "", ""] -atm_stashvar[50227] = ["Total reactive nitrogen, NOy (VMR)", "", "", "", ""] -atm_stashvar[50228] = ["Photolysis rate JO1D (s-1)", "", "", "", ""] -atm_stashvar[50229] = ["Photolysis rate JNO2 (s-1)", "", "", "", ""] -atm_stashvar[50230] = ["Non-methane VOC (ug (C) m-3)", "", "", "", ""] -atm_stashvar[50231] = ["Atmospheric Burden of CH4 in moles", "", "", "", ""] -atm_stashvar[50232] = ["Atmospheric Burden of CO in moles", "", "", "", ""] -atm_stashvar[50233] = ["Atmospheric Burden of N2O in moles", "", "", "", ""] -atm_stashvar[50234] = ["Atmospheric Burden of CFC12 in moles", "", "", "", ""] -atm_stashvar[50235] = ["Atmospheric Burden of CFC11 in moles", "", "", "", ""] -atm_stashvar[50236] = ["Atmospheric Burden of CH3Br in moles", "", "", "", ""] -atm_stashvar[50237] = ["Atmospheric Burden of H2 in moles", "", "", "", ""] -atm_stashvar[50238] = ["H2O production from chemistry", "", "", "", ""] -atm_stashvar[50239] = ["H2O loss from chemistry", "", "", "", ""] -atm_stashvar[50240] = ["Specific humidity change from UKCA", "", "", "", ""] -atm_stashvar[50245] = ["Photolysis rate JO2 (s-1)", "", "", "", ""] -atm_stashvar[50246] = ["Photolysis rate JO3P (s-1)", "", "", "", ""] -atm_stashvar[50247] = ["RXN FLUX: CH4 OXIDATION", "", "", "", ""] -atm_stashvar[50248] = ["RXN FLUX: RC(O)O2+NO2 (PAN PROD)", "", "", "", ""] -atm_stashvar[50249] = ["RXN FLUX: RO2+HO2", "", "", "", ""] -atm_stashvar[50250] = ["RXN FLUX: RO2+NO3", "", "", "", ""] -atm_stashvar[50251] = ["RXN FLUX: RO2+RO2", "", "", "", ""] -atm_stashvar[50254] = ["Gross Chemical Prod: O(1D)", "", "", "", ""] -atm_stashvar[50255] = ["UKCA Theta Grid Cell Volume (m^3)", "", "", "", ""] -atm_stashvar[50256] = ["Aerosol surface area in PSC chem", "", "", "", ""] -atm_stashvar[50300] = ["C5H8 ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50301] = ["Monoterp ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50302] = ["MeOH ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[50303] = ["Me2CO ems-flux chk (kg m-2 s-1)", "", "", "", ""] -atm_stashvar[51001] = ["O3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51002] = ["NO MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51003] = ["NO3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51004] = ["NO2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51005] = ["N2O5 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51006] = ["HO2NO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51007] = ["HONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51008] = ["H2O2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51009] = ["CH4 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51010] = ["CO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51011] = ["HCHO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51012] = ["MeOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51013] = ["HONO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51014] = ["C2H6 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51015] = ["EtOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51016] = ["MeCHO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51017] = ["PAN MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51018] = ["C3H8 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51019] = ["n-PrOOH MASS MIX RATIO ON PRESS LEV", "", "", "", ""] -atm_stashvar[51020] = ["i-PrOOH MASS MIX RATIO ON PRESS LEV", "", "", "", ""] -atm_stashvar[51021] = ["EtCHO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51022] = ["Me2CO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51023] = ["MeCOCH2OOH MASS MIX RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51024] = ["PPAN MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51025] = ["MeONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51026] = ["O3S MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51027] = ["C5H8 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51028] = ["ISOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51029] = ["ISON MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51030] = ["MACR MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51031] = ["MACROOH MASS MIX RATIO ON PRESS LEV", "", "", "", ""] -atm_stashvar[51032] = ["MPAN MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51033] = ["HACET MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51034] = ["MGLY MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51035] = ["NALD MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51036] = ["HCOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51037] = ["MeCO3H MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51038] = ["MeCO2H MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51039] = ["MVK MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51040] = ["MVKOOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51041] = ["Cl MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51042] = ["ClO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51043] = ["Cl2O2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51044] = ["OClO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51045] = ["Br MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51047] = ["BrCl MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51048] = ["BrONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51049] = ["N2O MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51051] = ["HOCl MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51052] = ["HBr MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51053] = ["HOBr MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51054] = ["ClONO2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51055] = ["CFCl3 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51056] = ["CF2Cl2 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51057] = ["MeBr MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51058] = ["N MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51059] = ["O3P MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51060] = ["ORGNIT MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51069] = ["CH3OH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51070] = ["H2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51071] = ["DMS MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51072] = ["SO2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51073] = ["H2SO4 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51074] = ["MSA MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51075] = ["DMSO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51076] = ["NH3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51077] = ["CS2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51078] = ["COS MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51079] = ["H2S MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51080] = ["H MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51081] = ["OH MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51082] = ["HO2 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51083] = ["MeOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51084] = ["EtOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51085] = ["MeCO3 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51086] = ["n-PrOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51087] = ["i-PrOO MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51088] = ["EtCO3 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51089] = ["MeCOCH2OO MASS MIX RATIO ON PR LEVS", "", "", "", ""] -atm_stashvar[51090] = ["MeOH MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51091] = ["MONOTERPENE MMR ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[51092] = ["SEC_ORG MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51093] = ["C3H6 MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51094] = ["SO3 MASS MIXING RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51095] = ["C4H9OOH MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51096] = ["MEK MASS MIX RATIO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51097] = ["TOLUENE MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51098] = ["LUMPED N (as NO2) MMR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51099] = ["LUMPED Br (as BrO) MMR ON P LEVELS", "", "", "", ""] -atm_stashvar[51100] = ["LUMPED Cl (as HCl) MMR ON P LEVELS", "", "", "", ""] -atm_stashvar[51101] = ["NUCL MODE (SOL) NUMBER ON PRESS LEV", "", "", "", ""] -atm_stashvar[51102] = ["NUCL MODE (SOL) H2SO4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51103] = ["AITK MODE (SOL) NUMBER ON PRESS LEV", "", "", "", ""] -atm_stashvar[51104] = ["AITK MODE (SOL) H2SO4 ON PRESS LEV", "", "", "", ""] -atm_stashvar[51105] = ["AITK MODE (SOL) BC ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51106] = ["AITK MODE (SOL) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51107] = ["ACCUM MODE (SOL) NBR ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51108] = ["ACCUM MODE (SOL) H2SO4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51109] = ["ACCUM MODE (SOL) BC ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51110] = ["ACCUM MODE (SOL) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51111] = ["ACCUM MODE (SOL) SEASALT ON PR LEVS", "", "", "", ""] -atm_stashvar[51112] = ["ACCUM MODE (SOL) DUST ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51113] = ["COARSE MODE (SOL) NBR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51114] = ["COARSE MODE (SOL) H2SO4 ON PRS LEVS", "", "", "", ""] -atm_stashvar[51115] = ["COARSE MODE (SOL) BC ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51116] = ["COARSE MODE (SOL) OM ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51117] = ["COARSE MODE (SOL) SEASALT ON PR LEV", "", "", "", ""] -atm_stashvar[51118] = ["COARSE MODE (SOL) DUST ON PRES LEVS", "", "", "", ""] -atm_stashvar[51119] = ["AITK MODE (INS) NBR ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51120] = ["AITK MODE (INS) BC ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51121] = ["AITK MODE (INS) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51122] = ["ACCUM MODE (INS) NBR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51123] = ["ACCUM MODE (INS) DUST ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51124] = ["COARSE MODE (INS) NBR ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51125] = ["COARSE MODE (INS) DUST ON PRESS LEV", "", "", "", ""] -atm_stashvar[51126] = ["NUCL MODE (SOL) OM ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51127] = ["AITK MODE (SOL) SEASALT ON PRS LEVS", "", "", "", ""] -atm_stashvar[51128] = ["NUCL MODE (SOL) OM2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51129] = ["AITK MODE (SOL) OM2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51130] = ["ACCUM MODE (SOL) OM2 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51131] = ["COARSE MODE (SOL) OM2 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51132] = ["NUCL MODE (SOL) NH4 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51133] = ["AITK MODE (SOL) NH4 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51134] = ["ACCUM MODE (SOL) NH4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51135] = ["COARSE MODE (SOL) NH4 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51136] = ["NUCL MODE (SOL) NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51137] = ["AITK MODE (SOL) NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51138] = ["ACCUM MODE (SOL) NO3 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51139] = ["COARSE MODE (SOL) NO3 ON PRESS LEVS", "", "", "", ""] -atm_stashvar[51149] = ["PASSIVE O3 MMR ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[51150] = ["AGE OF AIR (SEC) ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[51151] = ["UKCA NON-TRANS SPEC 151 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51152] = ["UKCA NON-TRANS SPEC 152 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51153] = ["UKCA NON-TRANS SPEC 153 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51154] = ["UKCA NON-TRANS SPEC 154 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51155] = ["UKCA NON-TRANS SPEC 155 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51156] = ["UKCA NON-TRANS SPEC 156 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51157] = ["UKCA NON-TRANS SPEC 157 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51158] = ["UKCA NON-TRANS SPEC 158 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51159] = ["UKCA NON-TRANS SPEC 159 IN PLEV RETD", "", "", "", ""] -atm_stashvar[51160] = ["UKCA NON-TRANS SPEC 160 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51161] = ["UKCA NON-TRANS SPEC 161 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51162] = ["UKCA NON-TRANS SPEC 162 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51163] = ["UKCA NON-TRANS SPEC 163 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51164] = ["UKCA NON-TRANS SPEC 164 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51165] = ["UKCA NON-TRANS SPEC 165 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51166] = ["UKCA NON-TRANS SPEC 166 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51167] = ["UKCA NON-TRANS SPEC 167 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51168] = ["UKCA NON-TRANS SPEC 168 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51169] = ["UKCA NON-TRANS SPEC 169 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51170] = ["UKCA NON-TRANS SPEC 170 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51171] = ["UKCA NON-TRANS SPEC 171 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51172] = ["UKCA NON-TRANS SPEC 172 ON PLEV RETD", "", "", "", ""] -atm_stashvar[51921] = ["DRY PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[51922] = ["DRY PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[51923] = ["DRY PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[51924] = ["DRY PARTICLE DIAMETER AITKEN-INS", "", "", "", ""] -atm_stashvar[51925] = ["DRY PARTICLE DIAMETER ACCUMULATN-INS", "", "", "", ""] -atm_stashvar[51926] = ["DRY PARTICLE DIAMETER COARSE-INSOL", "", "", "", ""] -atm_stashvar[51927] = ["WET PARTICLE DIAMETER AITKEN-SOL", "", "", "", ""] -atm_stashvar[51928] = ["WET PARTICLE DIAMETER ACCUMULATN-SOL", "", "", "", ""] -atm_stashvar[51929] = ["WET PARTICLE DIAMETER COARSE-SOL", "", "", "", ""] -atm_stashvar[51930] = ["PTCL MASS DENSITY AITKEN-SOL (WET)", "", "", "", ""] -atm_stashvar[51931] = ["PTCL MASS DENSITY ACCUM.-SOL (WET)", "", "", "", ""] -atm_stashvar[51932] = ["PTCL MASS DENSITY COARSE-SOL (WET)", "", "", "", ""] -atm_stashvar[51933] = ["PTCL MASS DENSITY AITKEN-INS", "", "", "", ""] -atm_stashvar[51934] = ["PTCL MASS DENSITY ACCUM.-INS", "", "", "", ""] -atm_stashvar[51935] = ["PTCL MASS DENSITY COARSE-INS", "", "", "", ""] -atm_stashvar[51936] = ["H2SO4 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51937] = ["BC PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51938] = ["OM1 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51939] = ["NO3 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51940] = ["OM2 PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51941] = ["H2O PARTIAL VOLUME CONC (AIT-SOL)", "", "", "", ""] -atm_stashvar[51942] = ["H2SO4 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51943] = ["BC PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51944] = ["OM1 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51945] = ["SS PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51946] = ["NO3 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51947] = ["DU PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51948] = ["OM2 PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51949] = ["CL PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51950] = ["NA PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51951] = ["H2O PARTIAL VOLUME CONC (ACC-SOL)", "", "", "", ""] -atm_stashvar[51952] = ["H2SO4 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51953] = ["BC PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51954] = ["OM1 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51955] = ["SSALT PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51956] = ["NO3 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51957] = ["DU PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51958] = ["OM2 PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51959] = ["CL PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51960] = ["NA PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51961] = ["H2O PARTIAL VOLUME CONC (COR-SOL)", "", "", "", ""] -atm_stashvar[51962] = ["BC PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[51963] = ["OM1 PARTIAL VOLUME CONC (AIT-INS)", "", "", "", ""] -atm_stashvar[51964] = ["DU PARTIAL VOLUME CONC (ACC-INS)", "", "", "", ""] -atm_stashvar[51965] = ["DU PARTIAL VOLUME CONC (COR-INS)", "", "", "", ""] -atm_stashvar[51966] = ["Aero surf area (cm2/cm3) ON P LEVS", "", "", "", ""] -atm_stashvar[51967] = ["CDNC. ^-1/3 (m-1) ON P LEVELS", "", "", "", ""] -atm_stashvar[51968] = ["CDNC (m-3) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[51969] = ["Stratospheric HO2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51970] = ["Stratospheric OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51971] = ["Stratospheric O(1D) MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51972] = ["Stratospheric O(3P) MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51973] = ["HO2 loss on aerosol (s-1) ON P LEVS", "", "", "", ""] -atm_stashvar[51974] = ["N2O5 loss on aerosol (s-1) ON P LEVS", "", "", "", ""] -atm_stashvar[51975] = ["HOC6H5CH3O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51976] = ["HOC5H8O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51977] = ["CH3COCH(O2)CH2OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51978] = ["CHOCH(OH)CO2CH3CHO MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51979] = ["C6H5CH2O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51980] = ["CH3CHO2CH2OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51981] = ["CH2O2CH2OH MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51982] = ["CH3COCH(O2)CH3 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51983] = ["CH3COCH2O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51984] = ["CH3COC2O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51985] = ["C2H5COO2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51986] = ["i-C2H7O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51987] = ["s-C4H9O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51988] = ["n-C2H7O2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51989] = ["CH3COO2 MMR ON P LEVS", "", "", "", ""] -atm_stashvar[51990] = ["C2H5O2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51991] = ["CH3O2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51992] = ["HCl MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51993] = ["HO2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51994] = ["BrO MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51995] = ["OH MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51996] = ["NO2 MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51997] = ["O(1D) MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51998] = ["O(3P) MASS MIXING RATIO ON P LEVS", "", "", "", ""] -atm_stashvar[51999] = ["HEAVYSIDE FUNC FOR P LEVEL DIAGS", "", "", "", ""] -atm_stashvar[52001] = ["Ox PRD:HO2+NO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52002] = ["Ox PRD:MeOO+NO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52003] = ["Ox PRD:NO+RO2 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52004] = ["Ox PRD:OH+INORG ACID ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52005] = ["Ox PRD:OH+ORG NITR ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52006] = ["Ox PRD:ORG NITR PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52007] = ["Ox PRD:OH+PAN REACN ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52011] = ["Ox LOSS:O(1D)+H2O ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52012] = ["Ox LOSS:MINOR REACN ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52013] = ["Ox LOSS:HO2+O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52014] = ["Ox LOSS:OH+O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52015] = ["Ox LOSS:O3+ALK ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52016] = ["Ox LOSS:N2O5+H2O ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52017] = ["Ox LOSS:NO3 CHEM LOSS ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52021] = ["Ox BDGT:O3 DRY DEP(3D) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52022] = ["Ox BDGT:NOy DRY DEP(3D) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52031] = ["Ox BDGT:NOy WET DEP(3D) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52041] = ["FLUX:OH+CH4 (CH4 LIFETIME) ON PR LEV", "", "", "", ""] -atm_stashvar[52042] = ["FLUX:NO3+C5H8->ISON ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52043] = ["FLUX:NO+ISO2->ISON ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52044] = ["FLUX:H2O2 PROD ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52045] = ["FLUX:ROOH PROD ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52046] = ["FLUX:HONO2 PROD (HNO3) ON PRES LEVS", "", "", "", ""] -atm_stashvar[52051] = ["STE: O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52052] = ["TEND:O3 (TROP ONLY) ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52053] = ["TROPOSPHERIC O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52054] = ["TEND:O3 (WHOLE ATMOS) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52061] = ["AIR MASS DIAG(TROP) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52062] = ["TROPOSPHERIC MASK ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52063] = ["AIR MASS DIAG(WHOLE ATM) ON PRS LEV", "", "", "", ""] -atm_stashvar[52071] = ["CO BDG:LOSS OH+CO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52072] = ["CO BDG:PROD HCHO+OH/NO3 ON PRS LEVS", "", "", "", ""] -atm_stashvar[52073] = ["CO BDG:PROD MGLY+OH/NO3 ON PRS LEVS", "", "", "", ""] -atm_stashvar[52074] = ["CO BDG: MISC PROD ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52075] = ["CO BDG:PROD HCHO PHOT RAD ON PR LEVS", "", "", "", ""] -atm_stashvar[52076] = ["CO BDG:PROD HCHO PHOT MOL ON PR LEVS", "", "", "", ""] -atm_stashvar[52077] = ["CO BDG:PROD MGLY PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52078] = ["CO BDG:PROD MISC PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52079] = ["CO BDG:CO DRY DEP(3D) ON PRESS LEVEL", "", "", "", ""] -atm_stashvar[52081] = ["LIT NOx EMISS 3D ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52091] = ["STRAT OH PROD ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52092] = ["STRAT OH LOSS ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52101] = ["STRO3 PRD:O2+PHOT O(3P) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52102] = ["STRO3 PRD:O2+PHOT O(1D) ON PRESS LEV", "", "", "", ""] -atm_stashvar[52103] = ["STRO3 PRD: HO2+NO ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52104] = ["STRO3 PRD: MeOO+NO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52111] = ["STRO3 LOSS:Cl2O2+PHOT ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52112] = ["STRO3 LOSS:BrO+ClO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52113] = ["STRO3 LOSS:HO2+O3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52114] = ["STRO3 LOSS:ClO+HO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52115] = ["STRO3 LOSS:BrO+HO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52116] = ["STRO3 LOSS:O3P+ClO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52117] = ["STRO3 LOSS:O3P+NO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52118] = ["STRO3 LOSS:O3P+HO2 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52119] = ["STRO3 LOSS:O3+H ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52120] = ["STRO3 LOSS:O3P+O3 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52121] = ["STRO3 LOSS:NO3+PHOT ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52122] = ["STRO3 LOSS:O1D+H2O ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52123] = ["STRO3 LOSS: HO2+NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52124] = ["STRO3 LOSS: OH+NO3 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52125] = ["STRO3 LOSS: NO3+HCHO ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52131] = ["STRAT MISC:O3 DRY DP(3D) ON PRS LEV", "", "", "", ""] -atm_stashvar[52132] = ["STRAT MISC:NOy DRY DP(3D) ON PRS LEV", "", "", "", ""] -atm_stashvar[52133] = ["STRAT MISC:NOy WET DP(3D) ON PRS LEV", "", "", "", ""] -atm_stashvar[52140] = ["DMS+OH=>SO2+MeOO+HCHO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52141] = ["DMS+OH=>SO2+DMSO+MeOO ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52142] = ["DMS+NO3=>SO2+HONO2+MeOO ON PRESS LEV", "", "", "", ""] -atm_stashvar[52143] = ["DMSO+OH=>SO2+MSA ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52144] = ["CS2+OH=>SO2+COS ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52145] = ["H2S + OH => SO2 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52146] = ["COS + OH => SO2 ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52147] = ["Monoterp+OH=>Sec_org ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52148] = ["Monoterp+O3=>Sec_org ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52149] = ["Monoterp+NO3=>Sec_org ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52150] = ["SO2+OH=>HO2+H2SO4 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52151] = ["SO2 + H2O2 => NULL0 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52152] = ["SO2 + O3 => NULL1 ON PRESS LEVELS", "", "", "", ""] -atm_stashvar[52153] = ["SO2 + O3 => NULL2 ON PRESSURE LEVEL", "", "", "", ""] -atm_stashvar[52154] = ["SO2 DRY DEP (3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52155] = ["SO2 WET DEP (3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52172] = ["NO aircrft ems(kg m-2 s-1) ON PR LEV", "", "", "", ""] -atm_stashvar[52173] = ["NO2 DRY DEP (3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52174] = ["HNO3 DRY DEP (3D) ON PRESSURE LEVEL", "", "", "", ""] -atm_stashvar[52175] = ["H2O2 DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52176] = ["CH4 DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52177] = ["MeOOH DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52178] = ["EtOOH DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52179] = ["PAN DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52180] = ["i-PrOOH DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52181] = ["O3S DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52182] = ["ISOOH DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52183] = ["MVKOOH DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52184] = ["ORGNIT DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52185] = ["H2 DRY DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52186] = ["s-BuOOH DRY DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52187] = ["NO3 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52188] = ["N2O5 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52189] = ["HO2NO2 WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52190] = ["HONO2 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52191] = ["H2O2 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52192] = ["HCHO WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52193] = ["HO2 WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52194] = ["MeOO WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52195] = ["MeOOH WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52196] = ["EtOOH WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52197] = ["i-PrOOH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52198] = ["ISOOH WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52199] = ["ISON WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52200] = ["MGLY WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52201] = ["MVKOOH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52202] = ["ORGNIT WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52203] = ["CH3OH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52204] = ["s-BuOOH WET DEP(3D) ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52205] = ["GLY WET DEP(3D) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52206] = ["O3 Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52207] = ["OH Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52208] = ["NO3 Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52209] = ["HO2 Offline oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52210] = ["H2O2 Offl oxid (MMR) ON PRESS LEVS", "", "", "", ""] -atm_stashvar[52218] = ["NAT mass mixing ratio on press levs", "", "", "", ""] -atm_stashvar[52219] = ["O3 Column in Dobson Units on p levs", "", "", "", ""] -atm_stashvar[52227] = ["NOy (VMR) ON PRESSURE LEVELS", "", "", "", ""] -atm_stashvar[52228] = ["Photolysis rate JO1D on press levs", "", "", "", ""] -atm_stashvar[52229] = ["Photolysis rate JNO2 on press levs", "", "", "", ""] -atm_stashvar[52230] = ["Non-methane VOC (ug C m-3) on p levs", "", "", "", ""] -atm_stashvar[52245] = ["Photolysis rate JO2 on press levs", "", "", "", ""] -atm_stashvar[52246] = ["Photolysis rate JO3P on press levs", "", "", "", ""] -atm_stashvar[52247] = ["RXN FLUX: CH4 OXIDATION ON PLEVS", "", "", "", ""] -atm_stashvar[52248] = ["RXN: RC(O)O2+NO2 (PAN PROD) ON PLEV", "", "", "", ""] -atm_stashvar[52249] = ["RXN FLUX: RO2+HO2 ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52250] = ["RXN FLUX: RO2+NO3 ON PRESSURE LEVS", "", "", "", ""] -atm_stashvar[52251] = ["RXN FLUX: RO2+RO2 ON PRESSSURE LEVS", "", "", "", ""] -atm_stashvar[52254] = ["Gross Chem Prod : O(1D) On PLEVS", "", "", "", ""] -atm_stashvar[52256] = ["Aerosol surf area in PSC chem plevs", "", "", "", ""] -atm_stashvar[53181] = ["Temperature Inc: Idealised (K/step)", "", "", "", ""] -atm_stashvar[53182] = ["water vapour Inc: Ideal (kg/kg/step)", "", "", "", ""] -atm_stashvar[53185] = ["U wind Inc: Idealised (m/s/step)", "", "", "", ""] -atm_stashvar[53186] = ["V wind Inc: Idealised (m/s/step)", "", "", "", ""] -atm_stashvar[53190] = ["Pot. temp. Inc: Idealised (K/step)", "", "", "", ""] -atm_stashvar[53201] = ["Column vapour added: Ideal (kg/m2/s)", "", "", "", ""] -atm_stashvar[53202] = ["Potential temperature ref. prof (K)", "", "", "", ""] -atm_stashvar[53203] = ["Water vapour reference profile kg/kg", "", "", "", ""] -atm_stashvar[53204] = ["U wind reference profile (m/s)", "", "", "", ""] -atm_stashvar[53205] = ["V wind reference profile (m/s)", "", "", "", ""] -atm_stashvar[53206] = ["Col energy change due to dT (J/m2)", "", "", "", ""] -atm_stashvar[53207] = ["Col energy change due to dU (J/m2)", "", "", "", ""] -atm_stashvar[53208] = ["Col energy change due to dV (J/m2)", "", "", "", ""] -atm_stashvar[54101] = ["NUCLEATION MODE (SOL) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54102] = ["NUCLEATION MODE (SOL) H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54103] = ["AITKEN MODE (SOL) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54104] = ["AITKEN MODE (SOL) H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54105] = ["AITKEN MODE (SOL) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54106] = ["AITKEN MODE (SOL) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54107] = ["ACCUMULATION MODE (SOL) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54108] = ["ACCUMULATION MODE(SOL)H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54109] = ["ACCUMULATION MODE (SOL) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54110] = ["ACCUMULATION MODE (SOL) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54111] = ["ACC MODE (SOL) SEA SALT MMR CLIM", "", "", "", ""] -atm_stashvar[54112] = ["ACCUMULATION MODE(SOL) DUST MMR CLIM", "", "", "", ""] -atm_stashvar[54113] = ["COARSE MODE (SOLUBLE) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54114] = ["COARSE MODE (SOLUBLE) H2SO4 MMR CLIM", "", "", "", ""] -atm_stashvar[54115] = ["COARSE MODE (SOLUBLE) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54116] = ["COARSE MODE (SOLUBLE) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54117] = ["COARSE MODE (SOL) SEA SALT MMR CLIM", "", "", "", ""] -atm_stashvar[54118] = ["COARSE MODE (SOLUBLE) DUST MMR CLIM", "", "", "", ""] -atm_stashvar[54119] = ["AITKEN MODE (INSOLUBLE) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54120] = ["AITKEN MODE (INSOLUBLE) BC MMR CLIM", "", "", "", ""] -atm_stashvar[54121] = ["AITKEN MODE (INSOLUBLE) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54122] = ["ACCUMULATION MODE (INSOL)NUMBER CLIM", "", "", "", ""] -atm_stashvar[54123] = ["ACCUMULATION MODE (INSOL) DUST CLIM", "", "", "", ""] -atm_stashvar[54124] = ["COARSE MODE (INSOLUBLE) NUMBER CLIM", "", "", "", ""] -atm_stashvar[54125] = ["COARSE MODE (INSOL) DUST MMR CLIM", "", "", "", ""] -atm_stashvar[54126] = ["NUCLEATION MODE (SOL) OM MMR CLIM", "", "", "", ""] -atm_stashvar[54127] = ["AITKEN MODE (SOL) SEA SALT MMR CLIM", "", "", "", ""] -atm_stashvar[54128] = ["NUCLEATION MODE (SOL) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54129] = ["AITKEN MODE (SOL) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54130] = ["ACCUMULATION MODE (SOL) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54131] = ["COARSE MODE (SOLUBLE) OM2 MMR CLIM", "", "", "", ""] -atm_stashvar[54132] = ["NUCLEATION MODE (SOL) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54133] = ["AITKEN MODE (SOLUBLE) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54134] = ["ACCUMULATION MODE (SOL) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54135] = ["COARSE MODE (SOLUBLE) NH4 MMR CLIM", "", "", "", ""] -atm_stashvar[54136] = ["NUCLEATION MODE (SOL) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54137] = ["AITKEN MODE (SOLUBLE) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54138] = ["ACCUMULATION MODE (SOL) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54139] = ["COARSE MODE (SOLUBLE) NO3 MMR CLIM", "", "", "", ""] -atm_stashvar[54476] = ["GC CLOUD LIQUID FRACTION", "", "", "", ""] -atm_stashvar[54477] = ["GC TOTAL CDNC * CLOUD LIQ FRACTION", "", "", "", ""] -atm_stashvar[54921] = ["DRY PARTICLE DIAMETER AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54922] = ["DRY PARTICLE DIAMETER ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54923] = ["DRY PARTICLE DIAMETER COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54924] = ["DRY PARTICLE DIAMETER AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54925] = ["DRY PARTICLE DIAMETER ACC-INS CLIM", "", "", "", ""] -atm_stashvar[54926] = ["DRY PARTICLE DIAMETER COR-INS CLIM", "", "", "", ""] -atm_stashvar[54927] = ["WET PARTICLE DIAMETER AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54928] = ["WET PARTICLE DIAMETER ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54929] = ["WET PARTICLE DIAMETER COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54930] = ["PTCL MASS DENSITY AIT-SOL CLIM (WET)", "", "", "", ""] -atm_stashvar[54931] = ["PTCL MASS DENSITY ACC-SOL CLIM (WET)", "", "", "", ""] -atm_stashvar[54932] = ["PTCL MASS DENSITY COR-SOL CLIM (WET)", "", "", "", ""] -atm_stashvar[54933] = ["PTCL MASS DENSITY AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54934] = ["PTCL MASS DENSITY ACC-INS CLIM", "", "", "", ""] -atm_stashvar[54935] = ["PTCL MASS DENSITY COR-INS CLIM", "", "", "", ""] -atm_stashvar[54936] = ["H2SO4 PARTIAL VOL CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54937] = ["BC PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54938] = ["OM1 PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54939] = ["NO3 PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54940] = ["OM2 PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54941] = ["H2O PARTIAL VOLUME CONC AIT-SOL CLIM", "", "", "", ""] -atm_stashvar[54942] = ["H2SO4 PARTIAL VOL CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54943] = ["BC PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54944] = ["OM1 PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54945] = ["SS PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54946] = ["NO3 PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54947] = ["DU PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54948] = ["OM2 PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54949] = ["CL PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54950] = ["NA PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54951] = ["H2O PARTIAL VOLUME CONC ACC-SOL CLIM", "", "", "", ""] -atm_stashvar[54952] = ["H2SO4 PARTIAL VOL CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54953] = ["BC PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54954] = ["OM1 PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54955] = ["SS PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54956] = ["NO3 PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54957] = ["DU PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54958] = ["OM2 PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54959] = ["CL PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54960] = ["NA PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54961] = ["H2O PARTIAL VOLUME CONC COR-SOL CLIM", "", "", "", ""] -atm_stashvar[54962] = ["BC PARTIAL VOLUME CONC AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54963] = ["OM1 PARTIAL VOLUME CONC AIT-INS CLIM", "", "", "", ""] -atm_stashvar[54964] = ["DU PARTIAL VOLUME CONC ACC-INS CLIM", "", "", "", ""] -atm_stashvar[54965] = ["DU PARTIAL VOLUME CONC COR-INS CLIM", "", "", "", ""] -atm_stashvar[54967] = ["CLOUD DROP. No. CONC. ^-1/3 m-1 CLIM", "", "", "", ""] -atm_stashvar[54968] = ["CLOUD DROP. No. CONC. (m-3) CLIM", "", "", "", ""] - -class StashVar: - - def __init__(self, code, model=1): - # Allow this to be 0 to support some ancillary files - if model in [0, 1]: - # Should this be trapped so that we can return None? - try: - var = atm_stashvar[code] - except KeyError: - var = ["UNKNOWN VARIABLE","", "", "", ""] - else: - raise Exception("Model type %d not supported at the moment" % model) - self.long_name = var[0] - # Should there be a dictionary somewhere so this returns a unique - # set of names? unique as an optional argument? - if var[1]: - self.name = var[1] - else: - self.name = "field%d" % code - self.units = var[2] - self.standard_name = var[3] - self.code = code - if var[4]: - self.uniquename = var[4] - else: - self.uniquename = self.name diff --git a/src/stashvar_validate_stdnames.py b/src/stashvar_validate_stdnames.py deleted file mode 100644 index c1315144..00000000 --- a/src/stashvar_validate_stdnames.py +++ /dev/null @@ -1,21 +0,0 @@ -# Check that the standard names set in stashvar are valid according to iris -# and highlight any that aren't set - -# import stashvar -import stashvar_cmip6 as stashvar -from iris._cube_coord_common import get_valid_standard_name -from iris.fileformats.um_cf_map import STASH_TO_CF - -for v, properties in stashvar.atm_stashvar.items(): - units = properties[2] - std_name = properties[3] - if std_name and not get_valid_standard_name(std_name): - print("Invalid", v, std_name) - item = v % 1000 - section = v // 1000 - key = 'm01s%2.2di%3.3d' % (section, item) - if key in STASH_TO_CF: - if STASH_TO_CF[key].standard_name and std_name and STASH_TO_CF[key].standard_name != std_name: - print("Name mismatch", v, std_name, STASH_TO_CF[key].standard_name) - if STASH_TO_CF[key].units and units and STASH_TO_CF[key].units != units: - print("Units mismatch", v, units, STASH_TO_CF[key].units) \ No newline at end of file diff --git a/src/subset_ancillary.py b/src/subset_ancillary.py deleted file mode 100644 index d6556664..00000000 --- a/src/subset_ancillary.py +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python -# Subset an ancillary file - -# New region is specified by the indices of the lower left corner (x0,y0) -# and the extents nx, ny. -# These are specified as arguments -x x0,nx -y y0,ny -# Note that (x0,y0) are 0 based indices - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -verbose = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:o:x:y:v') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - ofile = opt[1] - elif opt[0] == '-v': - verbose = True - elif opt[0] == '-x': - x0 = int(opt[1].split(',')[0]) - nx = int(opt[1].split(',')[1]) - elif opt[0] == '-y': - y0 = int(opt[1].split(',')[0]) - ny = int(opt[1].split(',')[1]) -except getopt.error: - print "Usage: subset_ancillary -i ifile -o ofile -x x0,nx -y y0,ny" - sys.exit(2) - -# Section to take -if verbose: - print "Section", x0, y0, nx, ny - -f = umfile.UMFile(ifile) - -g = umfile.UMFile(ofile, "w") -g.copyheader(f) - -# Change the grid values in the output header to match the chosen origin and -# size -g.inthead[IC_XLen] = nx -g.inthead[IC_YLen] = ny -lat0 = f.realhead[RC_FirstLat] + f.realhead[RC_LatSpacing]*y0 -lon0 = f.realhead[RC_FirstLong] + f.realhead[RC_LongSpacing]*x0 -g.realhead[RC_FirstLat] = lat0 -g.realhead[RC_FirstLong] = lon0 -g.realhead[RC_PoleLong] = 180. # For SH regions - perhaps should be an option? - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - lat0 = f.rlookup[k,BZY] + f.rlookup[k,BDY]*y0 - lon0 = f.rlookup[k,BZX] + f.rlookup[k,BDX]*x0 - - if verbose: - print "Field", k, ilookup[ITEM_CODE] - print "GRID SIZE", ilookup[LBROW], ilookup[LBNPT] - print "GRID origin", f.rlookup[k,BZY], f.rlookup[k,BZX] - print "GRID first pt", f.rlookup[k,BZY] + f.rlookup[k,BDY], f.rlookup[k,BZX] + f.rlookup[k,BDX] - print "NEWGRID origin", lat0, lon0 - print "NEWGRID first pt", lat0 + f.rlookup[k,BDY], lon0 + f.rlookup[k,BDX] - if lbegin == -99: - break - - # Set modified output grid for this field - g.ilookup[k,LBLREC] = nx*ny - g.ilookup[k,LBROW] = ny - g.ilookup[k,LBNPT] = nx - # Set polar lon to 180 for SH grid. - g.rlookup[k,BPLON] = 180. - g.rlookup[k,BZY] = lat0 - g.rlookup[k,BZX] = lon0 - - data = f.readfld(k) - - # Select the new region - if not (y0+ny <= nrows and x0+nx <= npts): - print "ERROR" - print "Input grid size", npts, nrows - print "Requested extent %d:%d, %d:%d" % (x0, x0+nx, y0, y0+ny) - raise Exception("Requested grid is not a subset of source grid.") - - newdata = data[y0:y0+ny,x0:x0+nx] - - g.writefld(newdata,k) - -g.close() diff --git a/src/subset_dump.py b/src/subset_dump.py deleted file mode 100644 index bf40263a..00000000 --- a/src/subset_dump.py +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/env python - -# Subset a UM dump file - -# Intended to get a TC model initial dump file from a full region reconfigured -# initial dump. - -# New region is specified by the indices of the lower left corner (x0,y0) -# and the extents nx, ny. -# These are specified as arguments -x x0,nx -y y0,ny -# Note that (x0,y0) are 0 based indices - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -verbose = False -stashmaster = None -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:o:x:y:v') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - ofile = opt[1] - elif opt[0] == '-v': - verbose = True - elif opt[0] == '-x': - x0 = int(opt[1].split(',')[0]) - nx = int(opt[1].split(',')[1]) - elif opt[0] == '-y': - y0 = int(opt[1].split(',')[0]) - ny = int(opt[1].split(',')[1]) -except getopt.error: - print "Usage: subset_dump -i ifile -o ofile -x x0,nx -y y0,ny" - sys.exit(2) - -# Section to take -if verbose: - print "Section", x0, y0, nx, ny - -f = umfile.UMFile(ifile) - -g = umfile.UMFile(ofile, "w") -g.copyheader(f) - -# Change the grid values in the output header to match the chosen origin and -# size -g.inthead[IC_XLen] = nx -g.inthead[IC_YLen] = ny -lat0 = f.realhead[RC_FirstLat] + f.realhead[RC_LatSpacing]*y0 -lon0 = f.realhead[RC_FirstLong] + f.realhead[RC_LongSpacing]*x0 -g.realhead[RC_FirstLat] = lat0 -g.realhead[RC_FirstLong] = lon0 -g.realhead[RC_PoleLong] = 180. # For SH regions - perhaps should be an option? - -# Need to start by setting up the mask field because it's required by the -# fields packed to land points -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - if ilookup[ITEM_CODE] == 30: - data = f.readfld(k) - g.mask = np.array(data[y0:y0+ny,x0:x0+nx]) - g.nland = np.sum(g.mask!=0) - g.inthead[IC_NumLandPoints] = g.nland -if g.mask is None: - raise Exception("Land sea mask missing in input") - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - lat0 = f.rlookup[k,BZY] + f.rlookup[k,BDY]*y0 - # For zonal mean fields BDX=360 which messes up this calculation. - # Instead don't set it and pick up the value from the previous field - if not f.rlookup[k,BDX]==360: - lon0 = f.rlookup[k,BZX] + f.rlookup[k,BDX]*x0 - - if verbose: - print k, ilookup[ITEM_CODE] - print "GRID SIZE", ilookup[LBROW], ilookup[LBNPT] - print "GRID origin", f.rlookup[k,BZY], f.rlookup[k,BZX] - print "GRID first pt", f.rlookup[k,BZY] + f.rlookup[k,BDY], f.rlookup[k,BZX] + f.rlookup[k,BDX] - print "NEWGRID origin", lat0, lon0 - print "NEWGRID first pt", lat0 + f.rlookup[k,BDY], lon0 + f.rlookup[k,BDX] - if lbegin == -99: - break - - # Check whether this variable is on the V grid - # If so, f.rlookup[k,BZY] + 0.5*f.rlookup[k,BDY] = f.realhead[RC_FirstLat] - # For U and P grids - # f.rlookup[k,BZY] + f.rlookup[k,BDY] = f.realhead[RC_FirstLat] - # 0.6 factor allows for roundoff - vgrid = f.realhead[RC_FirstLat] - f.rlookup[k,BZY] < 0.6*f.rlookup[k,BDY] - if vgrid: - nyout = ny-1 - else: - nyout = ny - - # Set modified output grid for this field - # Using min(nx,npts) handles the zonal mean fields with npts=1 - g.ilookup[k,LBLREC] = min(nx,npts)*nyout - # Land packed fields have npts = nrows = 0 - g.ilookup[k,LBROW] = min(nyout,nrows) - g.ilookup[k,LBNPT] = min(nx,npts) - g.rlookup[k,BZY] = lat0 - g.rlookup[k,BZX] = lon0 - - data = f.readfld(k) - - # Skip this test for fields packed as land - packing = [0, ilookup[LBPACK]%10, ilookup[LBPACK]//10 % 10, - ilookup[LBPACK]//100 % 10, ilookup[LBPACK]//1000 % 10, - ilookup[LBPACK]//10000] - if verbose: - print "Packing", packing - - # Select the new region - # if packing[2] != 2 and not (y0+ny <= nrows and x0+nx <= npts): - # print "ERROR: record %d field: %d" % (k, ilookup[ITEM_CODE]) - # print "Input grid size", npts, nrows - # print "Requested extent %d:%d, %d:%d" % (x0, x0+nx, y0, y0+ny) - # raise Exception("Requested grid is not a subset of source grid.") - - if npts==1: # Zonal mean - newdata = data[y0:y0+nyout] - else: - newdata = data[y0:y0+nyout,x0:x0+nx] - - g.writefld(newdata,k) - -g.close() diff --git a/src/um2netcdf.py b/src/um2netcdf.py deleted file mode 100644 index d700f0a2..00000000 --- a/src/um2netcdf.py +++ /dev/null @@ -1,232 +0,0 @@ -#!/usr/bin/env python -# Convert UM monthly PP files to netcdf and concatenate -# Also works with daily files and optionally calculates the monthly average -# For min, max temperature, also need to match on cell_methods attribute -# Assume this starts with time0: - -# Climate diagnostics on pressure levels are normally masked and need to be -# corrected using the Heavyside function. -# nomask option turns this off (special case for runs where these were -# saved differently). - -from __future__ import print_function -import cdms2, cdtime, sys, getopt, datetime, argparse, netCDF4, os -from cdms2 import MV -import numpy as np -import stashvar - -def get_cell_methods(v): - if hasattr(v,'cell_methods'): - # Skip the time0: part - # Are cell_methods ever used for any other property? - return v.cell_methods.split()[1] - else: - return "" - -def findvar(vars, section, item): - for v in vars.values(): - if hasattr(v,'stash_section') and v.stash_section[0] == section and v.stash_item[0] == item: - return v - raise KeyError - -parser = argparse.ArgumentParser(description="Convert selected variables from UM fieldsfile to netCDF.") -parser.add_argument('-i', dest='ifile', required=True, help='Input UM file') -parser.add_argument('-o', dest='ofile', required=True, help='Output netCDF file (appended to if it already exists)"') -parser.add_argument('-s', dest='stashcode', required=True, help=' section,item (Stash code for variable)') -parser.add_argument('-v', dest='vname', help='Override default variable name in output file') -parser.add_argument('-m', dest='cell_methods', help='cell_methods (required if there are multiple instances of a variable with different cell methods, e.g. ave, min and max temp)') -parser.add_argument('-a', dest='average', action='store_true', - default=False, help="Calculate time average.") -parser.add_argument('-d', dest='forcedaily', action='store_true', - default=False, help="Force daily time values (work around cdms error)") -parser.add_argument('--nomask', dest='nomask', action='store_true', - default=False, help="Don't apply Heavyside function mask to pressure level fields.") -parser.add_argument('-k', dest='nckind', required=False, type=int, - default=4, help='specify kind of netCDF format for output file: 1 classic, 2 64-bit offset, 3 netCDF-4, 4 netCDF-4 classic model. Default 4', choices=[1,2,3,4]) -parser.add_argument('--deflate', dest='deflate_level', required=False, type=int, - default=1, help='Compression level for netCDF4 output from 0 (none) to 9 (max). Default 1') -args = parser.parse_args() - -mask = not args.nomask -stash_section = int(args.stashcode.split(',')[0]) -stash_item = int(args.stashcode.split(',')[1]) - -try: - d = cdms2.open(args.ifile) -except: - print("Error opening file", args.ifile) - usage() - sys.exit(1) - -var = None -print("Matching variables") -for vn in d.variables: - v = d.variables[vn] - # Need to check whether it really has a stash_item to skip coordinate variables - - # Note: need to match both item and section number - if hasattr(v,'stash_item') and v.stash_item[0] == stash_item and v.stash_section[0] == stash_section: - print(vn, get_cell_methods(v)) - # Need to cope with variables that have no cell methods so check - # cell_methods is None - if args.cell_methods == None or (args.cell_methods != None and get_cell_methods(v) == args.cell_methods): - # print("Cell match", vn, v.cell_methods) - if var: - # Multiple match - raise Exception("Multiple variables match") - else: - var = v - -if not var: - raise Exception("Variable not found %d %d" % ( stash_item, stash_section)) - -print(var) - -grid = var.getGrid() -time = var.getTime() -timevals = np.array(time[:]) -if args.forcedaily: - # Work around cdms error in times - for k in range(len(time)): - timevals[k] = round(timevals[k],1) - -item_code = var.stash_section[0]*1000 + var.stash_item[0] -umvar = stashvar.StashVar(item_code,var.stash_model[0]) -if not args.vname: - vname = umvar.name -print(vname, var[0,0,0,0]) - -hcrit = 0.5 # Critical value of Heavyside function for inclusion. - -# If output file exists then append to it, otherwise create a new file -# Different versions of netCDF4 module give different exceptions, so -# test for existence explicitly -exists = os.path.exists(args.ofile) -if exists: - f = netCDF4.Dataset(args.ofile, 'r+') - newv = f.variables[vname] - newtime = f.variables['time'] -else: - ncformats = {1:'NETCDF3_CLASSIC', 2:'NETCDF3_64BIT', - 3:'NETCDF4', 4:'NETCDF4_CLASSIC'} - f = netCDF4.Dataset(args.ofile,'w', format=ncformats[args.nckind]) - f.history = "Created by um2netcdf.py." - - f.createDimension('lat', len(grid.getLatitude()[:])) - newlat = f.createVariable('lat',np.float32,('lat',)) - newlat.standard_name = "latitude" - newlat.axis = "Y" - newlat.units = 'degrees_north' - newlat[:]= grid.getLatitude()[:] - f.createDimension('lon', len(grid.getLongitude()[:])) - newlon = f.createVariable('lon',np.float32,('lon',)) - newlon.standard_name = "longitude" - newlon.axis = "X" - newlon.units = 'degrees_east' - newlon[:]= grid.getLongitude()[:] - - lev = var.getLevel() - if len(lev) > 1: - f.createDimension('lev', len(lev)) - newlev = f.createVariable('lev', np.float32, ('lev')) - for attr in ('standard_name', 'units', 'positive', 'axis'): - if hasattr(lev,attr): - setattr(newlev, attr, getattr(lev,attr)) - newlev[:] = lev[:] - else: - newlev = None - - f.createDimension('time', None) - newtime = f.createVariable('time', np.float64, ('time',)) - newtime.standard_name = "time" - newtime.units = time.units # "days since " + `baseyear` + "-01-01 00:00" - newtime.calendar = time.calendar - newtime.axis = "T" - - if var.dtype == np.dtype('int32'): - vtype = np.int32 - missval = -2147483647 - else: - vtype = np.float32 - # UM missing value - missval = -2.**30 - - if newlev: - newv = f.createVariable(vname, vtype, ('time', 'lev', 'lat', 'lon'), fill_value=missval, zlib=True, complevel=args.deflate_level) - else: - newv = f.createVariable(vname, vtype, ('time', 'lat', 'lon'), fill_value=missval, zlib=True, complevel=args.deflate_level) - for attr in ("standard_name", "long_name", "units"): - if hasattr(umvar, attr): - setattr(newv,attr, getattr(umvar,attr)) - if hasattr(var,'cell_methods'): - # Change the time0 to time - newv.cell_methods = 'time: ' + var.cell_methods.split()[1] - newv.stash_section = var.stash_section[0] - newv.stash_item = var.stash_item[0] - newv.missing_value = missval - - try: - newv.units = var.units - except AttributeError: - pass - -f.history += "\n%s: Processed %s" % (datetime.datetime.today().strftime('%Y-%m-%d %H:%M'), args.ifile) - -# Get appropriate file position -# Uses 360 day calendar, all with same base time so must be 30 days on. -k = len(newtime) -# float needed here to get the later logical tests to work properly -avetime = float(MV.average(timevals[:])) # Works in either case -if k>0: - if args.average: - #if newtime[-1] != (avetime - 30): - # For Gregorian calendar relax this a bit - # Sometimes get differences slightly > 31 - if not 28 <= avetime - newtime[-1] <= 31.5: - raise Exception("Times not consecutive %f %f %f" % (newtime[-1], avetime, timevals[0])) - else: - if k > 1: - # Need a better test that works when k = 1. This is just a - # temporary workaround - # For monthly data - if 27 < newtime[-1] - newtime[-2] < 32: - if not 27 < timevals[0] - newtime[-1] < 32: - raise Exception("Monthly times not consecutive %f %f " % (newtime[-1], timevals[0])) - else: - if not np.allclose( newtime[-1] + (newtime[-1]-newtime[-2]), timevals[0] ): - raise Exception("Times not consecutive %f %f " % (newtime[-1], timevals[0])) - -if ( 30201 <= item_code <= 30288 or 30302 <= item_code <= 30303 ) and mask: - # P LEV/UV GRID with missing values treated as zero. - # Needs to be corrected by Heavyside fn - try: - heavyside = findvar(d.variables,30,301) - except KeyError: - raise Exception("Heavyside variable on UV grid required for pressure level masking of %d not found" % item_code) -if ( 30293 <= item_code <= 30298 ) and mask: - # P LEV/T GRID - try: - heavyside = findvar(d.variables,30,304) - except KeyError: - raise Exception("Heavyside variable on T grid required for pressure level masking of %d not found" % item_code) - -if args.average: - newtime[k] = avetime - if var.shape[1] > 1: - newv[k] = MV.average(var[:],axis=0).astype(np.float32) - else: - newv[k] = MV.average(var[:],axis=0)[0].astype(np.float32) -else: - for i in range(len(timevals)): - newtime[k+i] = timevals[i] - if var.shape[1] > 1: - # Multi-level - if (30201 <= item_code <= 30303) and mask: - newv[k+i] = np.where( np.greater(heavyside[i], hcrit), var[i]/heavyside[i], var.getMissing()) - else: - newv[k+i] = var[i] - else: - newv[k+i] = var[i] - - -f.close() diff --git a/src/um2netcdf4.py b/src/um2netcdf4.py deleted file mode 100644 index f2d5e987..00000000 --- a/src/um2netcdf4.py +++ /dev/null @@ -1,377 +0,0 @@ -#!/usr/bin/env python -# -# A python script to convert the CMIP5 fields (atmospheric) from -# UM fieldsfiles to netcdf format. This script works for all the -# four types of fields (monthly, daily, 6-hourly, and 3-hourly). -# For min, max fields, also need to match on cell_methods attribute -# Assume these are "time0: min" and "time0: max". -# -# The input variable names are mapped to CMIP5 variable names before -# writing to netcdf files. Also, singleton dimensions are eliminated, -# coordinate names are mapped to the commonly used names, and the time -# dimension is written as 'unlimited'. This is helpful for creating -# timeseries for one or more variables and writing them to a netcdf -# file, e.g.: -# ncrcat -h -v tas multiple_input_files.nc single_output_file.nc -# -# Climate diagnostics on pressure levels are normally masked; -# nomask option turns this off (special case for runs where the -# heavyside function, used for masking, were not saved). -# -# Written by Martin Dix, Petteri Uotila, Harun Rashid and Peter Uhe. - -from __future__ import print_function -import os, sys, argparse, datetime -import numpy as np -import cdms2, cdtime, netCDF4 -from cdms2 import MV - -parser = argparse.ArgumentParser(description="Convert UM fieldsfile to netCDF.") -parser.add_argument('-i', dest='ifile', required=True, help='Input UM file') -parser.add_argument('-o', dest='ofile', required=True, help='Output netCDF file') -parser.add_argument('-k', dest='nckind', required=False, type=int, - default=3, help='specify kind of netCDF format for output file: 1 classic, 2 64-bit offset, 3 netCDF-4, 4 netCDF-4 classic model. Default 3', choices=[1,2,3,4]) -parser.add_argument('-d', dest='deflate_level', required=False, type=int, - default=1, help='Compression level for netCDF4 output from 0 (none) to 9 (max). Default 1') -parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', - default=False, help='verbose output') -parser.add_argument('--nomask', dest='nomask', action='store_true', - default=False, help="Don't apply Heaviside function mask to pressure level fields.\n Default is to apply masking if the Heaviside field is available in the input file.") -parser.add_argument('--cmip6', dest='cmip6', action='store_true', - default=False, help="Use a CMIP6 version of the name mapping table.") -parser.add_argument('--simple', dest='simple', action='store_true', - default=False, help="Use a simple names of form fld_s01i123.") -parser.add_argument('--nd_grid', dest='nd_grid', action='store_true', - default=False, help="Data on ND grid (affects dimension naming). Default is ENDGAME") -parser.add_argument('--hcrit', dest='hcrit', type=float, - default=0.5, help="Critical value of heavyside fn for pressure level masking (default=0.5)") - -args = parser.parse_args() - -mask = not args.nomask - -if args.verbose: - print("Using python version: "+sys.version.split()[0]) - -if args.cmip6: - import stashvar_cmip6 as stashvar -else: - import stashvar - - -# Rename dimension to commonly used names -renameDims = {} -# {'latitude0':'lat','longitude0':'lon','latitude1':'lat_1',\ -# 'longitude1':'lon_1','longitude2':'lon_2','z4_p_level':'lev','z9_p_level':'lev',\ -# 'z3_p_level':'lev','time0':'time','time1':'time_1',\ -# 'z6_hybrid_sigmap':'z0_hybrid_height','z5_hybrid_sigmap':'z0_hybrid_height'} - -# cdms seems to get this from bounds, but no variables depend on it and lack of units -# causes problems -excludeDims=['nv'] - -# a function to create dimensions in the netCDF file -def write_nc_dimension(dimension,fi,fo): - dobj = fi.dimensionobject(dimension) - dval = dobj.getData() - dimout = renameDims[dimension] if dimension in renameDims else dimension - renamed = False - # make the time dimension "unlimited" - # 3 hourly files have an instantaneous and mean time dimension - if dobj.isTime(): - dimlen = None - if dimension == 'time0': - # Most files have only a single dimension - dimout = 'time' - renamed = True - else: - dimlen = len(dval) - # see if we need to rename output netcdf dimension name - if dobj.isLatitude(): - # Work out the grid - if len(dval) == 180: - dimout = 'lat_river' - elif dval[0] == -90.: - dimout = 'lat_v' - else: - dimout = 'lat' - renamed = True - if dobj.isLongitude(): - # Work out the grid - if len(dval) == 360: - dimout = 'lon_river' - elif dval[0] == 0.: - dimout = 'lon_u' - elif len(dval) == 1: - # Zonal means. Longitude value is the second last grid value - print(dval) - dimout = 'lon_zmean' - else: - dimout = 'lon' - renamed = True - if dobj.isLevel(): - if dimension.endswith('p_level'): - dimout = 'z_p_level_%d' % len(dval) - renamed = True - elif dimension.endswith('soil'): - dimout = 'z_soil_level' - renamed = True - if args.verbose: - print("Creating dimension %s as %s, dimlen: %s" % (dimension,dimout,dimlen)) - fo.createDimension(dimout,dimlen) - if hasattr(dobj,'standard_name') and dobj.standard_name == 'time': - fo.createVariable(dimout,'d',(dimout,)) - else: - fo.createVariable(dimout,dval.dtype.char,(dimout,)) - for dattr in dobj.attributes: - setattr(fo.variables[dimout],dattr,getattr(dobj,dattr)) - if dimout == 'lat': - fo.variables[dimout].long_name = 'latitudes at T grid points' - elif dimout == 'lat_v': - fo.variables[dimout].long_name = 'latitudes at V grid points' - elif dimout == 'lon': - fo.variables[dimout].long_name = 'longitudes at T grid points' - if dimout == 'lon_u': - fo.variables[dimout].long_name = 'longitudes at U grid points' - fo.variables[dimout][:] = dval - # update dimension mapping - if dimension in renameDims or renamed: - renameDims[dimension] = dimout - -def findvar(vars, section, item): - for v in vars.values(): - if hasattr(v,'stash_section') and v.stash_section[0] == section and v.stash_item[0] == item: - return v - raise KeyError - -global heavyside_uv, heavyside_t -heavyside_uv = heavyside_t = None - -def apply_mask(var,heavyside): - # Mask variable by heavyside function - fVal = var.getMissing() - vorder = var.getOrder() - horder = heavyside.getOrder() - if vorder != horder: - print(vorder,'!= heavyside',horder,file=sys.stderr) - raise Exception('Unable to apply pressure level mask because of dimension order mismatch') - # Slice to match var - if var.shape == heavyside.shape: - var = MV.where(np.greater_equal(heavyside,args.hcrit),var/heavyside,fVal) - var.fill_value = var.missing_value = fVal - return var - else: - # Do they just differ in number of levels with the variable's - # levels being a subset? - zdim = vorder.find('z') - vshape = list(var.shape) - hshape = list(heavyside.shape) - # Compare shapes without the z dimension - vshape[zdim] = hshape[zdim] = 0 - if vshape == hshape: - # Convert to list so that index works later - vlevs = var.getLevel()[:].tolist() - hlevs = heavyside.getLevel()[:].tolist() - assert zdim==0 # Assume given a t slice - # Need to make a copy first - newvar = var[:] - if set(vlevs).issubset(set(hlevs)): - # Then we can do the match - for k in range(len(vlevs)): - kh = hlevs.index(vlevs[k]) - if args.verbose: - print("Matching levels", k, kh) - newvar[k] = MV.where(np.greater_equal(heavyside[kh],args.hcrit),newvar[k]/heavyside[kh],fVal) - newvar.fill_value = newvar.missing_value = fVal - return newvar - - print("Problem applying pressure level mask for variable %d" %(item_code),file=sys.stderr) - print(var.shape,'!= heavyside',heavyside.shape) - raise Exception('Unable to apply pressure level mask because of shape mismatch') - return var - -def heavyside_mask(var,item_code, t): - global heavyside_uv, heavyside_t - # Variable range here is correct at vn11.3 - if 30201 <= item_code <= 30288 or 30302 <= item_code <= 30303: - if not heavyside_uv: - # Set heavyside variable if doesn't exist - try: - heavyside_uv = findvar(fi.variables,30,301) - except KeyError: - raise Exception("Heavyside variable on UV grid required for pressure level masking of %d not found" % item_code) - return apply_mask(var[t],heavyside_uv[t]) - elif 30293 <= item_code <= 30298: - if not heavyside_t: - # set heavyside variable if doesn't exist - try: - heavyside_t = findvar(fi.variables,30,304) - except KeyError: - raise Exception("Heavyside variable on T grid required for pressure level masking of %d not found" % item_code) - return apply_mask(var[t],heavyside_t[t]) - else: - raise Exception("Unexpected item code %d in heavyside_mask function" % item_code) - -# Main program begins here. -# First, open the input UM file (fieldsfile) - -try: - fi = cdms2.open(args.ifile,'r') -except: - print("Error opening file", args.ifile, file=sys.stderr) - sys.exit(1) - -if os.path.exists(args.ofile): - os.unlink(args.ofile) - -# Create an output netCDF file -ncformats = {1:'NETCDF3_CLASSIC', 2:'NETCDF3_64BIT', - 3:'NETCDF4', 4:'NETCDF4_CLASSIC'} -fo = netCDF4.Dataset(args.ofile,'w',format=ncformats[args.nckind]) - -history = "%s converted to netCDF by %s on %s." % (os.path.abspath(args.ifile), os.getenv('USER'),datetime.datetime.now().strftime("%Y-%m-%d")) - -# global attributes -for attribute in fi.attributes: - if attribute in ('history'): - setattr(fo,attribute,history) - elif attribute not in ('input_file_format', 'input_uri', 'input_word_length','input_byte_ordering') : - setattr(fo,attribute,getattr(fi,attribute)) - -# variables to write -varnames = fi.listvariables() - -# collect list of dimensions associated with these variables -dims = set(fi.listdimension()) # set of all dim_names in the file -for dim in dims: - dobj = fi.dimensionobject(dim) - # Exclude unnecessary singleton dimensions - # Keep time, longitude (zonal means) and single pressure levels - # Negative level value used for 850 vorticity - if dobj.shape==(1,) and not (dobj.isTime() or dobj.isLongitude()): - if not dobj.isLevel() or dobj.long_name.endswith('(dummy level coordinate)') or dobj.getData()[0] < 0.: - excludeDims.append(dim) -dimns = list(dims.difference(excludeDims)) # exclude those in excludeDims -dimns.sort() - -print("Excluded dimensions", excludeDims) - -# create dimensions -for dimension in dimns: - write_nc_dimension(dimension,fi,fo) -if args.verbose: - print("Finished writing dimensions...") - -umvar_atts = ["name","long_name","standard_name","units"] - -# Create a list of variable names sorted by stash code -snames = [] -for varname in varnames: - vval = fi.variables[varname] - if hasattr(vval,'stash_item') and hasattr(vval,'stash_section'): - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - snames.append((item_code,varname)) -snames.sort() - -varnames_out=[] -# loop over all variables -# create variables but don't write data yet -if args.verbose: - print('creating variables...') -for tmpval, varname in snames: - vval = fi.variables[varname] - vdims = vval.listdimnames() - #remove excludDims: - for vdim in vdims: - if vdim in excludeDims: - vdims.remove(vdim) - # see if we need to rename variables netcdf dimensions - for vdidx, vdim in enumerate(vdims): - if vdim in renameDims: - vdims[vdidx] = renameDims[vdim] - if hasattr(vval,'stash_item') and hasattr(vval,'stash_section'): - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - umvar = stashvar.StashVar(item_code,vval.stash_model[0]) - vname = umvar.name - if args.simple: - vname = 'fld_s%2.2di%3.3d' % (stash_section, stash_item) - - if hasattr(vval,"cell_methods") and vval.cell_methods == "time0: max": - vname = vname+"_max" - if hasattr(vval,"cell_methods") and vval.cell_methods == "time0: min": - vname = vname+"_min" - - # write data - if vval.dtype in (np.int32, np.int64): - vtype = np.int32 - else: - vtype = np.float32 - basename = vname - suffix = 1 - while vname in fo.variables: - vname = '%s_%d' %(basename, suffix) - suffix += 1 - if args.verbose and vname != basename: - print("Using name %s because of duplication" % vname) - fo.createVariable(vname, vtype, tuple(vdims), - zlib=True, complevel=args.deflate_level, - fill_value=getattr(vval,'_FillValue')) - if args.verbose: - print(vname +"\t created from "+ varname) - varnames_out.append((varname,vname)) - - # variable attributes - for vattr in vval.listattributes(): - if getattr(vval,vattr) is None: - print("Could not write attribute %s for %s." % (vattr,vname)) - else: - if vattr not in ('_FillValue', 'stash_model', 'lookup_source'): - attval = getattr(vval,vattr) - if hasattr(attval,'dtype') and attval.dtype == np.int64: - attval = attval.astype(np.int32) - setattr(fo.variables[vname],vattr,attval) - - for vattr in umvar_atts: - if hasattr(umvar,vattr) and getattr(umvar,vattr) != '': - fo.variables[vname].setncattr(vattr,getattr(umvar,vattr)) - -# Loop over all variables writing data -# Assume same number of times for all variables -# Get number of times from first variable used -varname, vname_out = varnames_out[0] -vval = fi.variables[varname] -nt = vval.shape[0] - -if args.verbose: - print('writing data') -for t in range(nt): - for varname, vname_out in varnames_out: - vval = fi.variables[varname] - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - if 30201 <= item_code <= 30303 and item_code not in [30301, 30304] and mask: - # P LEV field with missing values treated as zero needs - # to be corrected by Heavyside fn. Exclude the Heavyside - # fields themselves (301 and 304). - vval = heavyside_mask(vval,item_code,t) - fo.variables[vname_out][t] = vval.getValue() - else: - sp = vval.shape - if len(sp) == 4 and sp[1] == 1 and len(fo.variables[vname_out].shape) == 3: - # A singleton level dimension was removed, so use - # explicit index so shapes match - fo.variables[vname_out][t] = vval[t,0].getValue() - else: - fo.variables[vname_out][t] = vval[t].getValue() - if args.verbose and t==0: - print('writing', varname, 'to',vname_out) - -if args.verbose: - print('finished') - -fo.close() diff --git a/src/um2netcdf4_cmip6.py b/src/um2netcdf4_cmip6.py deleted file mode 100644 index 311c88f5..00000000 --- a/src/um2netcdf4_cmip6.py +++ /dev/null @@ -1,367 +0,0 @@ -#!/usr/bin/env python -# -# A python script to convert the CMIP6 fields (atmospheric) from -# UM fieldsfiles to netcdf format. This script works for all the -# four types of fields (monthly, daily, 6-hourly, and 3-hourly). -# For min, max fields, also need to match on cell_methods attribute -# Assume these are "time0: min" and "time0: max". -# -# Singleton dimensions are eliminated, -# coordinate names are mapped to the commonly used names, and the time -# dimension is written as 'unlimited'. This is helpful for creating -# timeseries for one or more variables and writing them to a netcdf -# file, e.g.: -# ncrcat -h -v tas multiple_input_files.nc single_output_file.nc -# -# Climate diagnostics on pressure levels are normally masked; -# nomask option turns this off (special case for runs where the -# heavyside function, used for masking, were not saved). -# -# Written by Martin Dix, Petteri Uotila, Harun Rashid and Peter Uhe. - -from __future__ import print_function -import os, sys, datetime -import numpy as np -import cdms2, cdtime, netCDF4 -from cdms2 import MV -import stashvar_cmip6 as stashvar - -def process(ifile, ofile, args): - - mask = not args.nomask - - if args.verbose: - print("Using python version: "+sys.version.split()[0]) - - # Rename dimension to commonly used names - renameDims = {} - # {'latitude0':'lat','longitude0':'lon','latitude1':'lat_1',\ - # 'longitude1':'lon_1','longitude2':'lon_2','z4_p_level':'lev','z9_p_level':'lev',\ - # 'z3_p_level':'lev','time0':'time','time1':'time_1',\ - # 'z6_hybrid_sigmap':'z0_hybrid_height','z5_hybrid_sigmap':'z0_hybrid_height'} - - # Not really clear what this is, but no variables depend on it and lack of units - # causes problems - excludeDims=['nv'] - - # a function to create dimensions in the netCDF file - def write_nc_dimension(dimension,fi,fo): - dobj = fi.dimensionobject(dimension) - dval = dobj.getData() - dimout = renameDims[dimension] if dimension in renameDims else dimension - renamed = False - # make the time dimension "unlimited" - # 3 hourly files have an instantaneous and mean time dimension - if dobj.isTime(): - dimlen = None - if dimension == 'time0': - # Most files have only a single dimension - dimout = 'time' - renamed = True - else: - dimlen = len(dval) - # see if we need to rename output netcdf dimension name - if dobj.isLatitude(): - # Work out the grid - if len(dval) == 180: - dimout = 'lat_river' - elif dval[0] == -90.: - dimout = 'lat_v' - else: - dimout = 'lat' - renamed = True - if dobj.isLongitude(): - # Work out the grid - if len(dval) == 360: - dimout = 'lon_river' - elif dval[0] == 0.: - dimout = 'lon_u' - else: - dimout = 'lon' - renamed = True - if dobj.isLevel(): - if dimension.endswith('p_level'): - dimout = 'z_p_level_%d' % len(dval) - renamed = True - elif dimension.endswith('soil'): - dimout = 'z_soil_level' - renamed = True - fo.createDimension(dimout,dimlen) - if hasattr(dobj,'standard_name') and dobj.standard_name == 'time': - fo.createVariable(dimout,'d',(dimout,)) - else: - fo.createVariable(dimout,dval.dtype.char,(dimout,)) - for dattr in dobj.attributes: - setattr(fo.variables[dimout],dattr,getattr(dobj,dattr)) - if dimout == 'lat': - fo.variables[dimout].long_name = 'latitudes at T grid points' - elif dimout == 'lat_v': - fo.variables[dimout].long_name = 'latitudes at V grid points' - elif dimout == 'lon': - fo.variables[dimout].long_name = 'longitudes at T grid points' - if dimout == 'lon_u': - fo.variables[dimout].long_name = 'longitudes at U grid points' - fo.variables[dimout][:] = dval - # update dimension mapping - if dimension in renameDims or renamed: - renameDims[dimension] = dimout - if args.verbose: - print("Wrote dimension %s as %s, dimlen: %s" % (dimension,dimout,dimlen)) - - def findvar(vars, section, item): - for v in vars.values(): - if hasattr(v,'stash_section') and v.stash_section[0] == section and v.stash_item[0] == item: - return v - raise KeyError - - global heavyside_uv, heavyside_t - heavyside_uv = heavyside_t = None - - def apply_mask(var,heavyside): - # Mask variable by heavyside function - fVal = var.getMissing() - vorder = var.getOrder() - horder = heavyside.getOrder() - if vorder != horder: - print(vorder,'!= heavyside',horder,file=sys.stderr) - raise Exception('Unable to apply pressure level mask because of dimension order mismatch') - # Slice to match var - if var.shape == heavyside.shape: - var = MV.where(np.greater_equal(heavyside,args.hcrit),var/heavyside,fVal) - var.fill_value = var.missing_value = fVal - return var - else: - # Do they just differ in number of levels with the variable's - # levels being a subset? - zdim = vorder.find('z') - vshape = list(var.shape) - hshape = list(heavyside.shape) - # Compare shapes without the z dimension - vshape[zdim] = hshape[zdim] = 0 - if vshape == hshape: - # Convert to list so that index works later - vlevs = var.getLevel()[:].tolist() - hlevs = heavyside.getLevel()[:].tolist() - assert zdim==0 # Assume given a t slice - # Need to make a copy first - newvar = var[:] - if set(vlevs).issubset(set(hlevs)): - # Then we can do the match - for k in range(len(vlevs)): - kh = hlevs.index(vlevs[k]) - if args.verbose: - print("Matching levels", k, kh) - newvar[k] = MV.where(np.greater_equal(heavyside[kh],args.hcrit),newvar[k]/heavyside[kh],fVal) - newvar.fill_value = newvar.missing_value = fVal - return newvar - - print("Problem applying pressure level mask for variable %d" %(item_code),file=sys.stderr) - print(var.shape,'!= heavyside',heavyside.shape) - raise Exception('Unable to apply pressure level mask because of shape mismatch') - return var - - def heavyside_mask(var,item_code, t): - global heavyside_uv, heavyside_t - # Variable range here is correct at vn11.3 - if 30201 <= item_code <= 30288 or 30302 <= item_code <= 30303: - if not heavyside_uv: - # Set heavyside variable if doesn't exist - try: - heavyside_uv = findvar(fi.variables,30,301) - except KeyError: - raise Exception("Heavyside variable on UV grid required for pressure level masking of %d not found" % item_code) - return apply_mask(var[t],heavyside_uv[t]) - elif 30293 <= item_code <= 30298: - if not heavyside_t: - # set heavyside variable if doesn't exist - try: - heavyside_t = findvar(fi.variables,30,304) - except KeyError: - raise Exception("Heavyside variable on T grid required for pressure level masking of %d not found" % item_code) - return apply_mask(var[t],heavyside_t[t]) - else: - raise Exception("Unexpected item code %d in heavyside_mask function" % item_code) - - # Main program begins here. - # First, open the input UM file (fieldsfile) - - try: - fi = cdms2.open(ifile,'r') - except: - print("Error opening file", ifile, file=sys.stderr) - sys.exit(1) - - if os.path.exists(ofile): - os.unlink(ofile) - - # Create an output netCDF file - ncformats = {1:'NETCDF3_CLASSIC', 2:'NETCDF3_64BIT', - 3:'NETCDF4', 4:'NETCDF4_CLASSIC'} - fo = netCDF4.Dataset(ofile,'w',format=ncformats[args.nckind]) - - history = "%s converted to netCDF by %s on %s." % (os.path.abspath(ifile), os.getenv('USER'),datetime.datetime.now().strftime("%Y-%m-%d")) - - # global attributes - for attribute in fi.attributes: - if attribute in ('history'): - setattr(fo,attribute,history) - elif attribute not in ('input_file_format', 'input_uri', 'input_word_length','input_byte_ordering') : - setattr(fo,attribute,getattr(fi,attribute)) - - # variables to write - varnames = fi.listvariables() - - # collect list of dimensions associated with these variables - dims = set(fi.listdimension()) # set of all dim_names in the file - for dim in dims: - dobj = fi.dimensionobject(dim) - # Exclude unnecessary singleton dimensions - # Keep time, longitude (zonal means) and single pressure levels - # Negative level value used for 850 vorticity - if dobj.shape==(1,) and not (dobj.isTime() or dobj.isLongitude()): - if not dobj.isLevel() or dobj.long_name.endswith('(dummy level coordinate)') or dobj.getData()[0] < 0.: - excludeDims.append(dim) - dimns = list(dims.difference(excludeDims)) # exclude those in excludeDims - dimns.sort() - - print("Excluded dimensions", excludeDims) - - # create dimensions - for dimension in dimns: - write_nc_dimension(dimension,fi,fo) - if args.verbose: - print("Finished writing dimensions...") - - umvar_atts = ["name","long_name","standard_name","units"] - - # Create a list of variable names sorted by stash code - snames = [] - for varname in varnames: - vval = fi.variables[varname] - if hasattr(vval,'stash_item') and hasattr(vval,'stash_section'): - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - snames.append((item_code,varname)) - snames.sort() - - varnames_out=[] - # loop over all variables - # create variables but don't write data yet - if args.verbose: - print('creating variables...') - for tmpval, varname in snames: - vval = fi.variables[varname] - vdims = vval.listdimnames() - #remove excludDims: - for vdim in vdims: - if vdim in excludeDims: - vdims.remove(vdim) - # see if we need to rename variables netcdf dimensions - for vdidx, vdim in enumerate(vdims): - if vdim in renameDims: - vdims[vdidx] = renameDims[vdim] - if hasattr(vval,'stash_item') and hasattr(vval,'stash_section'): - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - umvar = stashvar.StashVar(item_code,vval.stash_model[0]) - vname = umvar.name - vname = 'fld_s%2.2di%3.3d' % (stash_section, stash_item) - - if hasattr(vval,"cell_methods") and vval.cell_methods == "time0: max": - vname = vname+"_max" - if hasattr(vval,"cell_methods") and vval.cell_methods == "time0: min": - vname = vname+"_min" - - # write data - if vval.dtype in (np.int32, np.int64): - vtype = np.int32 - else: - vtype = np.float32 - basename = vname - suffix = 1 - while vname in fo.variables: - vname = '%s_%d' %(basename, suffix) - suffix += 1 - if args.verbose and vname != basename: - print("Using name %s because of duplication" % vname) - fo.createVariable(vname, vtype, tuple(vdims), - zlib=True, complevel=args.deflate_level, - fill_value=getattr(vval,'_FillValue')) - if args.verbose: - print(vname +"\t created from "+ varname) - varnames_out.append((varname,vname)) - - # variable attributes - for vattr in vval.listattributes(): - if getattr(vval,vattr) is None: - print("Could not write attribute %s for %s." % (vattr,vname)) - else: - if vattr not in ('_FillValue', 'stash_model', 'lookup_source'): - attval = getattr(vval,vattr) - if hasattr(attval,'dtype') and attval.dtype == np.int64: - attval = attval.astype(np.int32) - setattr(fo.variables[vname],vattr,attval) - - for vattr in umvar_atts: - if hasattr(umvar,vattr) and getattr(umvar,vattr) != '': - fo.variables[vname].setncattr(vattr,getattr(umvar,vattr)) - - # Loop over all variables writing data - # Assume same number of times for all variables - # Get number of times from first variable used - varname, vname_out = varnames_out[0] - vval = fi.variables[varname] - nt = vval.shape[0] - - if args.verbose: - print('writing data') - for t in range(nt): - for varname, vname_out in varnames_out: - vval = fi.variables[varname] - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - if 30201 <= item_code <= 30303 and item_code not in [30301, 30304] and mask: - # P LEV field with missing values treated as zero needs - # to be corrected by Heavyside fn. Exclude the Heavyside - # fields themselves (301 and 304). - vval = heavyside_mask(vval,item_code,t) - fo.variables[vname_out][t] = vval.getValue() - else: - sp = vval.shape - if len(sp) == 4 and sp[1] == 1 and len(fo.variables[vname_out].shape) == 3: - # A singleton level dimension was removed, so use - # explicit index so shapes match - fo.variables[vname_out][t] = vval[t,0].getValue() - else: - fo.variables[vname_out][t] = vval[t].getValue() - if args.verbose and t==0: - print('writing', varname, 'to',vname_out) - - if args.verbose: - print('finished') - - fo.close() - -if __name__ == '__main__': - import argparse - - parser = argparse.ArgumentParser(description="Convert UM fieldsfile to netCDF.") - parser.add_argument('-i', dest='ifile', required=True, help='Input UM file') - parser.add_argument('-o', dest='ofile', required=True, help='Output netCDF file') - parser.add_argument('-k', dest='nckind', required=False, type=int, - default=3, help='specify kind of netCDF format for output file: 1 classic, 2 64-bit offset, 3 netCDF-4, 4 netCDF-4 classic model. Default 3', choices=[1,2,3,4]) - parser.add_argument('-d', dest='deflate_level', required=False, type=int, - default=1, help='Compression level for netCDF4 output from 0 (none) to 9 (max). Default 1') - parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', - default=False, help='verbose output') - parser.add_argument('--nomask', dest='nomask', action='store_true', - default=False, help="Don't apply Heaviside function mask to pressure level fields.\n Default is to apply masking if the Heaviside field is available in the input file.") - parser.add_argument('--hcrit', dest='hcrit', type=float, - default=0.5, help="Critical value of heavyside fn for pressure level masking (default=0.5)") - - args = parser.parse_args() - process(args.ifile, args.ofile, args) - diff --git a/src/um2netcdf4_dev.py b/src/um2netcdf4_dev.py deleted file mode 100644 index d35b2186..00000000 --- a/src/um2netcdf4_dev.py +++ /dev/null @@ -1,494 +0,0 @@ -#!/usr/bin/env python -# -# A python script to convert the CMIP6 fields (atmospheric) from -# UM fieldsfiles to netcdf format. This script works for all the -# four types of fields (monthly, daily, 6-hourly, and 3-hourly). -# For min, max fields, also need to match on cell_methods attribute -# Assume these are "time0: min" and "time0: max". -# -# The input variable names are mapped to CMIP6 variable names before -# writing to netcdf files. Also, singleton dimensions are eliminated, -# coordinate names are mapped to the commonly used names, and the time -# dimension is written as 'unlimited'. This is helpful for creating -# timeseries for one or more variables and writing them to a netcdf -# file, e.g.: -# ncrcat -h -v tas multiple_input_files.nc single_output_file.nc -# -# Climate diagnostics on pressure levels are normally masked; -# nomask option turns this off (special case for runs where the -# heavyside function, used for masking, were not saved). -# -# Written by Martin Dix, Petteri Uotila, Harun Rashid and Peter Uhe. - -from __future__ import print_function -import os, sys, argparse, datetime, collections -import numpy as np -import cdms2, cdtime, netCDF4 -from cdms2 import MV -import stashutils, stashvar_cmip6 as stashvar - -parser = argparse.ArgumentParser(description="Convert UM fieldsfile to netCDF.") -parser.add_argument('-i', dest='ifile', required=True, help='Input UM file') -parser.add_argument('-o', dest='ofile', required=True, help='Output netCDF file') -parser.add_argument('-k', dest='nckind', required=False, type=int, - default=3, help='specify kind of netCDF format for output file: 1 classic, 2 64-bit offset, 3 netCDF-4, 4 netCDF-4 classic model. Default 3', choices=[1,2,3,4]) -parser.add_argument('-d', dest='deflate_level', required=False, type=int, - default=1, help='Compression level for netCDF4 output from 0 (none) to 9 (max). Default 1') -parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', - default=False, help='verbose output') -parser.add_argument('--nomask', dest='nomask', action='store_true', - default=False, help="Don't apply Heaviside function mask to pressure level fields.\n Default is to apply masking if the Heaviside field is available in the input file.") -parser.add_argument('--simple', dest='simple', action='store_true', - default=False, help="Use a simple names of form fld_s01i123.") -# Using choices=('cm2', 'esm1.5') not available in python 2.7 -parser.add_argument('--model', dest='model', required=False, - default='cm2', help="Which model is being processed (affects dimension naming). Choices are cm2 (default) and esm1.5") -parser.add_argument('-S', dest='STASHmaster', required=False, - default=None, help="Path to alternate STASHmaster file.") - -args = parser.parse_args() - -if args.model not in ('cm2', 'esm1.5'): - parser.print_help() - raise Exception("Invalid model choice %s" % args.model) - -mask = not args.nomask - -if args.verbose: - print("Using python version: "+sys.version.split()[0]) - -def transform_dimensions(fi): - # First work out which dimensions to exclude - excludeDims=['nv'] - dims = set(fi.listdimension()) # set of all dim_names in the file - for dim in dims: - dobj = fi.dimensionobject(dim) - # Exclude unnecessary singleton dimensions - # Keep time, longitude (zonal means) and single pressure levels - # Negative level value used for 850 vorticity - if dobj.shape==(1,) and not (dobj.isTime() or dobj.isLongitude()): - if not dobj.isLevel() or dobj.long_name.endswith('(dummy level coordinate)') or dobj.getData()[0] <= 0.: - excludeDims.append(dim) - dimns = list(dims.difference(excludeDims)) # exclude those in excludeDims - dimns.sort() - - print("Excluded dimensions", excludeDims) - print("Remaining dimensions", dimns) - - # Before using variables to work out dimension names, need to - # check that these are consistent. - level_codes = stashutils.get_level_codes(args.STASHmaster) - dimdict = collections.defaultdict(list) - for vname in fi.listvariables(): - var = fi.variables[vname] - if hasattr(var,'stash_item'): - # Exclude dimension variables - for d in var.listdimnames(): - if d in dimns: - dimdict[d].append(vname) - for dname in dimdict: - if dname.startswith('z'): - vars = dimdict[dname] - # Do these all have the same level codes - for k, v in enumerate(vars): - var = fi.variables[v] - code = 1000*var.stash_section[0] + var.stash_item[0] - if k == 0: - first = level_codes[code] - else: - # Treatment of level first and last is a bit odd, so skip this - # as well as grid - if not ( level_codes[code][1] == first[1] and - level_codes[code][4:] == first[4:] ): - # ESM changes some variables from tiles to - # PFTs so skip check in this case - # Handled using dimension size below. - if not (args.model=='esm1.5' and first.levelt==5 and first.pseudt==9): - - print("*** Mismatch", dname, vars, level_codes[code], first) - raise Exception() - - renameDims = {} - for dim in dimns: - dobj = fi.dimensionobject(dim) - dval = dobj.getData() - renamed = False - long_name = None - if dobj.isTime(): - if dim == 'time0': - # Most files have only a single dimension - dimout = 'time' - renamed = True - # see if we need to rename output netcdf dimension name - elif dobj.isLatitude(): - # Work out the grid. ESM uses ND - # Assuming it's global here - if args.model == 'cm2': - if dval[0] == -90.: - dimout = 'lat_v' - else: - dimout = 'lat' - else: - if dval[0] == -90.: - dimout = 'lat' - else: - dimout = 'lat_v' - if dimout == 'lat': - long_name = 'latitudes at T grid points' - elif dimout == 'lat_v': - long_name = 'latitudes at V grid points' - renamed = True - elif dobj.isLongitude(): - # Work out the grid - if args.model == 'cm2': - if dval[0] == 0.: - dimout = 'lon_u' - else: - dimout = 'lon' - else: - # Assuming it's global here - if dval[0] == 0.: - dimout = 'lon' - else: - dimout = 'lon_u' - if dimout == 'lon': - long_name = 'longitudes at T grid points' - elif dimout == 'lon_u': - long_name = 'longitudes at U grid points' - renamed = True - elif dim.startswith('z'): - # Already checked that the dimensions are all used - # consistently, so can choose appropriate names from the - # level codes of the first variable that uses it - vname = dimdict[dim][0] - var = fi.variables[vname] - code = 1000*var.stash_section[0] + var.stash_item[0] - levelt = level_codes[code].levelt - nlev = len(dval) - if levelt == 1: - dimout = 'z_hybrid_height_rho' - elif levelt == 2: - dimout = 'z_hybrid_height_theta' - elif levelt == 3: - dimout = 'z_p_level_%d' % nlev - elif levelt == 5: - # Surface - pseudt = level_codes[code].pseudt - if pseudt == 1: - dimout = 'z_sw_band' - long_name = 'SW radiation spectral band' - elif pseudt == 2: - dimout = 'z_lw_band' - long_name = 'LW radiation spectral band' - elif pseudt == 4: - dimout = 'z_aod_band' - long_name = 'aerosol optical depth spectral band' - elif pseudt == 10: - dimout = 'z_icecat' - long_name = 'sea-ice category' - elif pseudt == 9: - # Vegetation - pseudl = level_codes[code].pseudl - if args.model=='esm1.5': - # Inconsistent, so use dim size - if nlev==13: - dimout = 'z_pft' - long_name = 'land surface vegetated tile index' - elif nlev==17: - dimout = 'z_tile' - long_name = 'land surface tile index' - else: - raise Exception("Unexpected dimension size for tile pseudo dimension %s" % nlev) - else: - if pseudl == 8: - dimout = 'z_pft' - long_name = 'land surface vegetated tile index' - elif pseudl == 9: - dimout = 'z_tile' - long_name = 'land surface tile index' - else: - raise Exception("Unexpected pseudt %d for var %d" % (pseudt, code)) - elif levelt == 6: - dimout = 'z_soil_level' - else: - raise Exception('Unexpected level type %d' % levelt) - renamed = True - if renamed: - renameDims[dim] = (dimout, long_name) - else: - renameDims[dim] = (dim, long_name) - - if args.verbose: - print("Renamed dimensions", renameDims) - return renameDims - -# a function to create dimensions in the netCDF file -def write_nc_dimension(dimension,renameDims,fi,fo): - dobj = fi.dimensionobject(dimension) - dval = dobj.getData() - dimout = renameDims[dimension][0] - # There may be several input dimensions that map to same output - # dimension. Check that the values match in this case - if dimout in fo.dimensions: - if not np.allclose(dval, fo.variables[dimout][:]): - print("Dimension %s renamed as %s already in use" % (dimension, dimout)) - print("Coordinate mismatch") - print(dval) - print(fo.variables[dimout][:]) - raise Exception() - else: - if args.verbose: - print("Dimension %s renamed as %s already in use" % (dimension, dimout)) - return - - if dobj.isTime(): - dimlen = None - else: - dimlen = len(dval) - if args.verbose: - print("Creating dimension %s as %s, dimlen: %s" % (dimension,dimout,dimlen)) - fo.createDimension(dimout,dimlen) - if hasattr(dobj,'standard_name') and dobj.standard_name == 'time': - fo.createVariable(dimout,'d',(dimout,)) - else: - fo.createVariable(dimout,dval.dtype.char,(dimout,)) - for dattr in dobj.attributes: - setattr(fo.variables[dimout],dattr,getattr(dobj,dattr)) - long_name = renameDims[dimension][1] - if long_name: - fo.variables[dimout].long_name = long_name - if dimout == 'z_soil_level': - fo.variables[dimout].units = "m" - # CDMS gets this wrong - fo.variables[dimout].positive = "down" - if fo.variables[dimout].units == "Pa": - # CDMS gives values with extra 1e-8 for some reason. - fo.variables[dimout][:] = np.round(dval,6) - else: - fo.variables[dimout][:] = dval - -def findvar(vars, section, item): - for v in vars.values(): - if hasattr(v,'stash_section') and v.stash_section[0] == section and v.stash_item[0] == item: - return v - raise KeyError - -global heavyside_uv, heavyside_t -heavyside_uv = heavyside_t = None - -def apply_mask(var,heavyside): - # Mask variable by heavyside function - fVal = var.getMissing() - vorder = var.getOrder() - horder = heavyside.getOrder() - if vorder != horder: - print(vorder,'!= heavyside',horder,file=sys.stderr) - raise Exception('Unable to apply pressure level mask because of dimension order mismatch') - # Slice to match var - if var.shape == heavyside.shape: - var = MV.where(np.greater(heavyside,hcrit),var/heavyside,fVal) - var.fill_value = var.missing_value = fVal - return var - else: - # Do they just differ in number of levels with the variable's - # levels being a subset? - zdim = vorder.find('z') - vshape = list(var.shape) - hshape = list(heavyside.shape) - # Compare shapes without the z dimension - vshape[zdim] = hshape[zdim] = 0 - if vshape == hshape: - # Convert to list so that index works later - vlevs = var.getLevel()[:].tolist() - hlevs = heavyside.getLevel()[:].tolist() - assert zdim==0 # Assume given a t slice - # Need to make a copy first - newvar = var[:] - if set(vlevs).issubset(set(hlevs)): - # Then we can do the match - for k in range(len(vlevs)): - kh = hlevs.index(vlevs[k]) - if args.verbose: - print("Matching levels", k, kh) - newvar[k] = MV.where(np.greater(heavyside[kh],hcrit),newvar[k]/heavyside[kh],fVal) - newvar.fill_value = newvar.missing_value = fVal - return newvar - - print("Problem applying pressure level mask for variable %d" %(item_code),file=sys.stderr) - print(var.shape,'!= heavyside',heavyside.shape) - raise Exception('Unable to apply pressure level mask because of shape mismatch') - return var - -def heavyside_mask(var,item_code, t): - global heavyside_uv, heavyside_t - # Variable range here is correct at vn11.3 - if 30201 <= item_code <= 30288 or 30302 <= item_code <= 30303: - if not heavyside_uv: - # Set heavyside variable if doesn't exist - try: - heavyside_uv = findvar(fi.variables,30,301) - except KeyError: - raise Exception("Heavyside variable on UV grid required for pressure level masking of %d not found" % item_code) - return apply_mask(var[t],heavyside_uv[t]) - elif 30293 <= item_code <= 30298: - if not heavyside_t: - # set heavyside variable if doesn't exist - try: - heavyside_t = findvar(fi.variables,30,304) - except KeyError: - raise Exception("Heavyside variable on T grid required for pressure level masking of %d not found" % item_code) - return apply_mask(var[t],heavyside_t[t]) - else: - raise Exception("Unexpected item code %d in heavyside_mask function" % item_code) - -# Main program begins here. -# First, open the input UM file (fieldsfile) - -try: - fi = cdms2.open(args.ifile,'r') -except: - print("Error opening file", args.ifile, file=sys.stderr) - sys.exit(1) - -if os.path.exists(args.ofile): - os.unlink(args.ofile) - -# Create an output netCDF file -ncformats = {1:'NETCDF3_CLASSIC', 2:'NETCDF3_64BIT', - 3:'NETCDF4', 4:'NETCDF4_CLASSIC'} -fo = netCDF4.Dataset(args.ofile,'w',format=ncformats[args.nckind]) - -history = "%s converted with um2netcdf4.py by %s on %s." % (os.path.abspath(args.ifile), os.getenv('USER'),datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) - -# global attributes -for attribute in fi.attributes: - if attribute in ('history'): - setattr(fo,attribute,history) - elif attribute not in ('input_file_format', 'input_uri', 'input_word_length','input_byte_ordering') : - setattr(fo,attribute,getattr(fi,attribute)) - -# variables to write -varnames = fi.listvariables() - -renameDims = transform_dimensions(fi) - -# create dimensions -for dimension in sorted(renameDims): - write_nc_dimension(dimension,renameDims,fi,fo) -if args.verbose: - print("Finished writing dimensions...") - -umvar_atts = ["name","long_name","standard_name","units"] -hcrit = 0.5 # Critical value of Heavyside function for inclusion. - -# Create a list of variable names sorted by stash code -snames = [] -for varname in varnames: - vval = fi.variables[varname] - if hasattr(vval,'stash_item') and hasattr(vval,'stash_section'): - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - snames.append((item_code,varname)) -snames.sort() - -varnames_out=[] -# loop over all variables -# create variables but don't write data yet -if args.verbose: - print('creating variables...') -for tmpval, varname in snames: - vval = fi.variables[varname] - vdims = vval.listdimnames() - # remove excluded dims: - for vdim in vdims: - if vdim not in renameDims: - vdims.remove(vdim) - # see if we need to rename variables netcdf dimensions - for vdidx, vdim in enumerate(vdims): - if vdim in renameDims: - vdims[vdidx] = renameDims[vdim][0] - if hasattr(vval,'stash_item') and hasattr(vval,'stash_section'): - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - umvar = stashvar.StashVar(item_code,vval.stash_model[0]) - vname = umvar.name - if args.simple: - vname = 'fld_s%2.2di%3.3d' % (stash_section, stash_item) - - if hasattr(vval,"cell_methods") and vval.cell_methods == "time0: max": - vname = vname+"_max" - if hasattr(vval,"cell_methods") and vval.cell_methods == "time0: min": - vname = vname+"_min" - - # write data - if vval.dtype in (np.int32, np.int64): - vtype = np.int32 - else: - vtype = np.float32 - basename = vname - suffix = 1 - while vname in fo.variables: - vname = '%s_%d' %(basename, suffix) - suffix += 1 - if args.verbose and vname != basename: - print("Using name %s because of duplication" % vname) - fo.createVariable(vname, vtype, tuple(vdims), - zlib=True, complevel=args.deflate_level, - fill_value=getattr(vval,'_FillValue')) - if args.verbose: - print(vname +"\t created from "+ varname) - varnames_out.append((varname,vname)) - - # variable attributes - for vattr in vval.listattributes(): - if getattr(vval,vattr) is None: - print("Could not write attribute %s for %s." % (vattr,vname)) - else: - if vattr not in ('_FillValue', 'stash_model', 'lookup_source'): - attval = getattr(vval,vattr) - if hasattr(attval,'dtype') and attval.dtype == np.int64: - attval = attval.astype(np.int32) - setattr(fo.variables[vname],vattr,attval) - - for vattr in umvar_atts: - if hasattr(umvar,vattr) and getattr(umvar,vattr) != '': - fo.variables[vname].setncattr(vattr,getattr(umvar,vattr)) - -# Loop over all variables writing data -# Assume same number of times for all variables -# Get number of times from first variable used -varname, vname_out = varnames_out[0] -vval = fi.variables[varname] -nt = vval.shape[0] - -if args.verbose: - print('writing data') -for t in range(nt): - for varname, vname_out in varnames_out: - vval = fi.variables[varname] - stash_section = vval.stash_section[0] - stash_item = vval.stash_item[0] - item_code = vval.stash_section[0]*1000 + vval.stash_item[0] - if 30201 <= item_code <= 30303 and item_code not in [30301, 30304] and mask: - # P LEV field with missing values treated as zero needs - # to be corrected by Heavyside fn. Exclude the Heavyside - # fields themselves (301 and 304). - vval = heavyside_mask(vval,item_code,t) - fo.variables[vname_out][t] = vval.getValue() - else: - sp = vval.shape - if len(sp) == 4 and sp[1] == 1 and len(fo.variables[vname_out].shape) == 3: - # A singleton level dimension was removed, so use - # explicit index so shapes match - fo.variables[vname_out][t] = vval[t,0].getValue() - else: - fo.variables[vname_out][t] = vval[t].getValue() - if args.verbose and t==0: - print('writing', varname, 'to',vname_out) - -if args.verbose: - print('finished') - -fo.close() diff --git a/src/um2netcdf_all.py b/src/um2netcdf_all.py deleted file mode 100644 index 22614dca..00000000 --- a/src/um2netcdf_all.py +++ /dev/null @@ -1,233 +0,0 @@ -#!/usr/bin/env python -# Convert UM monthly PP files to netcdf and concatenate -# Also works with daily files and optionally calculates the monthly average -# For min, max temperature, also need to match on cell_methods attribute -# Assume this starts with time0: - -# Climate diagnostics on pressure levels are normally masked and need to be -# corrected using the Heaviside function. -# nomask option turns this off (special case for runs where these were -# saved differently). - -# Use the -x option to optionally skip some variables. - -import cdms2, cdtime, sys, getopt, collections -from cdms2 import MV -import numpy as np -import stashvar - -class error(Exception): - pass - - -def process_file(ifile,suffix,average=False,forcedaily=False,mask=True,xlist=[]): - - try: - d = cdms2.open(ifile) - except: - print "Error opening file", ifile - usage() - sys.exit(1) - - hcrit = 0.5 # Critical value of Heavyside function for inclusion. - ofilelist = [] - - for vn in d.variables: - var = d.variables[vn] - # Need to check whether it really has a stash_item to skip coordinate variables - - # Note: need to match both item and section number - if not hasattr(var,'stash_item'): - continue - item_code = var.stash_section[0]*1000 + var.stash_item[0] - if item_code in xlist: - print "Skipping", item_code - continue - - grid = var.getGrid() - time = var.getTime() - timevals = np.array(time[:]) - if forcedaily: - # Work around cdms error in times - for k in range(len(time)): - timevals[k] = round(timevals[k],1) - - umvar = stashvar.StashVar(item_code,var.stash_model[0]) - vname = umvar.name - print vname, var[0,0,0,0] - - # Create filename from variable name and cell_methods, - # checking for name collisions - if suffix: - ofile = "%s_%s.nc" % (umvar.uniquename, suffix) - else: - ofile = "%s.nc" % umvar.uniquename - if ofile in ofilelist: - raise Exception("Duplicate file name %s" % ofile) - ofilelist.append(ofile) - - # If output file exists then append to it, otherwise create a new file - try: - file = cdms2.openDataset(ofile, 'r+') - newv = file.variables[vname] - newtime = newv.getTime() - except cdms2.error.CDMSError: - file = cdms2.createDataset(ofile) - # Stop it creating the bounds_latitude, bounds_longitude variables - cdms2.setAutoBounds("off") - - # By default get names like latitude0, longitude1 - # Need this awkwardness to get the variable/dimension name set correctly - # Is there a way to change the name cdms uses after - # newlat = newgrid.getLatitude() ???? - newlat = file.createAxis('lat', grid.getLatitude()[:]) - newlat.standard_name = "latitude" - newlat.axis = "Y" - newlat.units = 'degrees_north' - newlon = file.createAxis('lon', grid.getLongitude()[:]) - newlon.standard_name = "longitude" - newlon.axis = "X" - newlon.units = 'degrees_east' - - order = var.getOrder() - if order[1] == 'z': - lev = var.getLevel() - if len(lev) > 1: - newlev = file.createAxis('lev', lev[:]) - for attr in ('standard_name', 'units', 'positive', 'axis'): - if hasattr(lev,attr): - setattr(newlev, attr, getattr(lev,attr)) - else: - newlev = None - else: - # Pseudo-dimension - pdim = var.getAxis(1) - if len(pdim) > 1: - newlev = file.createAxis('pseudo', pdim[:]) - else: - newlev = None - - newtime = file.createAxis('time', None, cdms2.Unlimited) - newtime.standard_name = "time" - newtime.units = time.units # "days since " + `baseyear` + "-01-01 00:00" - newtime.setCalendar(time.getCalendar()) - newtime.axis = "T" - - if var.dtype == np.dtype('int32'): - vtype = cdms2.CdInt - missval = -2147483647 - else: - vtype = cdms2.CdFloat - missval = 1.e20 - - if newlev: - newv = file.createVariable(vname, vtype, (newtime, newlev, newlat, newlon)) - else: - newv = file.createVariable(vname, vtype, (newtime, newlat, newlon)) - for attr in ("standard_name", "long_name", "units"): - if hasattr(umvar, attr): - newv.setattribute(attr, getattr(umvar,attr)) - newv.missing_value = missval - newv.stash_section=var.stash_section[0] - newv.stash_item=var.stash_item[0] - newv._FillValue = missval - - try: - newv.units = var.units - except AttributeError: - pass - - # Get appropriate file position - # Uses 360 day calendar, all with same base time so must be 30 days on. - k = len(newtime) - # float needed here to get the later logical tests to work properly - avetime = float(MV.average(timevals[:])) # Works in either case - if k>0: - if average: - # if newtime[-1] != (avetime - 30): - # For Gregorian calendar relax this a bit - # Sometimes get differences slightly > 31 - if not 28 <= avetime - newtime[-1] <= 31.5: - raise error, "Times not consecutive %f %f %f" % (newtime[-1], avetime, timevals[0]) - else: - if k > 1: - # Need a better test that works when k = 1. This is just a - # temporary workaround - if not np.allclose( newtime[-1] + (newtime[-1]-newtime[-2]), timevals[0] ): - raise error, "Times not consecutive %f %f " % (newtime[-1], timevals[0]) - - if (30201 <= item_code <= 30303) and mask: - # P LEV/UV GRID with missing values treated as zero. - # Needs to be corrected by Heavyside fn - heavyside = d.variables['psag'] - # Check variable code as well as the name. - if heavyside.stash_item[0] != 301 or heavyside.stash_section[0] != 30: - raise error, "Heavyside variable code mismatch" - - if average: - newtime[k] = avetime - if var.shape[1] > 1: - # multiple levels - newv[k] = MV.average(var[:],axis=0).astype(np.float32) - else: - # single level - newv[k] = MV.average(var[:],axis=0)[0].astype(np.float32) - else: - for i in range(len(timevals)): - if var.shape[1] > 1: - # Multi-level - if (30201 <= item_code <= 30303) and mask: - newv[k+i] = np.where( np.greater(heavyside[i], hcrit), var[i]/heavyside[0], newv.getMissing()) - else: - newv[k+i] = var[i] - else: - newv[k+i] = var[i,0] - - newtime[k+i] = timevals[i] - - file.close() - -def usage(): - print "Usage: um2netcdf_all.py [-a] [-d] -i ifile -o suffix [--nomask]" - -def help(): - usage() - print " -i input_file (Met Office fieldsfile format)" - print " -o suffix (output file suffix, e.g. -o test means ts_test.nc) " - print " -a (calculate time average)" - print " -d Force daily time values (work around cdms error)" - -if __name__ == '__main__': - - # vname is the name to use in the output file - cell_methods = None - average = False - mask = True - ifile = None - suffix = None - forcedaily = False - xlist = [] - try: - opts, args = getopt.getopt(sys.argv[1:], 'adhi:o:x:',['nomask']) - for o, a in opts: - if o == '-a': - average = True - elif o == '-h': - help() - sys.exit(0) - elif o == '-d': - forcedaily = True - elif o == '-i': - ifile = a - elif o == '--nomask': - mask = False - elif o == '-o': - suffix = a - elif o == '-x': - for v in a.split(","): - xlist.append(int(v)) - except getopt.error: - usage() - sys.exit(1) - - process_file(ifile,suffix,average,forcedaily,mask,xlist) diff --git a/src/um2netcdf_iris.py b/src/um2netcdf_iris.py deleted file mode 100644 index 389201e1..00000000 --- a/src/um2netcdf_iris.py +++ /dev/null @@ -1,400 +0,0 @@ -#!/usr/bin/env python - -import iris, numpy as np, datetime, sys -import stashvar_cmip6 as stashvar -from iris.coords import CellMethod -import cf_units, cftime, mule -from netCDF4 import default_fillvals -from iris.fileformats.pp import PPField - -# Override the PP file calendar function to use Proleptic Gregorian rather than Gregorian. -# This matters for control runs with model years < 1600. -@property -def pg_calendar(self): - """Return the calendar of the field.""" - # TODO #577 What calendar to return when ibtim.ic in [0, 3] - calendar = cf_units.CALENDAR_PROLEPTIC_GREGORIAN - if self.lbtim.ic == 2: - calendar = cf_units.CALENDAR_360_DAY - elif self.lbtim.ic == 4: - calendar = cf_units.CALENDAR_365_DAY - return calendar -PPField.calendar = pg_calendar - -def convert_proleptic(time): - # Convert units from hours to days and shift origin from 1970 to 0001 - newunits = cf_units.Unit("days since 0001-01-01 00:00", calendar='proleptic_gregorian') - # Need a copy because can't assign to time.points[i] - tvals = np.array(time.points) - if time.bounds is not None: - tbnds = np.array(time.bounds) - has_bnds = True - else: - has_bnds = False - for i in range(len(time.points)): - date = time.units.num2date(tvals[i]) - newdate = cftime.DatetimeProlepticGregorian(date.year, date.month, date.day, date.hour, date.minute, date.second) - tvals[i] = newunits.date2num(newdate) - if has_bnds: # Fields with instantaneous data don't have bounds - for j in range(2): - date = time.units.num2date(tbnds[i][j]) - newdate = cftime.DatetimeProlepticGregorian(date.year, date.month, date.day, date.hour, date.minute, date.second) - tbnds[i][j] = newunits.date2num(newdate) - time.points = tvals - if has_bnds: - time.bounds = tbnds - time.units = newunits - -def fix_latlon_coord(cube, grid_type, dlat, dlon): - def _add_coord_bounds(coord): - if len(coord.points) > 1: - if not coord.has_bounds(): - coord.guess_bounds() - else: - # For length 1, assume it's global. guess_bounds doesn't work in this case - if coord.name() == 'latitude': - if not coord.has_bounds(): - coord.bounds = np.array([[-90.,90.]]) - elif coord.name() == 'longitude': - if not coord.has_bounds(): - coord.bounds = np.array([[0.,360.]]) - - lat = cube.coord('latitude') - # Force to double for consistency with CMOR - lat.points = lat.points.astype(np.float64) - _add_coord_bounds(lat) - lon = cube.coord('longitude') - lon.points = lon.points.astype(np.float64) - _add_coord_bounds(lon) - - lat = cube.coord('latitude') - if len(lat.points) == 180: - lat.var_name = 'lat_river' - elif (lat.points[0] == -90 and grid_type == 'EG') or \ - (np.allclose(-90.+0.5*dlat, lat.points[0]) and grid_type == 'ND'): - lat.var_name = 'lat_v' - else: - lat.var_name = 'lat' - - lon = cube.coord('longitude') - if len(lon.points) == 360: - lon.var_name = 'lon_river' - elif (lon.points[0] == 0 and grid_type == 'EG') or \ - (np.allclose(0.5*dlon, lon.points[0]) and grid_type == 'ND'): - lon.var_name = 'lon_u' - else: - lon.var_name = 'lon' - -def fix_level_coord(cube, z_rho, z_theta): - # Rename model_level_number coordinates to better distinguish rho and theta levels - try: - c_lev = cube.coord('model_level_number') - c_height = cube.coord('level_height') - c_sigma = cube.coord('sigma') - except iris.exceptions.CoordinateNotFoundError: - c_lev = None - if c_lev: - d_rho = abs(c_height.points[0]-z_rho) - if d_rho.min() < 1e-6: - c_lev.var_name = 'model_rho_level_number' - c_height.var_name = 'rho_level_height' - c_sigma.var_name = 'sigma_rho' - else: - d_theta = abs(c_height.points[0]-z_theta) - if d_theta.min() < 1e-6: - c_lev.var_name = 'model_theta_level_number' - c_height.var_name = 'theta_level_height' - c_sigma.var_name = 'sigma_theta' - - -def cubewrite(cube, sman, compression, use64bit, verbose): - try: - plevs = cube.coord('pressure') - plevs.attributes['positive'] = 'down' - plevs.convert_units('Pa') - # Otherwise they're off by 1e-10 which looks odd in ncdump - plevs.points = np.round(plevs.points,5) - if plevs.points[0] < plevs.points[-1]: - # Flip to get pressure decreasing as in CMIP6 standard - cube = iris.util.reverse(cube, 'pressure') - except iris.exceptions.CoordinateNotFoundError: - pass - if not use64bit: - if cube.data.dtype == 'float64': - cube.data = cube.data.astype(np.float32) - elif cube.data.dtype == 'int64': - cube.data = cube.data.astype(np.int32) - - # Set the missing_value attribute. Use an array to force the type to match - # the data type - if cube.data.dtype.kind == 'f': - fill_value = 1.e20 - else: - # Use netCDF defaults - fill_value = default_fillvals['%s%1d' % (cube.data.dtype.kind, cube.data.dtype.itemsize)] - - cube.attributes['missing_value'] = np.array([fill_value], cube.data.dtype) - - # If reference date is before 1600 use proleptic gregorian - # calendar and change units from hours to days - try: - reftime = cube.coord('forecast_reference_time') - time = cube.coord('time') - refdate = reftime.units.num2date(reftime.points[0]) - assert time.units.origin == 'hours since 1970-01-01 00:00:00' - if time.units.calendar == 'proleptic_gregorian' and refdate.year < 1600: - convert_proleptic(time) - else: - if time.units.calendar == 'gregorian': - new_calendar = 'proleptic_gregorian' - else: - new_calendar = time.units.calendar - time.units = cf_units.Unit("days since 1970-01-01 00:00", calendar=new_calendar) - time.points = time.points/24. - if time.bounds is not None: - time.bounds = time.bounds/24. - cube.remove_coord('forecast_period') - cube.remove_coord('forecast_reference_time') - except iris.exceptions.CoordinateNotFoundError: - # Dump files don't have forecast_reference_time - pass - - # Check whether any of the coordinates is a pseudo-dimension - # with integer values and if so reset to int32 to prevent - # problems with possible later conversion to netCDF3 - for coord in cube.coords(): - if coord.points.dtype == np.int64: - coord.points = coord.points.astype(np.int32) - - try: - # If time is a dimension but not a coordinate dimension, coord_dims('time') returns an empty tuple - if tdim := cube.coord_dims('time'): - # For fields with a pseudo-level, time may not be the first dimension - if tdim != (0,): - tdim = tdim[0] - neworder = list(range(cube.ndim)) - neworder.remove(tdim) - neworder.insert(0,tdim) - if verbose > 1: - print("Incorrect dimension order", cube) - print("Transpose to", neworder) - cube.transpose(neworder) - sman.write(cube, zlib=True, complevel=compression, unlimited_dimensions=['time'], fill_value=fill_value) - else: - tmp = iris.util.new_axis(cube,cube.coord('time')) - sman.write(tmp, zlib=True, complevel=compression, unlimited_dimensions=['time'], fill_value=fill_value) - except iris.exceptions.CoordinateNotFoundError: - # No time dimension (probably ancillary file) - sman.write(cube, zlib=True, complevel=compression, fill_value=fill_value) - -def fix_cell_methods(mtuple): - # Input is tuple of cell methods - newm = [] - for m in mtuple: - newi = [] - for i in m.intervals: - # Skip the misleading hour intervals - if i.find('hour') == -1: - newi.append(i) - n = CellMethod(m.method, m.coord_names, tuple(newi), m.comments) - newm.append(n) - return tuple(newm) - -def apply_mask(c, heaviside, hcrit): - # Function must handle case where the cube is defined on only a subset of the levels of the heaviside function - # print("Apply mask", c.shape, heaviside.shape) - if c.shape == heaviside.shape: - # If the shapes match it's simple - # Temporarily turn off warnings from 0/0 - with np.errstate(divide='ignore',invalid='ignore'): - c.data = np.ma.masked_array(c.data/heaviside.data, heaviside.data <= hcrit).astype(np.float32) - else: - # Are the levels of c a subset of the levels of the heaviside variable? - c_p = c.coord('pressure') - h_p = heaviside.coord('pressure') - # print('Levels for masking', c_p.points, h_p.points) - if set(c_p.points).issubset(h_p.points): - # Match is possible - constraint = iris.Constraint(pressure=c_p.points) - h_tmp = heaviside.extract(constraint) - # Double check they're aactually the same after extraction - if not np.all(c_p.points == h_tmp.coord('pressure').points): - raise Exception('Unexpected mismatch in levels of extracted heaviside function') - with np.errstate(divide='ignore',invalid='ignore'): - c.data = np.ma.masked_array(c.data/h_tmp.data, h_tmp.data <= hcrit).astype(np.float32) - else: - raise Exception('Unable to match levels of heaviside function to variable %s' % c.name()) - -def process(infile, outfile, args): - - # Use mule to get the model levels to help with dimension naming - # mule 2020.01.1 doesn't handle pathlib Paths properly - ff = mule.load_umfile(str(infile)) - if isinstance(ff, mule.ancil.AncilFile): - raise Exception('Ancillary files are not supported') - if ff.fixed_length_header.grid_staggering == 6: - grid_type = 'EG' - elif ff.fixed_length_header.grid_staggering == 3: - grid_type = 'ND' - else: - raise Exception("Unable to determine grid staggering from header %d" % - ff.fixed_length_header.grid_staggering) - dlat = ff.real_constants.row_spacing - dlon = ff.real_constants.col_spacing - z_rho = ff.level_dependent_constants.zsea_at_rho - z_theta = ff.level_dependent_constants.zsea_at_theta - - if args.include_list and args.exclude_list: - raise Exception("Error: include list and exclude list are mutually exclusive") - cubes = iris.load(infile) - - # Sort the list by stashcode - def keyfunc(c): - return c.attributes['STASH'] - cubes.sort(key=keyfunc) - - # Check whether there are any pressure level fields that should be - # masked. Can use temperature to mask instantaneous fields, so really - # should check whether these are time means - need_heaviside_uv = need_heaviside_t = False - have_heaviside_uv = have_heaviside_t = False - for c in cubes: - stashcode = c.attributes['STASH'] - if ( stashcode.section == 30 and - ( 201 <= stashcode.item <= 288 or 302 <= stashcode.item <= 303 )): - need_heaviside_uv = True - if stashcode.section == 30 and stashcode.item == 301: - have_heaviside_uv = True - heaviside_uv = c - if ( stashcode.section == 30 and 293 <= stashcode.item <= 298): - need_heaviside_t = True - if stashcode.section == 30 and stashcode.item == 304: - have_heaviside_t = True - heaviside_t = c - - if not args.nomask and need_heaviside_uv and not have_heaviside_uv: - print("""Warning - heaviside_uv field needed for masking pressure level data is not present. - These fields will be skipped""") - if not args.nomask and need_heaviside_t and not have_heaviside_t: - print("""Warning - heaviside_t field needed for masking pressure level data is not present. - These fields will be skipped""") - - nc_formats = {1: 'NETCDF3_CLASSIC', 2: 'NETCDF3_64BIT', - 3: 'NETCDF4', 4: 'NETCDF4_CLASSIC'} - with iris.fileformats.netcdf.Saver(outfile, nc_formats[args.nckind]) as sman: - - # Add global attributes - if not args.nohist: - history = "File %s converted with um2netcdf_iris.py v2.1 at %s" % \ - (infile, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) - sman.update_global_attributes({'history':history}) - sman.update_global_attributes({'Conventions':'CF-1.6'}) - - for c in cubes: - stashcode = c.attributes['STASH'] - itemcode = 1000*stashcode.section + stashcode.item - if args.include_list and itemcode not in args.include_list: - continue - if args.exclude_list and itemcode in args.exclude_list: - continue - umvar = stashvar.StashVar(itemcode) - if args.simple: - c.var_name = 'fld_s%2.2di%3.3d' % (stashcode.section, stashcode.item) - elif umvar.uniquename: - c.var_name = umvar.uniquename - # Could there be cases with both max and min? - if c.var_name: - if any([m.method == 'maximum' for m in c.cell_methods]): - c.var_name += "_max" - if any([m.method == 'minimum' for m in c.cell_methods]): - c.var_name += "_min" - # The iris name mapping seems wrong for these - perhaps assuming rotated grids? - if c.standard_name == 'x_wind': - c.standard_name = 'eastward_wind' - if c.standard_name == 'y_wind': - c.standard_name = 'northward_wind' - if c.standard_name and umvar.standard_name: - if c.standard_name != umvar.standard_name: - if args.verbose: - sys.stderr.write("Standard name mismatch %d %d %s %s\n" % \ - (stashcode.section, stashcode.item, c.standard_name, umvar.standard_name) ) - c.standard_name = umvar.standard_name - if c.units and umvar.units: - # Simple testing c.units == umvar.units doesn't - # catch format differences because Unit type - # works around them. repr isn't reliable either - ustr = '%s' % c.units - if ustr != umvar.units: - if args.verbose: - sys.stderr.write("Units mismatch %d %d %s %s\n" % \ - (stashcode.section, stashcode.item, c.units, umvar.units) ) - c.units = umvar.units - # Temporary work around for xconv - if c.long_name and len(c.long_name) > 110: - c.long_name = c.long_name[:110] - # If there's no standard_name or long_name from iris - # use one from STASH - if not c.standard_name: - if umvar.standard_name: - c.standard_name = umvar.standard_name - if not c.long_name: - if umvar.long_name: - c.long_name = umvar.long_name - - # Interval in cell methods isn't reliable so better to remove it. - c.cell_methods = fix_cell_methods(c.cell_methods) - try: - fix_latlon_coord(c, grid_type, dlat, dlon) - except iris.exceptions.CoordinateNotFoundError: - print('\nMissing lat/lon coordinates for variable (possible timeseries?)\n') - print(c) - raise Exception("Variable can not be processed") - fix_level_coord(c, z_rho, z_theta) - - if not args.nomask and stashcode.section == 30 and \ - (201 <= stashcode.item <= 288 or 302 <= stashcode.item <= 303): - # Pressure level data should be masked - if have_heaviside_uv: - apply_mask(c, heaviside_uv, args.hcrit) - else: - continue - if not args.nomask and stashcode.section == 30 and \ - (293 <= stashcode.item <= 298): - # Pressure level data should be masked - if have_heaviside_t: - apply_mask(c, heaviside_t, args.hcrit) - else: - continue - if args.verbose: - print(c.name(), itemcode) - cubewrite(c, sman, args.compression, args.use64bit, args.verbose) - -if __name__ == '__main__': - import sys, argparse - parser = argparse.ArgumentParser(description="Convert UM fieldsfile to netcdf") - parser.add_argument('-k', dest='nckind', required=False, type=int, - default=3, help='specify kind of netCDF format for output file: 1 classic, 2 64-bit offset, 3 netCDF-4, 4 netCDF-4 classic model. Default 3', choices=[1,2,3,4]) - parser.add_argument('-c', dest='compression', required=False, type=int, - default=4, help='compression level (0=none, 9=max). Default 4') - parser.add_argument('--64', dest='use64bit', action='store_true', - default=False, help='Use 64 bit netcdf for 64 bit input') - parser.add_argument('-v', '--verbose', dest='verbose', - action='count', default=0, help='verbose output (-vv for extra verbose)') - parser.add_argument('--include', dest='include_list', type=int, - nargs = '+', help = 'List of stash codes to include') - parser.add_argument('--exclude', dest='exclude_list', type=int, - nargs = '+', help = 'List of stash codes to exclude') - parser.add_argument('--nomask', dest='nomask', action='store_true', - default=False, help="Don't apply heaviside function mask to pressure level fields") - parser.add_argument('--nohist', dest='nohist', action='store_true', - default=False, help="Don't update history attribute") - parser.add_argument('--simple', dest='simple', action='store_true', - default=False, help="Use a simple names of form fld_s01i123.") - parser.add_argument('--hcrit', dest='hcrit', type=float, - default=0.5, help="Critical value of heavyside fn for pressure level masking (default=0.5)") - parser.add_argument('infile', help='Input file') - parser.add_argument('outfile', help='Output file') - - args = parser.parse_args() - - process(args.infile, args.outfile, args) diff --git a/src/um2netcdf_iris_mon.py b/src/um2netcdf_iris_mon.py deleted file mode 100644 index d8b93139..00000000 --- a/src/um2netcdf_iris_mon.py +++ /dev/null @@ -1,218 +0,0 @@ -# This version excludes the monthly diurnal cycle variables -from __future__ import print_function -import iris, numpy as np, datetime, sys, re -import stashvar -from iris.coords import CellMethod -import cf_units, cftime - -iris.FUTURE.netcdf_no_unlimited = True - -def convert_proleptic(time): - # Convert from hour to days and shift origin from 1970 to 0001 - t0 = cftime.DatetimeProlepticGregorian(1,1,1) - # datetime gets handled like proleptic gregorian so simple difference works - # Need a copy because can't assign to time.points[i] - tvals = np.array(time.points) - tbnds = np.array(time.bounds) - for i in range(len(time.points)): - delta = time.units.num2date(tvals[i]) - t0 - tvals[i] = delta.days + delta.seconds/86400. - delta = time.units.num2date(tbnds[i][0]) - t0 - tbnds[i][0] = delta.days + delta.seconds/86400. - delta = time.units.num2date(tbnds[i][1]) - t0 - tbnds[i][1] = delta.days + delta.seconds/86400. - time.points = tvals - time.bounds = tbnds - time.units = cf_units.Unit("days since 0001-01-01 00:00", calendar='proleptic_gregorian') - -def cubewrite(cube,sman,compression): - try: - plevs = cube.coord('pressure') - if plevs.points[0] < plevs.points[-1]: - # Flip (assuming pressure is first index) - plevs.attributes['positive'] = 'down' - # Otherwise they're off by 1e-10 which looks odd in - # ncdump - plevs.points = np.round(plevs.points,5) - if cube.coord_dims('pressure') == (0,): - cube = cube[::-1] - except iris.exceptions.CoordinateNotFoundError: - pass - if cube.data.dtype == 'float64': - cube.data = cube.data.astype(np.float32) - - # If reference date is before 1600 use proleptic gregorian - # calendar and change units from hours to days - time = cube.coord('time') - reftime = cube.coord('forecast_reference_time') - refdate = reftime.units.num2date(reftime.points[0]) - if time.units.calendar=='gregorian': - assert time.units.origin == 'hours since 1970-01-01 00:00:00' - if refdate.year < 1600: - convert_proleptic(time) - else: - time.units = cf_units.Unit("days since 1970-01-01 00:00", calendar='proleptic_gregorian') - time.points = time.points/24. - time.bounds = time.bounds/24. - cube.remove_coord('forecast_period') - cube.remove_coord('forecast_reference_time') - - # Check whether any of the coordinates is a pseudo-dimension - # with integer values and if so reset to int32 to prevent - # problems with possible later conversion to netCDF3 - for coord in cube.coords(): - if coord.points.dtype == np.int64: - coord.points = coord.points.astype(np.int32) - - try: - if cube.coord_dims('time'): - sman.write(cube, zlib=True, complevel=compression, unlimited_dimensions=['time']) - else: - tmp = iris.util.new_axis(cube,cube.coord('time')) - sman.write(tmp, zlib=True, complevel=compression, unlimited_dimensions=['time']) - except iris.exceptions.CoordinateNotFoundError: - # No time dimension (probably ancillary file) - sman.write(cube, zlib=True, complevel=compression) - -def fix_cell_methods(mtuple): - # Input is tuple of cell methods - newm = [] - for m in mtuple: - newi = [] - for i in m.intervals: - # Skip the misleading hour intervals - if i.find('hour') == -1: - newi.append(i) - n = CellMethod(m.method, m.coord_names, tuple(newi), m.comments) - newm.append(n) - return tuple(newm) - -def bounds_callback(cube,field,filename): - # This skips the monthly diurnal cycle variables from the UM - m = cube.cell_methods[0] - if m.intervals == ('24 hour',): - raise iris.exceptions.IgnoreCubeException() - -def process(infile,outfile,verbose=False,nckind=3,compression=4,nomask=False,include_list=None,exclude_list=None): - - if include_list and exclude_list: - raise Exception("Error: include list and exclude list are mutually exclusive") - cubes = iris.load(infile,callback=bounds_callback) - - # Sort the list by stashcode - def keyfunc(c): - return c.attributes['STASH'] - cubes.sort(key=keyfunc) - - # Check whether there are any pressure level fields that should be - # masked. Can use temperature to mask instantaneous fields, so really - # should check whether these are time means - need_heaviside = False - have_heaviside = False - hcrit = 0.5 - for c in cubes: - stashcode = c.attributes['STASH'] - if stashcode.section == 30 and 201 <= stashcode.item <= 303: - need_heaviside = True - if stashcode.section == 30 and stashcode.item == 301: - have_heaviside = True - heaviside = c - - if not nomask and need_heaviside and not have_heaviside: - print("""Warning - heaviside field needed for masking pressure level data is not present. - These fields will be skipped""") - - nc_formats = {1: 'NETCDF3_CLASSIC', 2: 'NETCDF3_64BIT', - 3: 'NETCDF4', 4: 'NETCDF4_CLASSIC'} - with iris.fileformats.netcdf.Saver(outfile, nc_formats[nckind]) as sman: - - # Add global attributes - history = "File %s with converted with um2netcdf_iris_mon.py at %s" % (infile, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) - sman.update_global_attributes({'history':history}) - sman.update_global_attributes({'Conventions':'CF-1.6'}) - - for c in cubes: - stashcode = c.attributes['STASH'] - itemcode = 1000*stashcode.section + stashcode.item - if include_list and itemcode not in include_list: - continue - if exclude_list and itemcode in exclude_list: - continue - umvar = stashvar.StashVar(itemcode) - if umvar.uniquename: - c.var_name = umvar.uniquename - # Could there be cases with both max and min? - if any([m.method == 'maximum' for m in c.cell_methods]): - c.var_name += "_max" - if any([m.method == 'minimum' for m in c.cell_methods]): - c.var_name += "_min" - # The iris name mapping seems wrong for these - perhaps assuming rotated grids? - if c.standard_name == 'x_wind': - c.standard_name = 'eastward_wind' - if c.standard_name == 'y_wind': - c.standard_name = 'northward_wind' - if c.standard_name and umvar.standard_name: - if c.standard_name != umvar.standard_name: - if verbose: - sys.stderr.write("Standard name mismatch %d %d %s %s\n" % (stashcode.section, stashcode.item, c.standard_name, umvar.standard_name) ) - c.standard_name = umvar.standard_name - if c.units and umvar.units: - # Simple testing c.units == umvar.units doesn't - # catch format differences becuase Unit type - # works around them. repr isn't reliable either - ustr = '%s' % c.units - if ustr != umvar.units: - if verbose: - sys.stderr.write("Units mismatch %d %d %s %s\n" % (stashcode.section, stashcode.item, c.units, umvar.units) ) - c.units = umvar.units - # Temporary work around for xconv - if c.long_name and len(c.long_name) > 110: - c.long_name = c.long_name[:110] - # If there's no standard_name or long_name from iris - # use one from STASH - if not c.standard_name: - if umvar.standard_name: - c.standard_name = umvar.standard_name - if not c.long_name: - if umvar.long_name: - c.long_name = umvar.long_name - - # Interval in cell methods isn't reliable so better to - # remove it. - c.cell_methods = fix_cell_methods(c.cell_methods) - - if stashcode.section == 30 and stashcode.item == 301: - continue - if not nomask and stashcode.section == 30 and 201 <= stashcode.item <= 303: - # Pressure level data should be masked - if have_heaviside: - # Temporarily turn off warnings from 0/0 - with np.errstate(divide='ignore',invalid='ignore'): - c.data = np.ma.masked_array(c.data/heaviside.data, heaviside.data <= hcrit).astype(np.float32) - else: - continue - if verbose: - print(c.name(), itemcode) - cubewrite(c,sman,compression) - -if __name__ == '__main__': - import sys, argparse - parser = argparse.ArgumentParser(description="Convert UM fieldsfile to netcdf") - parser.add_argument('-k', dest='kind', required=False, type=int, - default=3, help='specify kind of netCDF format for output file: 1 classic, 2 64-bit offset, 3 netCDF-4, 4 netCDF-4 classic model. Default 3', choices=[1,2,3,4]) - parser.add_argument('-c', dest='compression', required=False, type=int, - default=4, help='compression level (0=none, 9=max). Default 4') - parser.add_argument('-v', '--verbose', dest='verbose', action='store_true', - default=False, help='verbose output') - parser.add_argument('--include', dest='include', type=int, - nargs = '+', help = 'List of stash codes to include') - parser.add_argument('--exclude', dest='exclude', type=int, - nargs = '+', help = 'List of stash codes to exclude') - parser.add_argument('--nomask', dest='nomask', action='store_true', - default=False, help="Don't apply heaviside function mask to pressure level fields") - parser.add_argument('infile', help='Input file') - parser.add_argument('outfile', help='Output file') - - args = parser.parse_args() - - process(args.infile,args.outfile,args.verbose,args.kind,args.compression,args.nomask,args.include,args.exclude) diff --git a/src/um_complexity.py b/src/um_complexity.py deleted file mode 100644 index 73d779da..00000000 --- a/src/um_complexity.py +++ /dev/null @@ -1,28 +0,0 @@ -# Calculate CPMIP complexity from CM2 UM restart. -# Ignore fields 376-286 from JULES snow scheme -# Ignore CABLE fields > 833 -# Count tiled fields using 10751 land points - -# For ESM don't skip any fields and count land as 10865 - -import mule, sys - -ff = mule.DumpFile.from_file(sys.argv[1]) -esm = True - -tot = 0 -for fld in ff.fields: - if esm: - if fld.lbpack == 120: - tot += 10865 - else: - tot += 145*192 - else: - if 376 <= fld.lbuser4 <= 386 or 834 <= fld.lbuser4 <= 1000: - continue - if fld.lbpack == 120: - tot += 10751 - else: - tot += 144*192 - print(fld.lbuser4, fld.lbpack, tot) -print("TOT", tot) diff --git a/src/um_copy_field.py b/src/um_copy_field.py deleted file mode 100644 index d0152b63..00000000 --- a/src/um_copy_field.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python -# Copy one or more fields from one UM file to another -# Note that this only copies the data, not any of the header information -# (date etc). Minimal sanity checking. - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -vlist = [] -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:o:v:') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - ofile = opt[1] - elif opt[0] == '-v': - # Allow comma separated lists - for v in opt[1].split(","): - vlist.append(int(v)) -except getopt.error: - print "Usage: um_copy_field.py -i ifile -o ofile -v var" - print " Copy fields from ifile to ofile" - print " Variables specified by STASH index = Section Number * 1000 + item number" - print " May use a list specififed as -v var1,var2,..." - sys.exit(2) - -f = umfile.UMFile(ifile, "r") -g = umfile.UMFile(ofile, "r+") - -# Find the indices of the desired fields in each file. -# This assumes that each is in normal stashcode order -# (as all files produced by model are) -findex = [] -gindex = [] -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] in vlist: - findex.append(k) - -for k in range(g.fixhd[FH_LookupSize2]): - ilookup = g.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] in vlist: - gindex.append(k) - -# print "Field lengths", len(findex), len(gindex) -if len(findex) != len(gindex): - raise Exception("Files have different number of target fields %d %d" % - (len(findex), len(gindex))) - -# Loop over all the fields -for k in range(len(findex)): - ilookup = f.ilookup[findex[k]] - olookup = g.ilookup[gindex[k]] - # print "Replacing", k, ilookup[ITEM_CODE] - # Check that sizes match. Checking LBLREC here catches fields packed - # to land points - if not ( ilookup[LBLREC] == olookup[LBLREC] and - ilookup[LBNPT] == olookup[LBNPT] and - ilookup[LBROW] == olookup[LBROW] ): - print "Input data shape", ilookup[LBLREC], ilookup[LBNPT], ilookup[LBROW] - print "Output data shape", olookup[LBLREC], olookup[LBNPT], olookup[LBROW] - raise Exception("Inconsistent grid sizes") - if not ilookup[ITEM_CODE] == olookup[ITEM_CODE]: - raise Exception("Inconsistent stash codes") - a = f.readfld(findex[k]) - g.writefld(a,gindex[k]) - -g.close() diff --git a/src/um_fields_subset.py b/src/um_fields_subset.py deleted file mode 100644 index 0fd714c0..00000000 --- a/src/um_fields_subset.py +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env python -# Select a subset from a UM fieldsfile -# -p option will select only the prognostic fields required for an initial -# dump and will also check some header fields. - -# Output word size and endianness match input. - -# This doesn't change the "written" date in a dump header. - -# Martin Dix martin.dix@csiro.au - -# TODO: Specify ranges for variables. -# Give a warning if field to be excluded is not found? - -from __future__ import print_function -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * - -vlist = [] -xlist = [] -nfields = 9999999999 -prognostic = False -section = False -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:n:o:psv:x:') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-n': - nfields = int(opt[1]) - elif opt[0] == '-o': - ofile = opt[1] - elif opt[0] == '-p': - prognostic = True - elif opt[0] == '-s': - section = True - elif opt[0] == '-v': - # Allow comma separated lists - for v in opt[1].split(","): - vlist.append(int(v)) - elif opt[0] == '-x': - for v in opt[1].split(","): - xlist.append(int(v)) -except getopt.error: - print("Usage: um_fields_subset.py -i ifile -o ofile [-p] [-s] [-v var] [-x var]") - print(" -p include only prognostic (section 0,33,34) variables") - print(" -s means -x and -v specify section rather than variable indices") - print(" -v var1,var2,... to INCLUDE only these variables") - print(" -x var1,var2,... to EXCLUDE only these variables") - print(" Variables specified by STASH index = Section Number * 1000 + item number") - sys.exit(2) - -if vlist and xlist: - raise Exception("Error: -x and -v are mutually exclusive") - -if prognostic and (vlist or xlist): - raise Exception("Error: -p incompatible with explicit list of variables") - -def match(code,vlist,section): - if section: - return code//1000 in vlist - else: - return code in vlist - - -f = umfile.UMFile(ifile) - -g = umfile.UMFile(ofile, "w") -g.copyheader(f) -g.ilookup[:] = -99 # Used as missing value -g.rlookup[:] = np.frombuffer(np.array([-99],g.int).tobytes(),g.float) - -# Initial check for packed fields that require the land-sea mask -needmask=False -masksaved = False -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99 or k >= nfields: - break - # Format is Section Number * 1000 + item number - if ( prognostic and umfile.isprog(ilookup) or - vlist and match(ilookup[ITEM_CODE],vlist,section) or - xlist and not match(ilookup[ITEM_CODE],xlist,section) or - not prognostic and not vlist and not xlist ) : - packing = [0, ilookup[LBPACK]%10, ilookup[LBPACK]//10 % 10, - ilookup[LBPACK]//100 % 10, ilookup[LBPACK]//1000 % 10, - ilookup[LBPACK]//10000] - if packing[2]==2 and packing[3] in (1,2): - needmask=True - if ilookup[ITEM_CODE]==30: - masksaved = True - -if vlist and needmask and not masksaved: - print("Adding land sea mask to output fields because of packed data") - vlist.append(30) - -# Loop over all the fields, counting the number of prognostic fields -kout = 0 -nprog = 0 -ntracer = 0 -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - if ilookup[LBEGIN] == -99 or k >= nfields: - break - # Format is Section Number * 1000 + item number - - if ( prognostic and umfile.isprog(ilookup) or - vlist and match(ilookup[ITEM_CODE],vlist,section) or - xlist and not match(ilookup[ITEM_CODE],xlist,section) or - not prognostic and not vlist and not xlist ) : - - g.ilookup[kout,:] = ilookup[:] - g.rlookup[kout,:] = f.rlookup[k,:] - s = f.readfld(k,raw=True) - g.writefld(s, kout, raw=True) - # data = f.readfld(k) - # g.writefld(data, kout) - kout += 1 - if umfile.isprog(ilookup): - nprog += 1 - if umfile.istracer(ilookup): - # Should this also count UKCA fields as tracers? - ntracer += 1 - -# To get correct number of tracer fields need to divide by number of levels -ntracer /= f.inthead[IC_TracerLevs] - -# Set the header to be just large enough -g.fixhd[FH_LookupSize2] = kout -if g.fixhd[FH_NumProgFields] != nprog: - print("Resetting no of prognostic fields from %d to %d" % (g.fixhd[FH_NumProgFields], nprog)) - g.fixhd[FH_NumProgFields] = nprog -if g.inthead[IC_TracerVars] != ntracer: - print("Resetting no of tracer fields from %d to %d" % (g.inthead[IC_TracerVars], ntracer)) - g.inthead[IC_TracerVars] = ntracer -if ntracer > 0 and g.inthead[IC_TracerLevs] != g.inthead[IC_PLevels]: - print("Resetting no of tracer levels from %d to %d" % ( g.inthead[IC_TracerLevs], g.inthead[IC_PLevels])) - g.inthead[IC_TracerLevs] = g.inthead[IC_PLevels] - -g.close() diff --git a/src/um_fieldsfile_dump.py b/src/um_fieldsfile_dump.py deleted file mode 100644 index 67fbe368..00000000 --- a/src/um_fieldsfile_dump.py +++ /dev/null @@ -1,145 +0,0 @@ -#!/usr/bin/env python -# Dump header information from a UM fields file - -# Martin Dix martin.dix@csiro.au - -# TODO -# Should get the field names from rcf_headaddress_mod.F90 - -from __future__ import print_function, division -import numpy as np -import argparse, sys -from um_fileheaders import * -import umfile -try: - import stashvar -except ModuleNotFoundError: - import stashvar_cmip6 as stashvar - -parser = argparse.ArgumentParser(description="Dump contents of a UM fieldsfile") -parser.add_argument('-H', dest='header_only', action='store_true', - default=False, help='show header only') -parser.add_argument('--noheader', dest='noheader', action='store_true', - default=False, help="Don't show file header") -parser.add_argument('-s', dest='short', action='store_true', - default=False, help='short list of fields') -parser.add_argument('-S', dest='summary', action='store_true', - default=False, help='summary similar to model list of expected fields') -parser.add_argument('--nodata', dest='nodata', action='store_true', - default=False, help='Skip data summary') -parser.add_argument('infile', help='Input file') - -args = parser.parse_args() - -f = umfile.UMFile(args.infile) - -if not f.fieldsfile: - print("Not a UM fieldsfile") - sys.exit(1) - -f.readheader() - -def getlevel(ilookup): - if ilookup[LBPLEV] > 0: - # Snow variables on tiles have this as 1000*tile_index + layer - # 1001, 2001, ... 1002, 2002, ... - # Model treats these as a single variable - # Reverse this to get something that increments - if ilookup[LBPLEV] > 1000: - lev = ilookup[LBPLEV] % 1000 - tile = ilookup[LBPLEV] // 1000 - return lev*1000 + tile - else: - return ilookup[LBPLEV] - else: - if ilookup[LBLEV] == 9999: - # Used for surface fields and 0th level of multi-level fields - return 0 - else: - return ilookup[LBLEV] - -if not (args.summary or args.noheader): - f.print_fixhead() - print("Integer constants", f.inthead) - print("REAL HEADER", f.realhead) - if hasattr(f,"levdep"): - print("Level dependent constants", f.levdep) - if hasattr(f,"rowdep"): - print("Row dependent constants", f.rowdep) - if hasattr(f,"coldep"): - print("Column dependent constants", f.coldep) - -lastvar = None -nl = 0 -nfld = 0 -if not args.header_only: - - for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lblrec = ilookup[LBLREC] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - var = stashvar.StashVar(ilookup[ITEM_CODE],ilookup[MODEL_CODE]) - if not (args.short or args.summary): - print("-------------------------------------------------------------") - if args.summary: - if not lastvar: - # To get started - lastvar = ilookup[ITEM_CODE] - lastlevel = getlevel(ilookup) - nl = 1 - else: - # Just check that level increases to handle the tiled snow - # variables. - # Pressure levels should decrease - # Check that the times match, - if ( lastvar == ilookup[ITEM_CODE] and - np.all(f.ilookup[k-1][:LBLREC] == ilookup[:LBLREC]) and - ( getlevel(ilookup) > lastlevel or - ilookup[LBVC] == 8 and getlevel(ilookup) < lastlevel)): - # Same variable as previous one - lastlevel += 1 - nl += 1 - else: - var = stashvar.StashVar(lastvar,ilookup[MODEL_CODE]) - # nfld starts from 1 to match list in model output - nfld += 1 - print(nfld, nl, lastvar, var.name, var.long_name) - lastvar = ilookup[ITEM_CODE] - lastlevel = getlevel(ilookup) - nl = 1 - else: - print(k, ilookup[ITEM_CODE], var.name, var.long_name) - - if ilookup[LBCODE] == f.missval_i: - # There are some files with variables codes in headers but much - # of the rest of the data missing - print("Header data missing") - continue - if args.summary or args.short: - continue - print(f.ilookup[k, :45]) - print(f.rlookup[k, 45:]) - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - - if args.nodata: - continue - try: - data = f.readfld(k) - - # Sample values - print("Range", data.min(), data.max()) - if len(data.shape)==2: - for j in [0, nrows//4, nrows//2, 3*nrows//4, -1]: - print("%12.6g %12.6g %12.6g %12.6g %12.6g" % (data[j,0], data[j,npts//4], data[j,npts//2], data[j,3*npts//4], data[j,-1])) - except umfile.packerr: - print("Can't handle packed data") - -if args.summary: - if lastvar: - # There's one left at the end - print(nfld+1, nl, lastvar, var.name, var.long_name) - else: - print("No data fields present") diff --git a/src/um_fileheaders.py b/src/um_fileheaders.py deleted file mode 100644 index d145a842..00000000 --- a/src/um_fileheaders.py +++ /dev/null @@ -1,296 +0,0 @@ -# From rcf_headaddress_mod.F90 -# Also defined in UMDP F3 - -# Fixed length header constants - -# Values that are array indices have had one subtraced so they work properly -# with python arrays - -# Integers -FH_Version = 0 -FH_SubModel = 1 -FH_VertCoord = 2 -FH_HorizGrid = 3 -FH_Dataset = 4 -FH_RunId = 5 -FH_ExptNo = 6 -FH_CalendarType = 7 -FH_GridStagger = 8 -FH_AncilDataId = 9 -FH_ProjNo = 10 -FH_OcnBndyConds = 10 # ocean boundary condition -FH_ModelVersion = 11 -FH_OceanDynamics= 11 -FH_ObsFileType = 13 - -FH_DTYear = 20 -FH_DTMonth = 21 -FH_DTDay = 22 -FH_DTHour = 23 -FH_DTMinute = 24 -FH_DTSecond = 25 -FH_DTDayNo = 26 - -FH_VTYear = 27 -FH_VTMonth = 28 -FH_VTDay = 29 -FH_VTHour = 30 -FH_VTMinute = 31 -FH_VTSecond = 32 -FH_VTDayNo = 33 - -FH_CTYear = 34 -FH_CTMonth = 35 -FH_CTDay = 36 -FH_CTHour = 37 -FH_CTMinute = 38 -FH_CTSecond = 39 -FH_CTDayNo = 40 - -FH_IntCStart = 99 -FH_IntCSize = 100 -FH_RealCStart = 104 -FH_RealCSize = 105 -FH_LevDepCStart = 109 -FH_LevDepCSize1 = 110 -FH_LevDepCSize2 = 111 -FH_RowDepCStart = 114 -FH_RowDepCSize1 = 115 -FH_RowDepCSize2 = 116 -FH_ColDepCStart = 119 -FH_ColDepCSize1 = 120 -FH_ColDepCSize2 = 121 -FH_FldsOfCStart = 124 -FH_FldsOfCSize1 = 125 -FH_FldsOfCSize2 = 126 -FH_ExtraCStart = 129 -FH_ExtraCSize = 130 -FH_HistStart = 134 -FH_HistSize = 135 -FH_CompFldI1Start = 139 -FH_CompFldI1Size = 140 -FH_CompFldI2Start = 141 -FH_CompFldI2Size = 142 -FH_CompFldI3Start = 143 -FH_CompFldI3Size = 144 -FH_LookupStart = 149 -FH_LookupSize1 = 150 -FH_LookupSize2 = 151 -FH_NumProgFields = 152 -FH_DataStart = 159 -FH_DataSize = 160 -FH_MaxDataSize = 161 - -# These are flags values rather than indices so are unchanged -FH_Version_Value = 20 -FH_SubModel_Atmos = 1 -FH_SubModel_Ocean = 2 -FH_SubModel_Wave = 4 - -FH_VertCoord_Hybrid = 1 -FH_VertCoord_Sigma = 2 -FH_VertCoord_Pressure = 3 -FH_VertCoord_Depth = 4 -FH_VertCoord_CP = 5 -FH_VertCoord_Wave = 6 - -FH_HorizGrid_Global = 0 -FH_HorizGrid_NH = 1 -FH_HorizGrid_SH = 2 -FH_HorizGrid_LamNoWrap = 3 -FH_HorizGrid_LamWrap = 4 -FH_HorizGrid_Eq = 100 -FH_HorizGrid_LamNoWrapEq = 103 -FH_HorizGrid_LamWrapEq = 104 - -FH_GridStagger_A = 1 -FH_GridStagger_B = 2 -FH_GridStagger_C = 3 -FH_GridStagger_D = 4 -FH_GridStagger_E = 5 - -FH_Dataset_InstDump = 1 -FH_Dataset_MeanDump = 2 -FH_Dataset_FF = 3 -FH_Dataset_Ancil = 4 -FH_Dataset_Boundary = 5 -FH_Dataset_ACOBS = 6 -FH_Dataset_VAROBS = 7 -FH_Dataset_CX = 8 -FH_Dataset_COV = 9 -FH_Dataset_OBSTORE = 10 - -FH_ObsFileType_Atmos = 1 -FH_ObsFileType_Ocean = 2 -FH_ObsFileType_SST = 3 -FH_ObsFileType_Wave = 4 - -# Indices with one subtracted -IC_TorTheta = 0 #location in header -IC_TorTheta_T = 1 #value of above if T -IC_TorTheta_Theta = 2 #value of above if Theta -IC_XLen = 5 -IC_YLen = 6 -IC_PLevels = 7 -IC_WetLevels = 8 -IC_SoilTLevels = 9 -IC_NoCloudLevels = 10 # ATMOS only -IC_NoSeaPts = 10 # OCEAN only -IC_TracerLevs = 11 -IC_BLevels = 12 -IC_TracerVars = 13 -IC_HeightMethod = 16 #method for creating heights -IC_RiverRowLength= 18 #river-routing row-length -IC_RiverRows = 19 #river-routing rows -IC_MDI = 20 -IC_1stConstRho = 23 -IC_NumLandPoints = 24 -IC_NumOzoneLevs = 25 -IC_SoilMoistLevs = 27 -IC_NumObsTotal = 27 -IC_LenObCol = 28 -IC_LenCxCol = 29 # Varobs, not acobs -IC_ObsGroup = 30 # " -IC_ObsRelease = 31 # " -IC_NumMetaMax = 32 # " -IC_ConvectLevs = 33 -IC_NumItemMax = 33 # " -IC_NumObVarMax = 34 -IC_NumObPItemMax = 35 -IC_NumCxPItemMax = 36 -IC_NumCxSFVarMax = 37 -IC_NumCxUaVarMax = 38 -IC_NumMeta = 39 -IC_NumItem = 40 -IC_NumObVar = 41 -IC_NumObPItem = 42 -IC_NumCxPItem = 43 -IC_NumCxSfVar = 44 -IC_NumCxUaVar = 45 -IC_NumObLev = 46 -IC_NumCxLev = 47 -IC_NumVarBatches = 48 - -RC_LongSpacing = 0 -RC_LatSpacing = 1 -RC_FirstLat = 2 -RC_FirstLong = 3 -RC_PoleLat = 4 -RC_PoleLong = 5 -RC_SWLDEG = 6 # Ocean - lat of South wall -RC_WEDGEDEG = 7 # " = long of West bdy -RC_ModelTop = 15 -RC_PressureTop = 16 - -# Not sure what these are - -## CC_Meta_Latitude = 1 # Used in varobs -## CC_Meta_Longitude = 2 # " -## CC_Meta_Time = 3 # " -## CC_Meta_Type = 4 # " -## CC_Meta_Call = 5 # " -## CC_Meta_Level = 6 # " -## CC_Meta_RepPGE = 7 # " - -## CC_Item_Value = 1 # Used in varobs -## CC_Item_Error = 2 # " -## CC_Item_PGE = 3 # " - -## LDC_EtaTheta = 1 -## LDC_Pressure = 1 -## LDC_MLIndex = 1 -## LDC_EtaRho = 2 -## LDC_RHCrit = 3 -## SoilDepths = 4 -## LDC_ZseaTheta = 5 -## LDC_CkTheta = 6 -## LDC_ZseaRho = 7 -## LDC_CkRho = 8 - -# From clookadd.h -#!*L------------------ COMDECK LOOKADD ---------------------------------- -#!LL -#!LL Purpose : Contains information about the format -#!LL of the PP header - -# Validity time -LBYR =0 # Year -LBMON =1 # Month -LBDAT =2 # Day of month -LBHR =3 # Hour -LBMIN =4 # Minute -LBDAY =5 # Day number -LBSEC =5 # Seconds (if LBREL >= 3) - -# Data time -LBYRD =6 # Year -LBMOND =7 # Month -LBDATD =8 # Day of month -LBHRD =9 # Hour -LBMIND =10 # Minute -LBDAYD =11 # Day number -LBSECD =11 # Seconds (if LBREL >= 3) - -LBTIM =12 # Time indicator -LBFT =13 # Forcast period (hours) -LBLREC =14 # Length of data record -LBCODE =15 # Grid type code -LBHEM =16 # Hemisphere indicator -LBROW =17 # Number of rows in grid -LBNPT =18 # Number of points per row -LBEXT =19 # Length of extra data -LBPACK =20 # Packing method indicator -LBREL =21 # Header release number -LBFC =22 # Field code -LBCFC =23 # Second field code -LBPROC =24 # Processing code -LBVC =25 # Vertical coordinate type -LBRVC =26 # Coordinate type for reference level - -LBEXP =27 # Experiment number -LBEGIN =28 # Start record -LBNREC =29 # No of records-Direct access only -LBPROJ =30 # Met-O-8 projection number -LBTYP =31 # Met-O-8 field type -LBLEV =32 # Met-O-8 level code -LBRSVD1=33 # Reserved for future PP-package use -LBRSVD2=34 # Reserved for future PP-package use -LBRSVD3=35 # Reserved for future PP-package use -LBRSVD4=36 # Reserved for future PP-package use -LBSRCE =37 # =1111 to indicate following apply to UM -DATA_TYPE =38 # Indicator for real/int or timeseries -NADDR =39 # Start address in DATA_REAL or DATA_INT -LBUSER3=40 # Free for user-defined function -ITEM_CODE =41 #Stash code -LBPLEV =42 # Pseudo-level indicator (if defined) -LBUSER6=43 # Free for user-defined function -MODEL_CODE =44 # internal model identifier - -BULEV =45 # Upper level boundary -BHULEV =46 # Upper level boundary -BRSVD3 =47 # Reserved for future PP-package use -BRSVD4 =48 # Reserved for future PP-package use -BDATUM =49 # Datum value -BACC =50 # (Packed fields) Packing accuracy -BLEV =51 # Level -BRLEV =52 # Lower level boundary -BHLEV =53 # (Hybrid levels) A-level of value -BHRLEV =54 # Lower level boundary -BPLAT =55 # Real latitude of 'pseudo' N Pole -BPLON =56 # Real longitude of 'pseudo' N Pole -BGOR =57 # Grid orientation -BZY =58 # Zeroth latitude -BDY =59 # Latitude interval -BZX =60 # Zeroth longitude -BDX =61 # Longitude interval -BMDI =62 # Missing data indicator -BMKS =63 # M,K,S scaling factor - -## LBCC_LBYR = 1 # Year -## LBCC_LBMON = 2 # Month -## LBCC_LBDAT = 3 # Day of the month -## LBCC_LBHR = 4 # Hour -## LBCC_LBMIN = 5 # Minute -## LBCC_LBDAY = 6 # Day number -## LBCC_LBEGIN = 7 # Start record -## LBCC_NADDR = 8 # Start address of DATA diff --git a/src/um_grid_flip.py b/src/um_grid_flip.py deleted file mode 100644 index e74e4d16..00000000 --- a/src/um_grid_flip.py +++ /dev/null @@ -1,23 +0,0 @@ -# Flip UM ancillary file NS. Note that this works in-place in the given file -# Martin Dix martin.dix@csiro.au - - -from um_fileheaders import * -import umfile, sys - -f = umfile.UMFile(sys.argv[1], 'r+') - -print(f.realhead) -f.realhead[RC_FirstLat] = -f.realhead[RC_FirstLat] - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - rlookup = f.rlookup[k] - if ilookup[LBEGIN] == -99: - break - rlookup[BZY] *= -1 - rlookup[BDY] *= -1 - data = f.readfld(k) - f.writefld(data[::-1],k) - -f.close() diff --git a/src/um_modify_field.py b/src/um_modify_field.py deleted file mode 100644 index 9f82b37f..00000000 --- a/src/um_modify_field.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python -# Modify specified fields in a UM file - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import argparse, sys -import umfile -from um_fileheaders import * - -parser = argparse.ArgumentParser(description="Modify field in UM file with offset and scale factor, new = a*old + b.") -parser.add_argument('-a', dest='scale', type=float, default=1, help='Scale factor (default 1)') -parser.add_argument('-b', dest='offset', type=float, default=0, help='Offset (default 0)') -parser.add_argument('-v', action='append', dest='varcode', type=int, required=True, help='Variable to be modified (specified by STASH index = section_number * 1000 + item_number. -v argument may be repeated to process multiple fields.') -parser.add_argument('file', help='File to be modified') - -args = parser.parse_args() - -if args.scale == 1 and args.offset == 0: - print("Nothing to be done, a=1, b=0") - sys.exit(0) - -f = umfile.UMFile(args.file, 'r+') - -changed = False -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] == args.varcode: - a = f.readfld(k) - a[:] = a[:] * args.scale + args.offset - f.writefld(a,k) - changed = True - -if not changed: - print('Warning: no fields changed') - -f.close() diff --git a/src/um_replace_field.py b/src/um_replace_field.py deleted file mode 100644 index 768360ba..00000000 --- a/src/um_replace_field.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python - -# Replace a field in a UM fieldsfile with values from a netcdf file -# Note that this modifies the file in place -# Works with single or multi-level (include pseudo-level) fields - -# Martin Dix martin.dix@csiro.au - -from __future__ import print_function -import numpy as np -import argparse, sys, iris, umfile -from um_fileheaders import * - -parser = argparse.ArgumentParser(description="Replace field in UM file with a field from a netCDF file.") -parser.add_argument('-v', dest='varcode', type=int, required=True, - help='Variable to be replaced (specified by STASH index = section_number * 1000 + item_number') -parser.add_argument('-n', dest='ncfile', required=True, help='Input netCDF file') -parser.add_argument('-V', dest='ncvarname', required=True, help='netCDF variable name') -parser.add_argument('target', help='UM File to change') - -args = parser.parse_args() - -cube = iris.load_cube(args.ncfile,iris.Constraint(cube_func=lambda c: c.var_name==args.ncvarname)) -cube = iris.util.squeeze(cube) - -# Expect that the cube doesn't have a time dimension after the squeeze -if 'time' in cube.coords(): - print("Unexpected time dimension in input variable") - print(cube) - sys.exit(1) - -if cube.ndim == 2: - multilevel = False -elif cube.ndim == 3: - multilevel = True - nlev = cube.shape[0] - -f = umfile.UMFile(args.target, "r+") - -if hasattr(cube.data, 'mask'): - # Set missing value to match the fieldsfile missing value - arr = cube.data.filled(f.missval_r) -else: - arr = cube.data - -# Loop over all the fields -replaced = False -ilev = 0 -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if ilookup[ITEM_CODE] == args.varcode: - if multilevel: - print("Replacing field", k, ilookup[ITEM_CODE], 'level', ilev) - else: - print("Replacing field", k, ilookup[ITEM_CODE]) - # Packing - n3 = (ilookup[LBPACK] // 100) % 10 - # Don't check shape if data is packed to land or ocean points - if n3==0 and not (ilookup[LBROW], ilookup[LBNPT]) == arr.shape[-2:]: - print("\nError: array shape mismatch") - print("UM field shape", (ilookup[LBROW], ilookup[LBNPT])) - print("netcdf field shape", arr.shape) - sys.exit(1) - a = f.readfld(k) - if n3 == 0: - print("Initial sum", a.sum()) - else: - print("Initial sum", np.ma.masked_array(a,f.mask==0).sum()) - if multilevel: - a[:] = arr[ilev] - else: - a[:] = arr[:] - if n3 == 0: - print("Final sum", a.sum()) - else: - print("Final sum", np.ma.masked_array(a,f.mask==0).sum()) - f.writefld(a[:], k) - ilev += 1 - replaced = True - -if not replaced: - print("\nWarning: requested stash code %d not found in file %s" % (args.varcode, args.target)) - print("No replacement made.") - -f.close() diff --git a/src/um_timeseries.py b/src/um_timeseries.py deleted file mode 100644 index 341a22eb..00000000 --- a/src/um_timeseries.py +++ /dev/null @@ -1,458 +0,0 @@ -#!/usr/bin/env python -# Convert a UM timeseries fields file to a netcdf file. -# In general a single file can contain variables on multiple usage -# domains, so should allow for this when generating the netcdf dimensions. -# Also in general could need multiple time dimensions, though these can't -# be unlimited. -# Here assume that everything is defined at the same times. -# This is checked for, - -# Rachel's files have two domains, surface and atmospheric. However, the -# atmospheric domain may have different coordinates for u, v and T grids. - -# Need to be sure it works for different file restarting frequencies - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import collections -import argparse, sys, time -import stashvar_cmip6 as stashvar -from um_fileheaders import * -import umfile -import netCDF4 -import cdtime -import warnings - -parser = argparse.ArgumentParser(description="Convert UM timeseries file to netCDF.") -parser.add_argument('-i', dest='ifile', required=True, help='Input UM file') -parser.add_argument('-o', dest='ofile', required=True, help='Output netCDF file') -parser.add_argument('-v', '--verbose', dest='verbose', - action='count', default=0, help='verbose output (-vv for extra verbose)') -parser.add_argument('--simple', dest='simple', action='store_true', - default=False, help="Use a simple names of form fld_s01i123.") -args = parser.parse_args() - - -f = umfile.UMFile(args.ifile) -d = netCDF4.Dataset(args.ofile,"w",format='NETCDF3_CLASSIC') - -if args.verbose > 1: - f.print_fixhead() - print("REAL HEADER", f.realhead) - -# Lat and lon are incorrect with ENDGAME -eg_grid = f.fixhd[FH_GridStagger] == 6 -dlon = f.realhead[RC_LongSpacing] -dlat = f.realhead[RC_LatSpacing] -lon0 = f.realhead[RC_FirstLong] -lat0 = f.realhead[RC_FirstLat] - -# Loop over all the loookup headers to set up the netcdf file. -# Check each variable is defined on the same times. -# Use cdtime for the calendar - -if f.fixhd[FH_CalendarType] == 1: - cdtime.DefaultCalendar = cdtime.GregorianCalendar - calendar = "proleptic_gregorian" -elif f.fixhd[FH_CalendarType] == 2: - cdtime.DefaultCalendar = cdtime.Calendar360 - calendar = "360_day" -else: - raise Exception("Unsupported calendar") - -vardict = {} -setgrid = False -setsurf = False -timeunits = None - -# Check whether file contains any timeseries data -timeseries = False -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - if ilookup[LBCODE] in (31320, 31323): - timeseries = True - break - -if not timeseries: - print("File contains no timeseries data") - sys.exit(1) - -if args.verbose: - print("Number of records", f.fixhd[FH_LookupSize2]) -var = None -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - rlookup = f.rlookup[k] - if ilookup[LBCODE] not in (31320, 31323): - # Not a time series - continue - lblrec = ilookup[LBLREC] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - lbnrec = ilookup[LBNREC] # Actual size - if lbegin == -99: - break - if args.verbose: - print(f"\n*** RECORD {k} ***") - # if var and var.code == ilookup[ITEM_CODE]: - # Then this is another level of the same variable - - # Perhaps should just pass the full lookup array? - # Should this return a unique list of names ??? - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - - if not timeunits: - # Should be hidden as a function somewhere - timeunits = "days since %4.4d-%2.2d-%2.2d %2.2d:%2.2d" % (ilookup[LBYR], - ilookup[LBMON], ilookup[LBDAT], ilookup[LBHR], ilookup[LBMIN]) - - # Different variables may be saved with different steps - # Really only need to do this the first time variable is seen. - end = cdtime.comptime(ilookup[LBYRD], ilookup[LBMOND], - ilookup[LBDATD], ilookup[LBHRD], ilookup[LBMIND]) - period = end.torelative(timeunits) - step = period.value/ilookup[LBROW] - if args.verbose: - print("TIME STEP (days)", step) - # Step will probably be some integer number of minutes - step = round(1440*step,4) - if args.verbose: - print("TIME STEP (mins)", step) - - # ilookup[LBCODE] is 31320 for Gregorian timeseries, 31323 for other calendar - # rlookup[51] is level, -1 for single or special levels - f.wordseek(lbegin) # Offset rather than absolute seek? - s = f.wordread(npts*nrows) - # Where is this format for grid point values defined? - # Added by routine extra_ts_info - s = f.wordread((npts+1)*6) - x = np.frombuffer(s,np.float64).byteswap().reshape(6,npts+1) - y = np.frombuffer(s,np.int64).byteswap() - - # Need to unpack the first part and then get point values from the - # last part. This will probably only work when they're separate points - # Regions will be different? - startlats = x[0,1:] - startlons = x[1,1:] - endlats = x[2,1:] - endlons = x[3,1:] - startlevs = x[4,1:] - endlevs = x[5,1:] - - # Check whether coordinates are set properly for the EG grid - # This should be half integer - if eg_grid: - jlat = (startlats[0] - lat0)/dlat - if not np.isclose(jlat-int(jlat), 0.5): - warnings.warn("Inconsistent lat/lon for EG grid - adjusting") - startlats += 0.5*dlat - endlats += 0.5*dlat - startlons += 0.5*dlon - endlons += 0.5*dlon - - # Check whether the level is non-zero. - # Might indicate tiling? - - # This might not be necessary. Levels seem to be saved as individuals even - # when specified with a range in the UMUI. - # Perhaps not when a box is specified? - if not np.allclose(startlats,endlats) or not np.allclose(startlons,endlons): - print("STARTLATS", startlats) - print("ENDLATS", endlats) - print("STARTLONS", startlons) - print("ENDLONS", endlons) - raise Exception("Conversion doesn't support timeseries with regions at the moment") - # If there are multiple usage domains with different sets of points - # this code probably won't work. - # Should perhaps make a list of points for each variable. - - # The notation here is a bit misleading because these aren't really grids. - # but rather collections of coordinates. - - # If it's on hybrid levels, set the real height - # Use rlookup[BLEV] to check whether it's on rho or theta. - # theta levels are in f.levdep[4], rho levels in f.levdep[6] - if ilookup[LBVC] == 65: - if abs(f.levdep[4]-rlookup[BLEV]).min() < 1e-2: - # Index by theta levels. Level 0 is 0 so start at 1 - startlevs = f.levdep[4][startlevs.astype(int)] - elif abs(f.levdep[6]-rlookup[BLEV]).min() < 1e-2: - # Index by rho levels. Level 0 is first model level so start at 0 - startlevs = f.levdep[6][startlevs.astype(int)-1] - else: - print("Warning - unexpected vertical levels", ilookup[ITEM_CODE]) - print(rlookup[BLEV], f.levdep[4], f.levdep[6]) - # Pseudo level data - if ilookup[LBPLEV] > 0: - startlevs = ilookup[LBPLEV] - - # Use index to accumulate total number of times for each variable - # This should use item_code because name might not be unique - # Use var.code - if not var or ilookup[ITEM_CODE] not in vardict: - var = stashvar.StashVar(ilookup[ITEM_CODE], ilookup[MODEL_CODE]) - # Initialising with .UniqueList(startlons) doesn't work - # because the uniqueness checking isn't added to init method. - # Need to use a combined lat/lon list because each individual - # list might have repeated values, e.g. points (30, 150) and (30,155). - var.gridlist = umfile.UniqueList() - # var.latlist = umfile.UniqueList() - var.levlist = umfile.UniqueList() - # Need tuple so can use set later - var.gridlist.append([tuple(x) for x in np.column_stack((startlats,startlons)).tolist()]) - var.levlist.append(startlevs) - var.count = ilookup[LBROW] - var.step = step - var.pseudo = ilookup[LBPLEV] > 0 - vardict[ilookup[ITEM_CODE]] = var - if args.verbose: - print("Creating var", ilookup[ITEM_CODE], len(var.gridlist)) - else: - vardict[ilookup[ITEM_CODE]].gridlist.append([tuple(x) for x in np.column_stack((startlats,startlons)).tolist()]) - vardict[ilookup[ITEM_CODE]].levlist.append(startlevs) - vardict[ilookup[ITEM_CODE]].count += ilookup[LBROW] - - # vardict[ITEM_CODE]. - - if args.verbose > 1: - # print "X", x - print(f"NPTS={len(startlats)}") - print("STARTLATS", startlats) - print("STARTLONS", startlons) - print("STARTLEVS", startlevs) - print("ENDLATS", endlats) - print("LBVC", ilookup[LBVC], ilookup[LBPLEV]) - print("ENDLONS", endlons) - print("ENDLEVS", endlevs) - - if args.verbose: - print("-----------------------------------------------------------") - print(var.name, var.long_name) - print(f.ilookup[k, :45]) - print(f.rlookup[k, 45:]) - # Expect lblrec = npts*nrows + npts*9 - print("Rec size", k, lbnrec, lblrec, npts*nrows + (npts+1)*6) - print("Start time", ilookup[:5]) - print("End time", ilookup[6:11]) - print("Level type", ilookup[LBVC]) - print("Forecast period", ilookup[LBFT]) - print("Rows", ilookup[LBROW]) - print("Data type", ilookup[DATA_TYPE]) - print("Level", ilookup[LBLEV]) - print("Pseudo level", ilookup[LBPLEV]) - - - -# # Update lists of point coordinates -# # in a dictionary? -# # vardict[var.code].count += ilookup[LBROW] ??? -# # Should also check that the grids match -# vtmp = vardict[var.code] -# vtmp.count += ilookup[LBROW] -# vardict[var.code] = vtmp - -# # var.step = step -# # var.lon = lon # So we can find the correct axes later -# # var.lat = lat -# # var.lev = lev -# print "Adding to dictionary", var.name #, var.lon.lev -# var.count = ilookup[LBROW] -# # vardict[var.code] = var - -# Global attributes -d.history = "%s Created by um_timeseries.py from file %s" % (time.strftime("%Y-%m-%d %H:%M"), args.ifile) - -# Distinct coordinates -# Convert lists to tuples so they're hashable. -ugrid = sorted(list(set([tuple(v.gridlist) for v in vardict.values()]))) -# ulat = sorted(list(set([tuple(v.latlist) for v in vardict.values()]))) -ulev = sorted(list(set([tuple(v.levlist) for v in vardict.values()]))) -if args.verbose: - print("Number of distinct coordinate sets", len(ugrid), len(ulev)) - print("Unique gridpts", ugrid) - - -for k in range(len(ulev)): - lev = ulev[k] - if args.verbose: - print("LEVLIST", k, lev) - if not (max(lev) == min(lev) == 1): - dname = "lev_%d" % k - d.createDimension(dname,len(lev)) - levsvar = d.createVariable("lev_%d"%k, "f", (dname,)) - # Need to get the appropriate level type and the proper values - # rather than just indices. - if abs(f.levdep[4]-lev[0]).min() < 1e-4: - levsvar.long_name = "Model theta levels" - levsvar.units = 'm' - elif abs(f.levdep[6]-lev[0]).min() < 1e-4: - levsvar.long_name = "Model rho levels" - levsvar.units = 'm' - else: - levsvar.long_name = "Model levels" - levsvar.axis='Z' - levsvar[:] = np.array(lev).astype(np.float32) - -# Length of ulon and ulat must be the same -for k in range(len(ugrid)): - grid = ugrid[k] - dname = "gridpts_%d" % k - vname = "lon_%d" % k - d.createDimension(dname,len(grid)) - lonsvar = d.createVariable(vname, "f", (dname,)) - lonsvar.long_name = "longitude" - lonsvar.units = "degrees_east" - lon = [p[1] for p in grid] - lonsvar[:] = np.array(lon).astype(np.float32) - vname = "lat_%d" % k - latsvar = d.createVariable(vname, "f", (dname,)) - latsvar.long_name = "latitude" - latsvar.units = "degrees_north" - lat = [p[0] for p in grid] - latsvar[:] = np.array(lat).astype(np.float32) - -# Assume a single time index per file. -# Check that each variable has the same time axis. - -# Variables on pseudo-levels are saved as separate records due to a UM limitation -# Correct the time count -for v in vardict.values(): - if v.pseudo: - v.count = v.count // len(v.levlist) - -# Make a list of the times -times = [v.count for v in vardict.values()] -tset = set(times) # To get unique times -tlist = list(tset) -tlist.sort() -steps = [v.step for v in vardict.values()] -stepset = set(steps) # To get unique times -steplist = list(stepset) -steplist.sort(reverse=True) - -# Check these have same lengths, otherwise there's some inconsistency -if len(steplist) != len(tlist): - raise Exception("Inconsistency in lengths of time and step lists %d, %d" % (len(tlist), len(steplist))) - -for k, nt in enumerate(tlist): - if len(tlist) > 1: - name = "time_%d" % k - else: - name = "time" - timedim = d.createDimension(name, nt) - timevar = d.createVariable(name, "f", (name,)) - timevar.units = timeunits - timevar.calendar = calendar - tval = cdtime.reltime(0,timeunits) - for t in range(nt): - timevar[t] = tval.value - tval = tval.add(steplist[k], cdtime.Minutes) - -# Create the variables -# Use of filevars here won't handle multiple use of the same variable -# with different profiles. -filevars = {} -dims = {} -for vcode in vardict: - var = vardict[vcode] - if args.simple: - vname = f'fld_s{var.code//1000:02d}i{var.code%1000:02d}' - else: - vname = var.name - # Match all the dimensions - if len(tlist) > 1: - timedim = "time_%d" % tlist.index(var.count) - else: - timedim = "time" - if min(var.levlist) == max(var.levlist) == 1: - levdim = None - else: - levdim = "lev_%d" % ulev.index(tuple(var.levlist)) - gridd = ugrid.index(tuple(var.gridlist)) - griddim = "gridpts_%d" % gridd - if vname in d.variables.keys(): - # Need to generalise this properly - vname = vname + "_2" - if levdim: - if args.verbose: - print("Creating %s with %s, %s, %s" % (vname, timedim, levdim, griddim)) - newvar = d.createVariable(vname, "f", (timedim, levdim, griddim)) - else: - if args.verbose: - print("Creating %s (%d) with %s, %s" % (vname, vcode, timedim, griddim)) - newvar = d.createVariable(vname, "f", (timedim, griddim)) - newvar.long_name = var.long_name - if var.units: - newvar.units = var.units - if var.standard_name: - newvar.standard_name = var.standard_name - newvar.longitude = "longitude_%d" % gridd - newvar.latitude = "latitude_%d" % gridd - section = var.code // 1000 - item = var.code % 1000 - newvar.um_stash_source = f'm01s{section:02d}i{item:03d}' - filevars[vcode] = newvar - # This is a transposed list because that's the order it's needed in later - dims[vcode] = (len(var.gridlist), len(var.levlist)) - -countvar = collections.defaultdict(int) -for i in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[i] - lblrec = ilookup[LBLREC] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - lbnrec = ilookup[LBNREC] # Actual size - item_code = ilookup[ITEM_CODE] - - if lbegin == -99: - break - var = stashvar.StashVar(item_code,ilookup[MODEL_CODE]) - - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - f.wordseek(lbegin) -# Need to apply this everywhere, also for reading lats and lons. -## if ilookup[LBPACK] == 0: -## s = f.wordread(npts*nrows) -## data = np.reshape( np.frombuffer(s, np.float64).byteswap(), [nrows, npts]) -## elif ilookup[LBPACK] == 2: -## s = f.wordread((npts*nrows)//2) -## data = np.reshape( np.frombuffer(s, np.float32).byteswap(), [nrows, npts]) -## else: -## raise "Unsupported packing type %d" % ilookup[LBPACK] - s = f.wordread(npts*nrows) - data = np.reshape(np.frombuffer(s, np.float64).byteswap(), [nrows, npts]) - if args.verbose: - print("DATA", data) - - start = countvar[item_code] - countvar[item_code] += ilookup[LBROW] - - # Shouldn't need to keep doing this - #var = stashvar.StashVar(ilookup[ITEM_CODE], ilookup[MODEL_CODE]) - #filevar = d.variables[var.name] - # Data ranges over levels first, then grid points -# print "SHAPES", data.shape, start, ilookup[LBROW] -# print "DATA", data[0] - - # When is shape[0] not 1 - multiple gridpoints? - for k in range(data.shape[0]): - tmp = data[k] - # Special handling of pseudo-levels - if vardict[item_code].pseudo: - nlev = filevars[item_code].shape[1] - tstart = start // nlev - lstart = start % nlev - filevars[item_code][tstart,lstart] = tmp.astype(np.float32)[0] - else: - tmp.shape = dims[item_code] - tmp = tmp.transpose() - if len(filevars[item_code].shape) == 3: - # Level dimension - filevars[item_code][start+k] = tmp.astype(np.float32) - else: - # tmp has a trivial level dimension - filevars[item_code][start+k] = tmp.astype(np.float32)[0] - - -d.close() diff --git a/src/um_zero_field.py b/src/um_zero_field.py deleted file mode 100644 index 72361aae..00000000 --- a/src/um_zero_field.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python -# Zero specified fields in a UM file - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import argparse, sys -import umfile -from um_fileheaders import * - -parser = argparse.ArgumentParser(description="Set fields in UM file to zero") -parser.add_argument('-v', dest='var', type=int, default=None, - nargs = '+', help = 'List of stash codes to zero (default is all)') -parser.add_argument('file', help='File to process (overwritten)') - -args = parser.parse_args() - -f = umfile.UMFile(args.file, 'r+') - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - break - if not args.var or ilookup[ITEM_CODE] in args.var: - print("Zeroing field", k, 'stash code', ilookup[ITEM_CODE]) - a = f.readfld(k) - a[:] = 0. - f.writefld(a,k) - -f.close() diff --git a/src/umfile.py b/src/umfile.py deleted file mode 100644 index 2b8f9a82..00000000 --- a/src/umfile.py +++ /dev/null @@ -1,481 +0,0 @@ -from __future__ import print_function -from um_fileheaders import * -import numpy as np -from six.moves import builtins -import types - -class umfile_error(Exception): - pass - -class packerr(Exception): - pass - -class UMFile(): - # Should this inherit from io.something? - """ Extended version of file class that uses 8 byte words """ - - missval_i = -32768 - missval_r = -1073741824 - - def __init__(self, filename, mode=None): - if not mode: - mode = 'rb' - if not "b" in mode: - mode += "b" - self.fileobj = builtins.open(filename, mode) - if "r" in mode: - self.determine_file_type() - self.readheader() - self.readlookup() - self.sectorsize = self.getsectorsize() - self.mask = None - self.nland = None - - def close(self): - # Unless file was opened readonly, need to write the new header - # information before closing. - if not self.fileobj.mode == 'r': - self.writeheader() - self.writelookup() - self.fileobj.close() - - def wordseek(self,offset): - self.fileobj.seek(offset*self.wordsize) - - def wordread(self,size): - return self.fileobj.read(size*self.wordsize) - - def arraywrite(self,array): - # Could use tofile here, but no real advantage. - # Need to check whether the native format is big or little - # Here assuming little - if array.dtype.byteorder == self.byteorder: - return self.fileobj.write(array.tobytes()) - else: - return self.fileobj.write(array.byteswap().tobytes()) - - def determine_file_type(self): - # Get word length and byte order? - # Read first 16 bytes and try to interpret in various ways - self.fileobj.seek(0) - s = self.fileobj.read(16) - # For a UM fieldsfile, first word should be 20 and second 1, 2, or 4 - # For ancillary file first word -32768 - # Include = in the test to make output easier - self.fieldsfile = False - self.ppfile = False - for endian in ('=', '>', '<'): - h = np.fromstring(s,np.int64).newbyteorder(endian) - # print "testing 64 bit", h[:2] - if h[0] in [15, 20, -32768] and h[1] in (1, 2, 4): - self.byteorder = endian - self.wordsize = 8 - self.int = np.int64 - self.float = np.float64 - self.fieldsfile = True - return - h = np.fromstring(s,np.int32).newbyteorder(endian) - # print "testing 32 bit", h[:2] - if h[0] in [15, 20, -32768] and h[1] in (1, 2, 4): - self.byteorder = endian - self.wordsize = 4 - self.int = np.int32 - self.float = np.float32 - self.fieldsfile = True - return - if h[0] == 256: - self.byteorder = endian - self.wordsize = 4 - self.int = np.int32 - self.float = np.float32 - self.ppfile = True - return - raise umfile_error("Error - file type not determined") - - def readheader(self): - if not self.fieldsfile: - return - self.fileobj.seek(0) - # Fixed length header of length 256 - s = self.wordread(256) - self.fixhd = np.fromstring(s,self.int).newbyteorder(self.byteorder) - - # Integer constants - self.wordseek(self.fixhd[FH_IntCStart]-1) - nint = self.fixhd[FH_IntCSize] - s = self.wordread(nint) - self.inthead = np.fromstring(s,self.int).newbyteorder(self.byteorder) - - # Real constants - self.wordseek(self.fixhd[FH_RealCStart]-1) - nreal = self.fixhd[FH_RealCSize] - s = self.wordread(nreal) - self.realhead = np.fromstring(s,self.float).newbyteorder(self.byteorder) - - # Level dependent constants - if self.fixhd[FH_LevDepCStart] > 0: - self.wordseek(self.fixhd[FH_LevDepCStart]-1) - nlconst = self.fixhd[FH_LevDepCSize1]*self.fixhd[FH_LevDepCSize2] - s=self.wordread(nlconst) - self.levdep = np.fromstring(s,self.float).newbyteorder(self.byteorder) - self.levdep.shape=(self.fixhd[FH_LevDepCSize2],self.fixhd[FH_LevDepCSize1]) - - # Row dependent constants - if self.fixhd[FH_RowDepCStart] > 0: - self.wordseek(self.fixhd[FH_RowDepCStart]-1) - nlconst = self.fixhd[FH_RowDepCSize1]*self.fixhd[FH_RowDepCSize2] - s=self.wordread(nlconst) - self.rowdep = np.fromstring(s,self.float).newbyteorder(self.byteorder) - self.rowdep.shape=(self.fixhd[FH_RowDepCSize2],self.fixhd[FH_RowDepCSize1]) - - # Column dependent constants - if self.fixhd[FH_ColDepCStart] > 0: - self.wordseek(self.fixhd[FH_ColDepCStart]-1) - nlconst = self.fixhd[FH_ColDepCSize1]*self.fixhd[FH_ColDepCSize2] - s=self.wordread(nlconst) - # Should reshape this to a 2D array - self.coldep = np.fromstring(s,self.float).newbyteorder(self.byteorder) - self.coldep.shape=(self.fixhd[FH_ColDepCSize2],self.fixhd[FH_ColDepCSize1]) - - def getsectorsize(self): - # Calculate sectorsize as gcd of the data offsets. - # Assume it's not larger than default 2048 - sector = gcd(2048,self.fixhd[FH_DataStart] - 1) # Actual start off by 1. - for k in range(self.fixhd[FH_LookupSize2]): - if self.ilookup[k,LBEGIN] == -99: - break - sector = gcd(sector,self.ilookup[k,LBNREC]) - return sector - - def createheader(self, intsize, realsize, levdepdim1=0, levdepdim2=0): - # Create a standard header, given level dependent constants as arguments - # Lengths of other sections may be version dependent? - # Fixed length header of length 256 - self.fixhd = np.zeros(256,self.int) - - # Integer constants - self.inthead = np.zeros(intsize,self.int) - - # Real constants - self.realhead = np.zeros(realsize,self.float) - - # Level dependent constants - if levdepdim1 > 0 and levdepdim2 > 0: - self.levdep = np.zeros((levdepdim2,levdepdim1),self.float) - - def copyheader(self,f): - """Copy all the header properties from specified open file""" - - for attr in ["wordsize", "byteorder", "int", "float", "fieldsfile", - "ppfile"]: - setattr(self, attr, getattr(f,attr)) - - # Array attributes need to be copied. - for attr in ["fixhd", "realhead", "inthead"]: - setattr(self, attr, getattr(f,attr).copy()) - - # These ones need not exist - for attr in ["levdep", "rowdep", "coldep"]: - if hasattr(f, attr): - setattr(self, attr, getattr(f,attr).copy()) - - self.ilookup = f.ilookup.copy() - self.rlookup = f.rlookup.copy() - self.sectorsize = f.sectorsize - - def writeheader(self): - # Header must already be defined by copying or creating - # Fixed length header of length 256 - self.wordseek(0) - self.arraywrite(self.fixhd) - - # Integer constants - self.wordseek(self.fixhd[FH_IntCStart]-1) - self.arraywrite(self.inthead) - - # Real constants - self.wordseek(self.fixhd[FH_RealCStart]-1) - self.arraywrite(self.realhead) - - # Level dependent constants - if self.fixhd[FH_LevDepCStart] > 0: - self.wordseek(self.fixhd[FH_LevDepCStart]-1) - self.arraywrite(self.levdep) - - if self.fixhd[FH_RowDepCStart] > 0: - self.wordseek(self.fixhd[FH_RowDepCStart]-1) - self.arraywrite(self.rowdep) - - if self.fixhd[FH_ColDepCStart] > 0: - self.wordseek(self.fixhd[FH_ColDepCStart]-1) - self.arraywrite(self.coldep) - - - def readlookup(self): - lookdim1 = self.fixhd[FH_LookupSize1] - lookdim2 = self.fixhd[FH_LookupSize2] - # Read lookup - self.wordseek(self.fixhd[FH_LookupStart]-1) - s = self.wordread(lookdim1*lookdim2) - - # The lookup table has separate integer 1;45 and real 46-64 sections - # Simplest to have duplicate integer and real versions and just index - # into the appropriate parts - # Is it possible to make just make them views of the same data? - if lookdim1 != 64: - raise umfile_error("Unexpected lookup table dimension %d %d" % (lookdim1, lookdim2)) - - self.ilookup = np.reshape( np.fromstring(s, self.int).newbyteorder(self.byteorder), [lookdim2, lookdim1]) - self.rlookup = np.reshape( np.fromstring(s, self.float).newbyteorder(self.byteorder), [lookdim2, lookdim1]) - - def print_fixhead(self): - print("FIXED HEADER") - for i in range(256): - if i % 8 == 0: - print("%5d:" % i,end="") - if self.fixhd[i] == self.missval_i or self.fixhd[i] == self.missval_r: - # -32768 is integer missing value, -1073741824 is an FP NaN - print(" _",end="") - else: - print("%8d" % self.fixhd[i],end="") - if i % 8 == 7: - print() - - def getmask(self): - # Is it already defined - if self.mask != None: - return - # Get the land sea mask, code 30 - for k in range(self.fixhd[FH_LookupSize2]): - if self.ilookup[k,LBEGIN] == -99: - break - if self.ilookup[k,ITEM_CODE] == 30: - self.mask = self.readfld(k) - self.nland = np.sum(self.mask!=0) - return - raise packerr("Land sea mask required for packing/unpacking") - - def readfld(self, k, raw=False): - # Read field number k - ilookup = self.ilookup[k] - lbnrec = ilookup[LBNREC] # Size padded to record size - lblrec = ilookup[LBLREC] # Actual size w/o padding - lbegin = ilookup[LBEGIN] # lbegin is offset from start - - self.wordseek(lbegin) - s = self.wordread(lbnrec) - - if raw: - return s - - packing = [0, ilookup[LBPACK]%10, ilookup[LBPACK]//10 % 10, - ilookup[LBPACK]//100 % 10, ilookup[LBPACK]//1000 % 10, - ilookup[LBPACK]//10000] - if packing[1] == 0: - # IEEE at same precision as the file - nbytes = lblrec*self.wordsize - if ilookup[DATA_TYPE]==1: - dtype = self.float - else: - # Treat integer and logical together - dtype = self.int - elif packing[1] == 2: - # 32 bit IEEE - nbytes = lblrec*4 - if ilookup[DATA_TYPE]==1: - dtype = np.float32 - else: - dtype = np.int32 - else: - raise packerr("Packing with N1 = %d not supported" % packing[1]) - - if packing[2] == 0: - # No compression - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - # print "S", len(s), nbytes, len(np.fromstring(s[:nbytes], ftype)) - if nrows*npts == ilookup[LBLREC]: - # As expected - data = np.reshape( np.fromstring(s[:nbytes], dtype).newbyteorder(self.byteorder), [nrows, npts]) - else: - # There are some fields (accumulated runoff) that are packed to - # land points, but don't have packing set correctly - data = np.fromstring(s[:nbytes], dtype).newbyteorder(self.byteorder) - elif packing[2] == 2: - # Compressed using mask, nlon, nlat are the values from the land - # sea mask - if self.mask is None: - self.getmask() - nrows, npts = self.mask.shape - tmp = np.fromstring(s[:nbytes], dtype).newbyteorder(self.byteorder) - # Set output array to missing, forcing the missing value to the - # correct type. - data = np.zeros((nrows,npts), dtype) + np.array([self.missval_r], dtype) - if packing[3]==1: - # Use land mask (non-zero) values - # Should check the sizes match that expected - data.flat[self.mask.flat!=0] = tmp - else: - # Ocean values - data.flat[self.mask.flat==0] = tmp - else: - raise packerr("Packing with N2 = %d not supported - field code %d" % (packing[2],ilookup[ITEM_CODE])) - - return data - - def writefld(self, data, k, raw=False, overwrite=False): - # write the kth field - if overwrite: - filepos = self.ilookup[k,LBEGIN] - else: - if k==0: - filepos = self.fixhd[FH_DataStart] - 1 - else: - filepos = self.ilookup[k-1,LBEGIN] + self.ilookup[k-1,LBNREC] - self.wordseek(filepos) - - # If overwriting a field in an existing file don't change the header - if not overwrite: - self.ilookup[k,LBEGIN] = filepos - - # Need to set the output record size here - if self.fixhd[FH_Dataset] == 3: - # Fieldsfile, NADDR is relative to start of fixed length header - # (i.e. relative to start of file) - self.ilookup[k,NADDR] = filepos - else: - # Ancillary files behave like dumps? - # NADDR is relative to start of data. Note that this uses LBLREC - # so ignores the packing and the record padding. No relation to - # the actual disk address in LBEGIN. - if k == 0: - self.ilookup[k,NADDR] = 1 - else: - self.ilookup[k,NADDR] = self.ilookup[k-1,NADDR] + self.ilookup[k-1,LBLREC] - - - if raw: - # Data is just array of bytes - self.fileobj.write(data) - # Header is unchanged - return - else: - # Need to pack properly - packing = [0, self.ilookup[k,LBPACK]%10, self.ilookup[k,LBPACK]//10 % 10, - self.ilookup[k,LBPACK]//100 % 10, self.ilookup[k,LBPACK]//1000 % 10, - self.ilookup[k,LBPACK]//10000] - # First consider packing to land or sea points - if packing[2] == 0: - # No packing - packdata = data - elif packing[2] == 2: - if self.mask is None: - self.getmask() - # Need to restore the file pointer after the mask read - self.wordseek(filepos) - if packing[3]==1: - # Use land mask (non-zero) values - # Should check the sizes match that expected - packdata = data[self.mask!=0] - else: - # Ocean values - packdata = data[self.mask==0] - else: - raise packerr("Packing with N2 = %d not supported - field code %d" % (packing[2],self.ilookup[k,ITEM_CODE])) - - # Now write the data - # arraywrite could actually return the sizes? - lblrec = packdata.size - - self.arraywrite(packdata) - - if not overwrite: - # Make the sector size a variable? - self.ilookup[k,LBLREC] = lblrec - if packing[1] == 2 and self.wordsize == 8: - size = (lblrec+1)/2 - else: - size = lblrec - lbnrec = int(np.ceil(size/float(self.sectorsize))) * self.sectorsize - self.ilookup[k,LBNREC] = lbnrec - - def writelookup(self): - # lookdim1 = self.fixhd[FH_LookupSize1] - # lookdim2 = self.fixhd[FH_LookupSize2] - # For compatibility with the old version use the full size - lookdim2, lookdim1 = self.ilookup.shape - # Need to combine the ilookup and rlookup arrays to a single array - # Convert the float part to an integer array - lookup = np.fromstring(self.rlookup[:lookdim2,:].tobytes(),self.int).newbyteorder(self.byteorder) - # Now copy the true integer part on top - lookup.shape = (lookdim2, lookdim1) - lookup[:,:45] = self.ilookup[:,:45] - - self.wordseek(self.fixhd[FH_LookupStart]-1) - self.arraywrite(lookup) - - - -class Axis: - def __init__(self,name,values): - # Should check name is lat, lon or lev and that the values are - # appropriate for the axis type. - self.name = name - self.values = values - - def __eq__(self, a): - if self.name == a.name and len(self.values) == len(a.values): - return np.allclose(self.values, a.values) - else: - return False - -def gcd(a,b): - while a > 0: - c = b%a - b = a - a = c - return b - -class UniqueList(list): - # List without duplicates - def append(self,a): - if type(a) in [types.ListType,np.ndarray]: - for x in a: - if not x in self: - list.append(self,x) - else: - if not a in self: - list.append(self,a) - -class Grid: - def __init__(self, lon, lat, lev): - # Check that dimensions match - # Really only for timeseries? - if len(lat) == len(lon) == len(lev): - self.lon = lon - self.lat = lat - self.lev = lev - else: - raise umfile_error("Inconsistent grids") - - def __eq__(self, g): - if len(self.lon) == len(g.lon) and len(self.lat) == len(g.lat) and len(self.lev) == len(g.lev): - return np.allclose(self.lon, g.lon) and np.allclose(self.lat, g.lat) \ - and np.allclose(self.lev, g.lev) - else: - return False - -def isprog(ilookup): - # Check whether a STASH code corresponds to a prognostic variable. - # Section 33 is tracers, 34 is UKCA - # Also check whether variable is instantaneous, LBTIM < 10 - # No time processing ilookup[LBPROC] == 0 - # Not a time series LBCODE < 30000 - # Also 3100 - 3129 seem to be treated as prognostics - varcheck = ilookup[ITEM_CODE]//1000 in [0,33,34] or \ - 3100 <= ilookup[ITEM_CODE] <= 3129 - timecheck = ilookup[LBTIM] < 10 and ilookup[LBPROC] == 0 and ilookup[LBCODE] < 30000 - return varcheck and timecheck - -def istracer(ilookup): - return ilookup[ITEM_CODE]//1000 == 33 and ilookup[LBTIM] < 10 and ilookup[LBPROC] == 0 and ilookup[LBCODE] < 30000 diff --git a/src/umfile_utils/__init__.py b/src/umfile_utils/__init__.py new file mode 100644 index 00000000..96e13be6 --- /dev/null +++ b/src/umfile_utils/__init__.py @@ -0,0 +1,2 @@ +from umfile_utils import _version +__version__ = _version.get_versions()["version"] diff --git a/src/umfile_utils/__pycache__/__init__.cpython-311.pyc b/src/umfile_utils/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 00000000..393cd5c6 Binary files /dev/null and b/src/umfile_utils/__pycache__/__init__.cpython-311.pyc differ diff --git a/src/umfile_utils/__pycache__/_version.cpython-311.pyc b/src/umfile_utils/__pycache__/_version.cpython-311.pyc new file mode 100644 index 00000000..b545e92d Binary files /dev/null and b/src/umfile_utils/__pycache__/_version.cpython-311.pyc differ diff --git a/src/umfile_utils/__pycache__/perturbIC.cpython-311.pyc b/src/umfile_utils/__pycache__/perturbIC.cpython-311.pyc new file mode 100644 index 00000000..838fc4a6 Binary files /dev/null and b/src/umfile_utils/__pycache__/perturbIC.cpython-311.pyc differ diff --git a/src/umfile_utils/_version.py b/src/umfile_utils/_version.py new file mode 100644 index 00000000..6ae7bead --- /dev/null +++ b/src/umfile_utils/_version.py @@ -0,0 +1,682 @@ +# This file helps to compute a version number in source trees obtained from +# git-archive tarball (such as those provided by githubs download-from-tag +# feature). Distribution tarballs (built by setup.py sdist) and build +# directories (produced by setup.py build) will contain a much shorter file +# that just contains the computed version number. + +# This file is released into the public domain. +# Generated by versioneer-0.29 +# https://github.com/python-versioneer/python-versioneer + +"""Git implementation of _version.py.""" + +import errno +import os +import re +import subprocess +import sys +from typing import Any, Callable, Dict, List, Optional, Tuple +import functools + + +def get_keywords() -> Dict[str, str]: + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must + # each be defined on a line of their own. _version.py will just call + # get_keywords(). + git_refnames = "$Format:%d$" + git_full = "$Format:%H$" + git_date = "$Format:%ci$" + keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} + return keywords + + +class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + + VCS: str + style: str + tag_prefix: str + parentdir_prefix: str + versionfile_source: str + verbose: bool + + +def get_config() -> VersioneerConfig: + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py + cfg = VersioneerConfig() + cfg.VCS = "git" + cfg.style = "pep440" + cfg.tag_prefix = "" + cfg.parentdir_prefix = "umpost-" + cfg.versionfile_source = "umpost/_version.py" + cfg.verbose = False + return cfg + + +class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +LONG_VERSION_PY: Dict[str, str] = {} +HANDLERS: Dict[str, Dict[str, Callable]] = {} + + +def register_vcs_handler(vcs: str, method: str) -> Callable: # decorator + """Create decorator to mark a method as the handler of a VCS.""" + def decorate(f: Callable) -> Callable: + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} + HANDLERS[vcs][method] = f + return f + return decorate + + +def run_command( + commands: List[str], + args: List[str], + cwd: Optional[str] = None, + verbose: bool = False, + hide_stderr: bool = False, + env: Optional[Dict[str, str]] = None, +) -> Tuple[Optional[str], Optional[int]]: + """Call the given command(s).""" + assert isinstance(commands, list) + process = None + + popen_kwargs: Dict[str, Any] = {} + if sys.platform == "win32": + # This hides the console window if pythonw.exe is used + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + popen_kwargs["startupinfo"] = startupinfo + + for command in commands: + try: + dispcmd = str([command] + args) + # remember shell=False, so use git.cmd on windows, not just git + process = subprocess.Popen([command] + args, cwd=cwd, env=env, + stdout=subprocess.PIPE, + stderr=(subprocess.PIPE if hide_stderr + else None), **popen_kwargs) + break + except OSError as e: + if e.errno == errno.ENOENT: + continue + if verbose: + print("unable to run %s" % dispcmd) + print(e) + return None, None + else: + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None + stdout = process.communicate()[0].strip().decode() + if process.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) + return None, process.returncode + return stdout, process.returncode + + +def versions_from_parentdir( + parentdir_prefix: str, + root: str, + verbose: bool, +) -> Dict[str, Any]: + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both + the project name and a version string. We will also support searching up + two directory levels for an appropriately named parent directory + """ + rootdirs = [] + + for _ in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} + rootdirs.append(root) + root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %s but none started with prefix %s" % + (str(rootdirs), parentdir_prefix)) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + +@register_vcs_handler("git", "get_keywords") +def git_get_keywords(versionfile_abs: str) -> Dict[str, str]: + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. + keywords: Dict[str, str] = {} + try: + with open(versionfile_abs, "r") as fobj: + for line in fobj: + if line.strip().startswith("git_refnames ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["refnames"] = mo.group(1) + if line.strip().startswith("git_full ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["full"] = mo.group(1) + if line.strip().startswith("git_date ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["date"] = mo.group(1) + except OSError: + pass + return keywords + + +@register_vcs_handler("git", "keywords") +def git_versions_from_keywords( + keywords: Dict[str, str], + tag_prefix: str, + verbose: bool, +) -> Dict[str, Any]: + """Get version information from git keywords.""" + if "refnames" not in keywords: + raise NotThisMethod("Short version file found") + date = keywords.get("date") + if date is not None: + # Use only the last line. Previous lines may contain GPG signature + # information. + date = date.splitlines()[-1] + + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because + # it's been around since git-1.5.3, and it's too difficult to + # discover which version we're using, or to work around using an + # older one. + date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + refnames = keywords["refnames"].strip() + if refnames.startswith("$Format"): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") + refs = {r.strip() for r in refnames.strip("()").split(",")} + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " + tags = {r[len(TAG):] for r in refs if r.startswith(TAG)} + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d + # expansion behaves like git log --decorate=short and strips out the + # refs/heads/ and refs/tags/ prefixes that would let us distinguish + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". + tags = {r for r in refs if re.search(r'\d', r)} + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: + print("likely tags: %s" % ",".join(sorted(tags))) + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] + # Filter out refs that exactly match prefix or that don't start + # with a number once the prefix is stripped (mostly a concern + # when prefix is '') + if not re.match(r'\d', r): + continue + if verbose: + print("picking %s" % r) + return {"version": r, + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": None, + "date": date} + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") + return {"version": "0+unknown", + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": "no suitable tags", "date": None} + + +@register_vcs_handler("git", "pieces_from_vcs") +def git_pieces_from_vcs( + tag_prefix: str, + root: str, + verbose: bool, + runner: Callable = run_command +) -> Dict[str, Any]: + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* + expanded, and _version.py hasn't already been rewritten with a short + version string, meaning we're inside a checked out source tree. + """ + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + + # GIT_DIR can interfere with correct operation of Versioneer. + # It may be intended to be passed to the Versioneer-versioned project, + # but that should not change where we get our version from. + env = os.environ.copy() + env.pop("GIT_DIR", None) + runner = functools.partial(runner, env=env) + + _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, + hide_stderr=not verbose) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) + raise NotThisMethod("'git rev-parse --git-dir' returned error") + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) + describe_out, rc = runner(GITS, [ + "describe", "--tags", "--dirty", "--always", "--long", + "--match", f"{tag_prefix}[[:digit:]]*" + ], cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() + full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + + pieces: Dict[str, Any] = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + + branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], + cwd=root) + # --abbrev-ref was added in git-1.6.3 + if rc != 0 or branch_name is None: + raise NotThisMethod("'git rev-parse --abbrev-ref' returned error") + branch_name = branch_name.strip() + + if branch_name == "HEAD": + # If we aren't exactly on a branch, pick a branch which represents + # the current commit. If all else fails, we are on a branchless + # commit. + branches, rc = runner(GITS, ["branch", "--contains"], cwd=root) + # --contains was added in git-1.5.4 + if rc != 0 or branches is None: + raise NotThisMethod("'git branch --contains' returned error") + branches = branches.split("\n") + + # Remove the first line if we're running detached + if "(" in branches[0]: + branches.pop(0) + + # Strip off the leading "* " from the list of branches. + branches = [branch[2:] for branch in branches] + if "master" in branches: + branch_name = "master" + elif not branches: + branch_name = None + else: + # Pick the first branch that is returned. Good or bad. + branch_name = branches[0] + + pieces["branch"] = branch_name + + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out + + # look for -dirty suffix + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: + git_describe = git_describe[:git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: + # unparsable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%s'" + % describe_out) + return pieces + + # tag + full_tag = mo.group(1) + if not full_tag.startswith(tag_prefix): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) + pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" + % (full_tag, tag_prefix)) + return pieces + pieces["closest-tag"] = full_tag[len(tag_prefix):] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) + + # commit: short hex revision ID + pieces["short"] = mo.group(3) + + else: + # HEX: no tags + pieces["closest-tag"] = None + out, rc = runner(GITS, ["rev-list", "HEAD", "--left-right"], cwd=root) + pieces["distance"] = len(out.split()) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() + date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip() + # Use only the last line. Previous lines may contain GPG signature + # information. + date = date.splitlines()[-1] + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +def plus_or_dot(pieces: Dict[str, Any]) -> str: + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +def render_pep440(pieces: Dict[str, Any]) -> str: + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you + get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty + + Exceptions: + 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += plus_or_dot(pieces) + rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + else: + # exception #1 + rendered = "0+untagged.%d.g%s" % (pieces["distance"], + pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +def render_pep440_branch(pieces: Dict[str, Any]) -> str: + """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] . + + The ".dev0" means not master branch. Note that .dev0 sorts backwards + (a feature branch will appear "older" than the master branch). + + Exceptions: + 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + if pieces["branch"] != "master": + rendered += ".dev0" + rendered += plus_or_dot(pieces) + rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + else: + # exception #1 + rendered = "0" + if pieces["branch"] != "master": + rendered += ".dev0" + rendered += "+untagged.%d.g%s" % (pieces["distance"], + pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +def pep440_split_post(ver: str) -> Tuple[str, Optional[int]]: + """Split pep440 version string at the post-release segment. + + Returns the release segments before the post-release and the + post-release version number (or -1 if no post-release segment is present). + """ + vc = str.split(ver, ".post") + return vc[0], int(vc[1] or 0) if len(vc) == 2 else None + + +def render_pep440_pre(pieces: Dict[str, Any]) -> str: + """TAG[.postN.devDISTANCE] -- No -dirty. + + Exceptions: + 1: no tags. 0.post0.devDISTANCE + """ + if pieces["closest-tag"]: + if pieces["distance"]: + # update the post release segment + tag_version, post_version = pep440_split_post(pieces["closest-tag"]) + rendered = tag_version + if post_version is not None: + rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"]) + else: + rendered += ".post0.dev%d" % (pieces["distance"]) + else: + # no commits, use the tag as the version + rendered = pieces["closest-tag"] + else: + # exception #1 + rendered = "0.post0.dev%d" % pieces["distance"] + return rendered + + +def render_pep440_post(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards + (a dirty tree will appear "older" than the corresponding clean one), + but you shouldn't be releasing software with -dirty anyways. + + Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += plus_or_dot(pieces) + rendered += "g%s" % pieces["short"] + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += "+g%s" % pieces["short"] + return rendered + + +def render_pep440_post_branch(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] . + + The ".dev0" means not master branch. + + Exceptions: + 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["branch"] != "master": + rendered += ".dev0" + rendered += plus_or_dot(pieces) + rendered += "g%s" % pieces["short"] + if pieces["dirty"]: + rendered += ".dirty" + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["branch"] != "master": + rendered += ".dev0" + rendered += "+g%s" % pieces["short"] + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +def render_pep440_old(pieces: Dict[str, Any]) -> str: + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + + Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + return rendered + + +def render_git_describe(pieces: Dict[str, Any]) -> str: + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render_git_describe_long(pieces: Dict[str, Any]) -> str: + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. + The distance/hash is unconditional. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render(pieces: Dict[str, Any], style: str) -> Dict[str, Any]: + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", + "full-revisionid": pieces.get("long"), + "dirty": None, + "error": pieces["error"], + "date": None} + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) + elif style == "pep440-branch": + rendered = render_pep440_branch(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) + elif style == "pep440-post-branch": + rendered = render_pep440_post_branch(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": + rendered = render_git_describe(pieces) + elif style == "git-describe-long": + rendered = render_git_describe_long(pieces) + else: + raise ValueError("unknown style '%s'" % style) + + return {"version": rendered, "full-revisionid": pieces["long"], + "dirty": pieces["dirty"], "error": None, + "date": pieces.get("date")} + + +def get_versions() -> Dict[str, Any]: + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some + # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which + # case we can only use expanded keywords. + + cfg = get_config() + verbose = cfg.verbose + + try: + return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, + verbose) + except NotThisMethod: + pass + + try: + root = os.path.realpath(__file__) + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. + for _ in cfg.versionfile_source.split('/'): + root = os.path.dirname(root) + except NameError: + return {"version": "0+unknown", "full-revisionid": None, + "dirty": None, + "error": "unable to find root of source tree", + "date": None} + + try: + pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) + return render(pieces, cfg.style) + except NotThisMethod: + pass + + try: + if cfg.parentdir_prefix: + return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) + except NotThisMethod: + pass + + return {"version": "0+unknown", "full-revisionid": None, + "dirty": None, + "error": "unable to compute version", "date": None} diff --git a/src/umfile_utils/perturbIC.py b/src/umfile_utils/perturbIC.py new file mode 100644 index 00000000..589eccb5 --- /dev/null +++ b/src/umfile_utils/perturbIC.py @@ -0,0 +1,229 @@ +#!/usr/bin/env python + +# Apply a perturbation to initial condition. +# Martin Dix martin.dix@csiro.au + +import os +import argparse +from numpy.random import PCG64, Generator +import mule +TIMESERIES_LBCODES = (31320, 31323) + +def parse_args(): + """ + Parse the command line arguments. + + Parameters + ---------- + None + + Returns + ---------- + args_parsed : argparse.Namespace + Argparse namespace containing the parsed command line arguments. + """ + parser = argparse.ArgumentParser(description="Perturb UM initial dump") + # Positional arguments + parser.add_argument('ifile', metavar="INPUT_PATH", help='Path to the input file.') + # Optional arguments + parser.add_argument('-a', dest='amplitude', type=float, default=0.01, + help = 'Amplitude of the perturbation.') + parser.add_argument('-s','--seed', dest='seed', type=int, + help = 'The seed value used to generate the random perturbation (must be a non-negative integer).') + parser.add_argument('--validate', action='store_true', + help='Validate the output fields file using mule validation.') + parser.add_argument('-o', '--output', dest='output_path', metavar="OUTPUT_PATH", + help='Path to the output file. If omitted, the default output file is created by appending "_perturbed" to the input path.') + args_parsed = parser.parse_args() + return args_parsed + +def create_random_generator(value=None): + """ + Create the random generator object using the provided value as a seed. + + Parameters + ---------- + value : int + The seed value used to create the random generator. + + Returns + ---------- + numpy.random.Generator + The numpy random generator object. + """ + if value is not None and value < 0: + raise ValueError('Seed value must be non-negative.') + return Generator(PCG64(value)) + +def remove_timeseries(ff): + """ + Remove any timeseries from a fields file. + + Parameters + ---------- + ff : mule.dump.DumpFile + The mule DumpFile to remove the timeseries from. + + Returns + ---------- + ff_out : mule.dump.DumpFile + The mule DumpFile with no timeseries. + """ + ff_out = ff.copy() + ff_out.fields=[field for field in ff.fields if field.lbcode not in TIMESERIES_LBCODES] + return ff_out + + +def create_default_outname(filename, suffix="_perturbed"): + """ + Create a default output filename by appending a suffix to the input filename. + If an output filename already exists, a number will be appended to produce a unique output filename. + + Parameters + ---------- + filename: str + The input filename. + suffix: str, optional + The suffix to append to the filename. + + Returns + ---------- + output_filename: str + The default output filename. + """ + output_filename = f"{filename}{suffix}" + num="" + if os.path.exists(output_filename): + num = 1 + while os.path.exists(f"{output_filename}{num}"): + num += 1 + return f"{output_filename}{num}" + + +def create_perturbation(amplitude, random_generator, shape, nullify_poles = True): + """ + Create a uniformly-distributed random perturbation of given amplitude and shape, using the given random_generator. + If nullify_poles is set to True, nullifies the perturbation amplitude at the poles. + + Parameters + ---------- + amplitude: float + The amplitude of the random perturbation. + random_generator: numpy.random.Generator + The random generator used to generate the random perturbation. + shape: tuple or list + Shape of the generated perturbation. + nullify_poles: bool, optional + If set to True, nullifies the perturbation amplitude at the poles. + + Returns + ---------- + pertubation: numpy.ndarray + The generated random perturbation. + """ + perturbation = random_generator.uniform(low = -amplitude, high = amplitude, size = shape) + # Set poles to zero (only necessary for ND grids, but doesn't hurt EG) + if nullify_poles: + perturbation[[0,-1],:] = 0 + return perturbation + + +def is_field_to_perturb(field, stash_to_perturb): + """ + Check if the field STASH itemcode correspond to the one to perturb. + + Parameters + ---------- + field : mule.Field + Field to check. + stash_to_perturb: int + STASH itemcode to perturb. + + Returns + ---------- + bool + Returns True if the field STASH itemcode corresponds to the one to perturb. + """ + return field.lbuser4 == stash_to_perturb + +class AdditionOperator(mule.DataOperator): + """ + Create a mule operator that adds an array to a field, provided that the two have the same shape. + + Attributes + ---------- + array : numpy.ndarray + The array to add to the field. + """ + def __init__(self, array): + self.array = array + + def new_field(self, source_field): + """ + Create the new field object by copying the source field. + """ + return source_field.copy() + + def transform(self, source_field, new_field): + """ + Perform the field data manipulation: check that the array and source field data have the same shape and then add them together. + """ + data = source_field.get_data() + if (field_shape:=data.shape) != (array_shape:=self.array.shape): + raise ValueError(f"Array and field could not be broadcast together with shapes {array_shape} and {field_shape}.") + else: + return data + self.array + + +def void_validation(*args, **kwargs): + """ + Don't perform the validation, but print a message to inform that validation has been skipped. + """ + print('Skipping mule validation. To enable the validation, run using the "--validate" option.') + + +def main(): + """ + Add a bi-dimensional random perturbation to the potential temperature field 'Theta' (STASH itemcode = 4) of a UM fields file. + """ + + # Define all the variables + STASH_THETA = 4 + + # Parse the command line arguments + args = parse_args() + + # Create the output filename + output_file = create_default_outname(args.ifile) if args.output_path is None else args.output_path + + # Create the random generator. + random_generator = create_random_generator(args.seed) + + ff_raw = mule.DumpFile.from_file(args.ifile) + + # Remove the time series from the data to ensure mule will work + ff = remove_timeseries(ff_raw) + + # Skip mule validation if the "--validate" option is provided + if not args.validate: + ff.validate = void_validation() + + # loop through the fields + for ifield, field in enumerate(ff.fields): + if is_field_to_perturb(field, STASH_THETA): + try: + ff.fields[ifield] = perturb_operator(field) + except NameError: # perturb_operator is not defined + # Only create the perturb_operator if it does not exist yet + + shape = field.get_data().shape + perturbation = create_perturbation(args.amplitude, random_generator, shape) + perturb_operator = AdditionOperator(perturbation) + ff.fields[ifield] = perturb_operator(field) + + ff.to_file(output_file) + +if __name__== "__main__": + + main() # pragma: no cover + diff --git a/src/umv2netcdf.py b/src/umv2netcdf.py deleted file mode 100644 index 92ebc55f..00000000 --- a/src/umv2netcdf.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python -# Convert UM fieldsfiles to netcdf -# This version works with rotated and/or variable grids -# Converts all fields in the file. - -# This is really designed for masks and orography. It doesn't handle -# vertical or time dimensions yet. - -# Martin Dix -# martin.dix@csiro.au - -import sys, getopt, datetime -import netCDF4 -import numpy as np -import umfile, stashvar -from um_fileheaders import * -from eqtoll import eqtoll - -if len(sys.argv)==3: - ifile = sys.argv[1] - ofile = sys.argv[2] -else: - print "Error - filename arguments expected" - print "Usage: umv2netcdf.py input_file output_file" - sys.exit(1) - -f = umfile.UMFile(ifile) -if not f.fieldsfile: - print "Input %s is not a UM fieldsfile" % ifile - sys.exit(1) - -# print "REAL HEADER", f.realhead -phi_pole = f.realhead[RC_PoleLat] -lambda_pole = f.realhead[RC_PoleLong] -dlon = f.realhead[RC_LongSpacing] -dlat = f.realhead[RC_LatSpacing] -lon0 = f.realhead[RC_FirstLong] -lat0 = f.realhead[RC_FirstLat] - -vargrid = False -if hasattr(f,"rowdep") and hasattr(f,"coldep"): - # Also need to check for missing values in real header? - print "Variable resolution grid" - vargrid = True - -nc_out = netCDF4.Dataset(ofile, "w", format="NETCDF3_CLASSIC") - -if vargrid: - nlon = f.coldep.shape[1] - nlat = f.rowdep.shape[1] -else: - nlon = f.inthead[IC_XLen] - nlat = f.inthead[IC_YLen] - -nc_out.createDimension('ix',nlon) -nc_out.createDimension('iy',nlat) - -lon = nc_out.createVariable('lon',np.float32,['iy', 'ix']) -lon.standard_name = 'longitude' -lon.units = 'degrees_east' - -lat = nc_out.createVariable('lat',np.float32,['iy', 'ix']) -lat.standard_name = 'latitude' -lat.units = 'degrees_north' - -# Mask file passed CF Checker 2.0.3 2012-03-29 -nc_out.Conventions = "CF-1.5" -nc_out.history = "%s: Created from %s using umv2netcdf.py" % (datetime.datetime.today().strftime('%Y-%m-%d %H:%M'), ifile) - -if not vargrid: - lonarray = lon0 + np.arange(nlon)*dlon - -# Should add a lon/lat bounds calculation here. -for j in range(nlat): - if vargrid: - phi, lam = eqtoll(f.rowdep[0,j],f.coldep[0],phi_pole,lambda_pole) - else: - phi, lam = eqtoll(lat0+j*dlat,lonarray,phi_pole,lambda_pole) - lon[j,:] = lam - lat[j,:] = phi - -# eqotll returns longitudes in range (0, 360) -# Some plotting packages many have problems with regions crossing zero meridian -# so shift these back to -180 to 180 range -if lon[0,0] > lon[0,-1]: - # region contains a 360 to 0 wrap around - lon[:] = np.where(lon[:] > 180., lon[:] - 360., lon[:]) - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] - if lbegin == -99: - break - - data = f.readfld(k) - - var = stashvar.StashVar(ilookup[ITEM_CODE],ilookup[MODEL_CODE]) - newvar = nc_out.createVariable(var.name,np.float32,['iy','ix']) - if var.standard_name: - newvar.standard_name = var.standard_name - newvar.long_name = var.long_name - if var.units: - newvar.units = var.units - newvar.missing_value = -2.**30 - newvar[:] = data[:] - -nc_out.close() diff --git a/src/umv2reg.py b/src/umv2reg.py deleted file mode 100644 index 24ea685f..00000000 --- a/src/umv2reg.py +++ /dev/null @@ -1,185 +0,0 @@ -#!/usr/bin/env python - -# Extract the regular grid part from a variable grid UM file - -# The regular region on the U and V grids is one point smaller than -# the P grid. - -# In a variable resolution dump file there's no information to tell -# whether a field is on the U, V or P grid. -# This can only come from reading the STASHmaster file, so must give suitable -# one as an argument. - -# Martin Dix martin.dix@csiro.au - -import numpy as np -import getopt, sys -import umfile -from um_fileheaders import * -import read_stashmaster - -def usage(): - print "Usage: umv2reg [-v] -i ifile -o ofile -s STASHmaster" - sys.exit(2) - -verbose = False -ifile = None -ofile = None -stashmaster = None -try: - optlist, args = getopt.getopt(sys.argv[1:], 'i:o:s:v') - for opt in optlist: - if opt[0] == '-i': - ifile = opt[1] - elif opt[0] == '-o': - ofile = opt[1] - elif opt[0] == '-s': - stashmaster = opt[1] - elif opt[0] == '-v': - verbose = True -except getopt.error: - usage() - -if not (ifile and ofile and stashmaster): - print "Missing arguments" - usage() - -stashd = read_stashmaster.read_stash(stashmaster) - -f = umfile.UMFile(ifile) - -phi_pole = f.realhead[RC_PoleLat] -lambda_pole = f.realhead[RC_PoleLong] -dlon = f.realhead[RC_LongSpacing] -dlat = f.realhead[RC_LatSpacing] -lon0 = f.realhead[RC_FirstLong] -lat0 = f.realhead[RC_FirstLat] - -# Variable grid file has dlon, dlat = missing value -if not dlon == dlat == lon0 == lat0 == f.missval_r: - raise Exception("Input file does not use variable grid") - -if not (hasattr(f,"rowdep") and hasattr(f,"coldep")): - raise Exception("Input file missing variable grid lat/lon") - -nlon = f.coldep.shape[1] -nlat = f.rowdep.shape[1] - -# Find the regular grid spacing -# Ancillary file may only have P grid values -# If U and V values are present they're half a grid point to N and E. -deltalon = f.coldep[0,1:] - f.coldep[0,:-1] -deltalat = f.rowdep[0,1:] - f.rowdep[0,:-1] - -dlon = deltalon.min() -dlat = deltalat.min() -# Find first and last grid indices with this spacing -indices = np.arange(nlon)[abs(deltalon-dlon) < 2e-5] -lon1 = indices[0] # Start of grid, first point s.t. lon(i+1) - lon(i) = dlon -lon2 = indices[-1] + 1 -nx = lon2 - lon1 + 1 - -indices = np.arange(nlat)[abs(deltalat-dlat) < 2e-5] -lat1 = indices[0] # Start of grid, first point s.t. lat(i+1) - lat(i) = dlat -lat2 = indices[-1] + 1 -ny = lat2 - lat1 + 1 - -# Recalculate the regular grid spacing using the full range for more accuracy -# (necessary for 32 bit files). -dlon = (f.coldep[0,lon2]-f.coldep[0,lon1]) / (lon2-lon1) -dlat = (f.rowdep[0,lat2]-f.rowdep[0,lat1]) / (lat2-lat1) -# Get sensibly rounded values -dlon = round(dlon.min(),6) -dlat = round(dlat.min(),6) -print "Grid spacing", dlon, dlat -print "Regular region", f.coldep[0,lon1], f.coldep[0,lon2], f.rowdep[0,lat1], f.rowdep[0,lat2] -print "Regular grid size", nx, ny -# If this is done correctly it should be symmetrical -if not (nlon-1-lon2 == lon1 and nlat-1-lat2 == lat1): - raise Exception("Regular resolution region is not symmetrical") - -g = umfile.UMFile(ofile, "w") -g.copyheader(f) - -# No row and column depedent constants in the regular grid file -g.fixhd[FH_RowDepCStart:FH_ColDepCSize2+1] = g.missval_i -# Change the grid values in the output header to match the chosen origin and -# size -g.inthead[IC_XLen] = nx -g.inthead[IC_YLen] = ny -g.realhead[RC_FirstLat] = f.rowdep[0,lat1] - dlat # This is "zeroth" point -g.realhead[RC_FirstLong] = f.coldep[0,lon1] - dlon -g.realhead[RC_LongSpacing] = dlon -g.realhead[RC_LatSpacing] = dlat - -# Start by trying to read the land-sea mask, field 30 -try: - f.getmask() - # Mask on the regular region - g.mask = f.mask[lat1:lat1+ny,lon1:lon1+ny] -except umfile.packerr: - pass - -# Loop over all the fields -kout = 0 -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - lbegin = ilookup[LBEGIN] # lbegin is offset from start - if lbegin == -99: - # End of data - break - if ilookup[LBCODE] == f.missval_i: - # There are some files with variables code in headers but much - # of the rest of the data missing - print "Header data missing", ilookup[ITEM_CODE] - continue - if verbose: - print k, ilookup[ITEM_CODE] - npts = ilookup[LBNPT] - nrows = ilookup[LBROW] - # Look at the STASHmaster grid value for this item code to check which - # grid it's on. There's no way to tell purely from the variable grid - # fieldsfile. - gridcode = stashd[ilookup[ITEM_CODE]]['grid'] - if gridcode in (1,2,3,21,22): - # theta points, including packed to land or ocean - # ozone grid also (same as theta?) - lon0 = g.realhead[RC_FirstLong] - lat0 = g.realhead[RC_FirstLat] - nxv = nx - nyv = ny - elif gridcode == 18: - # U - lon0 = f.coldep[1,lon1] - dlon - lat0 = g.realhead[RC_FirstLat] - nxv = nx-1 - nyv = ny - elif gridcode == 19: - # U - lon0 = g.realhead[RC_FirstLong] - lat0 = f.rowdep[1,lat1] - dlat - nxv = nx - nyv = ny-1 - else: - print "Skipping variable %d with grid %d" % (ilookup[ITEM_CODE], gridcode) - continue - - # Currently have a copy of the input header - # Set modified output grid for this field - g.ilookup[kout,LBCODE] = 101 # Standard rotated grid - - # Could set this in the writing routing from the array size? - g.ilookup[kout,LBROW] = nyv - g.ilookup[kout,LBNPT] = nxv - g.ilookup[kout,LBLREC] = nxv*nyv - g.rlookup[kout,BZY] = lat0 - g.rlookup[kout,BZX] = lon0 - g.rlookup[kout,BDY] = dlat - g.rlookup[kout,BDX] = dlon - - data = f.readfld(k) - newdata = data[lat1:lat1+nyv,lon1:lon1+nxv] - g.writefld(newdata,kout) - kout += 1 - -g.close() diff --git a/src/valid_times.py b/src/valid_times.py deleted file mode 100644 index e8e60437..00000000 --- a/src/valid_times.py +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env python - -# List of valid data times in a file - -from um_fileheaders import * -import umfile, sys, collections, datetime - -f = umfile.UMFile(sys.argv[1]) - -times=collections.defaultdict(int) - -for k in range(f.fixhd[FH_LookupSize2]): - ilookup = f.ilookup[k] - if ilookup[LBEGIN] == -99: - break - if ilookup[LBREL] >= 3: - # Second field introduced from vn 8.1 - t = datetime.datetime(ilookup[LBYR], ilookup[LBMON], - ilookup[LBDAT], ilookup[LBHR], - ilookup[LBMIN], ilookup[LBSEC]) - else: - t = datetime.datetime(ilookup[LBYR], ilookup[LBMON], - ilookup[LBDAT], ilookup[LBHR], - ilookup[LBMIN], 0) - times[t] += 1 - -print "Valid_times", -for t in sorted(times.keys()): - print t.strftime('%Y%m%d%H%M'), -print - -if len(set(times.values())) > 1: - print "Warning - not all times have same number of fields" diff --git a/tests/perturbIC_test.py b/tests/perturbIC_test.py new file mode 100644 index 00000000..ed180792 --- /dev/null +++ b/tests/perturbIC_test.py @@ -0,0 +1,426 @@ +from copy import deepcopy +from unittest.mock import MagicMock, patch + +import mule # noqa: F401 +import numpy as np +import pytest +from hypothesis import HealthCheck, given, settings +from hypothesis import strategies as st +from hypothesis.extra import numpy as stnp +from numpy.random import PCG64, Generator, choice, default_rng + +from umfile_utils.perturbIC import ( + TIMESERIES_LBCODES, + AdditionOperator, + create_default_outname, + create_perturbation, + create_random_generator, + is_field_to_perturb, + main, + parse_args, + remove_timeseries, + void_validation, +) + +# Hypothesis settings to reuse in multiple tests +ARRAY_SHAPES = stnp.array_shapes(min_dims=2, max_dims=2, min_side=1, max_side=200) +ARRAY_DTYPES = stnp.floating_dtypes(sizes=(32, 64)) +# Set to avoid overflow +ARRAY_ELEMENTS = st.floats( + min_value=-1e10, + max_value=1e10, + allow_nan=False, # Disallow NaN + allow_infinity=False, # Disallow Infinity + allow_subnormal=False, # Disallow subnormal floats + width=32 # Ensure compatibility with float32 or float64 +) + +# Set max examples for hypothesis globally +settings.register_profile("default", max_examples=30) +settings.load_profile("default") + +@pytest.fixture +def create_mock_umfile(): + def _mock_umfile(): + """Factory function to create a mule UMfile mock object and initialize it with empty fields.""" + return MagicMock(fields=[]) + + return _mock_umfile + +#This section sets up the testing for the parse args +@pytest.fixture +def create_mock_field(): + """Factory function to create a mule field mock object.""" + + def _create_field(lbcode=0): + return MagicMock( + lbcode=lbcode, + ) + return _create_field + + +def test_parse_args_default_args(): + """Test with default arguments.""" + test_args = ["perturbIC", "test_input_file"] + with patch("sys.argv", test_args): + args = parse_args() + assert args.ifile == "test_input_file" + assert args.amplitude == 0.01 + assert args.seed is None + assert not args.validate + assert args.output_path is None + + +def test_parse_args_all_arguments(): + """Test with all arguments provided.""" + test_args = ["perturbIC", "test_input_2", "-a", "0.5", "-s", "123", "--validate", "-o", "test_output_1"] + with patch("sys.argv", test_args): + args = parse_args() + assert args.ifile == "test_input_2" + assert args.amplitude == 0.5 + assert args.seed == 123 + assert args.validate + assert args.output_path == "test_output_1" + + +def test_create_random_generator_no_argument(): + """Test the random generator creation without a seed.""" + rng = create_random_generator() + assert isinstance(rng, Generator) + assert not np.all(rng.random(10) == Generator(PCG64(None)).random(10)) + + +@given(seed=st.integers(min_value=0)) +def test_create_random_generator_with_seed(seed): + """Test the random generator creation with a positive seed.""" + rng = create_random_generator(seed) + assert isinstance(rng, Generator) + assert np.all(rng.random(10) == Generator(PCG64(seed)).random(10)) + + +def test_create_random_generator_negative_seed(): + """Test that a negative seed raises a ValueError.""" + with pytest.raises(ValueError): + create_random_generator(-1) + + +@pytest.mark.parametrize( + # description of the arguments + "init_fields_lbcodes, result_fields_indeces, result_fields_length", + [ + # Case 1: UM file with mixed fields + ( + [1, 2, choice(TIMESERIES_LBCODES), 3, choice(TIMESERIES_LBCODES), choice(TIMESERIES_LBCODES), 4], + [0, 1, 3, 6], + 4, + ), + # Case 2: UM file with no timeseries fields + ( + [1, 2, 3, 4, 5], + [0, 1, 2, 3, 4], + 5, + ), + # Case 3: UM file with all timeseries fields + ([choice(TIMESERIES_LBCODES) for _ in range(8)], [], 0), + # Case 4: UM file with no fields + ([], [], 0), + ], + ids=[ + "mixed", + "no_timeseries", + "all_timeseries", + "no_fields", + ], +) +def test_remove_timeseries_( + init_fields_lbcodes, result_fields_indeces, result_fields_length, create_mock_umfile, create_mock_field +): + """Test remove_timeseries function when the UM file has no timeseries fields.""" + mock_umfile = create_mock_umfile() + mock_umfile.fields = [create_mock_field(lbcode) for lbcode in init_fields_lbcodes] + result = remove_timeseries(mock_umfile) + assert len(result.fields) == result_fields_length + assert result.fields == [mock_umfile.fields[ind] for ind in result_fields_indeces] + + +#This section tests the output file creation. +@pytest.mark.parametrize( + # description of the arguments + "existing_files, filename, expected_output", + [ + # Case 1: Filename with suffix doesn't exist, return filename with suffix + ([], "testfilename", "testfilename_perturbed"), + # Case 2: Filename with suffix exists, returns filename with suffix appending 1 + (["testfilename_perturbed"], "testfilename", "testfilename_perturbed1"), + # Case 3: Filename with suffix and a few numbered versions exist, returns + # filename with suffix and the first numbered version that doesn't exist + ( + ["testfilename_perturbed", "testfilename_perturbed1", "testfilename_perturbed2"], + "testfilename", + "testfilename_perturbed3", + ), + ], + ids=[ + "file_do_not_exist", + "file_exists", + "multiple_files_exist", + ], +) +@patch("os.path.exists") +def test_create_default_outname_suffix_not_passed(mock_exists, existing_files, filename, expected_output): + """ + Test the function that creates the default output file name, without passing a suffix. + 3 cases tested with pytest.mark.parametrize. + """ + # Mock os.path.exists to simulate the presence of specific files + mock_exists.side_effect = lambda f: f in existing_files + result = create_default_outname(filename) + assert result == expected_output + + +@patch("os.path.exists") +def test_create_default_outname_suffix_passed(mock_exists): + """ + Test the function that creates the default output file name, passing a custom suffix. + """ + # Mock os.path.exists to simulate the presence of specific files + mock_exists.return_value = False + filename = "testfilename" + suffix = "testsuffix" + result = create_default_outname(filename, suffix) + expected_output = "testfilenametestsuffix" + assert result == expected_output + + +@given( + shape=ARRAY_SHAPES, + amplitude=st.floats(min_value=0, max_value=1e300), # max_value is set to avoid overflow +) +def test_create_perturbation(shape, amplitude): + """Test create_perturbation.""" + rng = default_rng() + perturbation = create_perturbation(amplitude, rng, shape) + # Test that the created perturbation has the correct shape. + assert perturbation.shape == shape + # Test that the created perturbation is in the correct range. + assert np.all(perturbation >= -amplitude) + assert np.all(perturbation <= amplitude) + # Test that nullify_poles is true and first and last row (north and south poles) are 0 + assert np.all(perturbation[0, :] == 0) + assert np.all(perturbation[-1, :] == 0) + + +def test_create_perturbation_preserve_poles(): + """Test create_perturbation with nullify_poles=False.""" + shape = (10, 20) + amplitude = 3.0 + rng = default_rng() + perturbation = create_perturbation(amplitude, rng, shape, nullify_poles=False) + # Test that the created perturbation has the correct shape. + assert perturbation.shape == shape + # Test that the created perturbation is in the correct range. + assert np.all(perturbation >= -amplitude) + assert np.all(perturbation <= amplitude) + # Test that nullify_poles is false and first and last row are not all 0 + assert not np.all(perturbation[0, :] == 0) + assert not np.all(perturbation[-1, :] == 0) + + +@given(seed=st.integers(min_value=0)) +def test_create_perturbation_deterministic(seed): + """Test if the perturbation is deterministic with a fixed random seed.""" + amplitude = 1.0 + shape = (13, 7) + rng1 = np.random.default_rng(seed) + perturbation1 = create_perturbation(amplitude, rng1, shape) + rng2 = np.random.default_rng(seed) + perturbation2 = create_perturbation(amplitude, rng2, shape) + # Test that the results are identical + np.testing.assert_array_equal(perturbation1, perturbation2) + + +@given(lbuser4=st.integers(), stash_to_perturb=st.integers()) +def test_is_field_to_perturb_hypothesis(lbuser4, stash_to_perturb): + """ + Hypothesis test to check the behavior of is_field_to_perturb with various + combinations of lbuser4 and stash_to_perturb. + """ + # Create a mock mule.Field object + mock_field = MagicMock() + mock_field.lbuser4 = lbuser4 + + # Check if the function returns True when values match, and False otherwise + expected_result = lbuser4 == stash_to_perturb + assert is_field_to_perturb(mock_field, stash_to_perturb) == expected_result + + +def test_void_validation(capfd): + """Test that the void_validation function doesn't do anything but printing a message to stdout, for any input arguments.""" + args = [1, "test", None, False] + kwargs = {"a": 1, "b": "test", "c": None, "d": False} + init_args = deepcopy(args) + init_kwargs = deepcopy(kwargs) + result = void_validation(*args, **kwargs) + # Capture the output + captured = capfd.readouterr() + # Test output message to stdout + assert ( + captured.out.strip() == 'Skipping mule validation. To enable the validation, run using the "--validate" option.' + ) + # Test no output message to stderr + assert captured.err == "" + # Test no return value + assert result is None + # Test no side effects for input arguments + assert args == init_args + assert kwargs == init_kwargs + + +class TestAdditionOperator: + """Test the AdditionOperator class.""" + @given(array=stnp.arrays(dtype=ARRAY_DTYPES, shape=ARRAY_SHAPES, elements=ARRAY_ELEMENTS)) + def test_addition_operator_init(self, array): + """Test the initialization of the AdditionOperator class.""" + operator = AdditionOperator(array) + assert operator.array.shape == array.shape + np.testing.assert_array_equal(operator.array, array) + + def test_addition_operator_new_field(self, create_mock_field): + """Test the new_field method of the AdditionOperator class.""" + array = np.array([1, 2, 3]) + operator = AdditionOperator(array) + source_field = create_mock_field() + # Mock the copy method to return the same source_field + source_field.copy.return_value = source_field + new_field = operator.new_field(source_field) # noqa: F841 + # Ensure that the copy method was called on the source_field + source_field.copy.assert_called_once() + + @given( + array=stnp.arrays( + dtype=st.shared(ARRAY_DTYPES, key="dtype"), + shape=st.shared(ARRAY_SHAPES, key="shape"), + elements=ARRAY_ELEMENTS, + ), + source_data=stnp.arrays( + dtype=st.shared(ARRAY_DTYPES, key="dtype"), + shape=st.shared(ARRAY_SHAPES, key="shape"), + elements=ARRAY_ELEMENTS, + ), + ) + @settings(suppress_health_check=[HealthCheck.function_scoped_fixture]) + def test_addition_operator_transform_valid_shapes(self, array, source_data, create_mock_field): + """Test the transform method of the AdditionOperator class, with valid shapes.""" + + operator = AdditionOperator(array) + source_field = create_mock_field() + source_field.get_data.return_value = source_data # Mock the get_data method to return source_data + new_field = create_mock_field() + result = operator.transform(source_field, new_field) + expected_result = source_data + array + np.testing.assert_array_equal(result, expected_result) + + def test_addition_operator_transform_incompatible_shapes(self, create_mock_field): + """Test the transform method of the AdditionOperator class, with incompatible shapes.""" + array = np.array([[1, 2, 3], [4, 5, 6]]) # Shape (2, 3) + array_shape = array.shape + operator = AdditionOperator(array) + source_field = create_mock_field() + source_data = np.array([[5, 6], [7, 8]]) # Shape (2, 2) + field_shape = source_data.shape + source_field.get_data.return_value = source_data + with pytest.raises(ValueError) as excmsg: + operator.transform(source_field, create_mock_field()) + assert ( + excmsg + == f"Array and field could not be broadcast together with shapes {array_shape} and {field_shape}." + ) + + +@patch("umfile_utils.perturbIC.parse_args") +@patch("umfile_utils.perturbIC.create_default_outname") +@patch("umfile_utils.perturbIC.create_random_generator") +@patch("umfile_utils.perturbIC.void_validation") +@patch("mule.DumpFile") +@patch("umfile_utils.perturbIC.remove_timeseries") +@patch("umfile_utils.perturbIC.is_field_to_perturb") +@patch("umfile_utils.perturbIC.create_perturbation") +@patch("umfile_utils.perturbIC.AdditionOperator") +def test_main( + mock_addition_operator, + mock_create_perturbation, + mock_is_field_to_perturb, + mock_remove_timeseries, + mock_dumpfile, + mock_void_validation, + mock_create_random_generator, + mock_create_default_outname, + mock_parse_args, + create_mock_umfile, + create_mock_field, +): + """Test the main function.""" + lbcode_to_perturb = 1234 + + # Mock the return value of parse_args + mock_args = MagicMock( + ifile="test_input_file", + amplitude=0.01, + seed=123, + validate=False, + output_path=None, + ) + mock_parse_args.return_value = mock_args + + # Mock the return value of mule.DumpFile.from_file + mock_ff = create_mock_umfile() + mock_ff.fields = [ + create_mock_field(lbcode=lbcode_to_perturb), + create_mock_field(lbcode=1), + create_mock_field(lbcode=2), + ] + test_data = np.array([[1, 2, 3], [4, 5, 6]]) + mock_ff.fields[0].get_data.return_value = test_data + mock_dumpfile.from_file.return_value = mock_ff + + # Mock the return value of remove_timeseries + mock_remove_timeseries.return_value = mock_ff + + # Mock is_field_to_perturb + mock_is_field_to_perturb.side_effect = lambda field, stash: field.lbcode == lbcode_to_perturb + + mock_ff.to_file.side_effect = lambda _: mock_dumpfile.validate() + + main() + + # Assertions + mock_parse_args.assert_called_once() + mock_create_default_outname.assert_called_once_with(mock_args.ifile) + mock_create_random_generator.assert_called_once_with(mock_args.seed) + mock_void_validation.assert_called_once() + mock_dumpfile.from_file.assert_called_once_with(mock_args.ifile) + mock_remove_timeseries.assert_called_once_with(mock_ff) + mock_is_field_to_perturb.assert_called() + mock_create_perturbation.assert_called_once_with( + mock_args.amplitude, + mock_create_random_generator.return_value, + test_data.shape, + ) + mock_addition_operator.assert_called_once_with(mock_create_perturbation.return_value) + mock_ff.to_file.assert_called_once_with(mock_create_default_outname.return_value) + + # Case with validation enabled and output path provided + # Reset mock calls and mock_dumpfile.validate + mock_create_default_outname.reset_mock() + mock_void_validation.reset_mock() + mock_dumpfile.validate = MagicMock() + + # Set the validate flag to True and provide an output path + mock_args.validate = True + mock_args.output_path = "test_output_file" + main() + + # Assertions + mock_void_validation.assert_not_called() + mock_create_default_outname.assert_not_called() +