/usr/lib/python2.7/site-packages/iris/fileformats/rules.py:835: UserWarning: Unable to create instance of HybridHeightFactory. The file(s) [
....
] don't contain field(s) for 'orography'.mass_fraction_of_ozone_in_air / (kg kg-1) (time: 12; model_level_number: 60; latitude: 73; longitude: 96) Dimension coordinates: time x - - - model_level_number - x - - latitude - - x - longitude - - - x Auxiliary coordinates: forecast_period x - - - level_height - x - - sigma - x - - Scalar coordinates: forecast_reference_time: 1951-01-01 00:00:00 Attributes: STASH: m01s34i001 source: Data from Met Office Unified Model um_version: 7.3 Cell methods: mean: time (1 hour)unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i034 source: Data from Met Office Unified Model um_version: 7.3unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i005 source: Data from Met Office Unified Model um_version: 7.3unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i006 source: Data from Met Office Unified Model um_version: 7.3unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i035 source: Data from Met Office Unified Model um_version: 7.3unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i036 source: Data from Met Office Unified Model um_version: 7.3unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i037 source: Data from Met Office Unified Model um_version: 7.3unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i017 source: Data from Met Office Unified Model um_version: 7.3unknown / (unknown) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i018 source: Data from Met Office Unified Model um_version: 7.3surface_altitude / (m) (latitude: 145; longitude: 192) Dimension coordinates: latitude x - longitude - x Attributes: STASH: m01s00i033 source: Data from Met Office Unified Model um_version: 7.3OROGRAPHY (/STRAT LOWER BC) (m01s00i033)STANDARD DEVIATION OF OROGRAPHY (m01s00i034)OROGRAPHIC GRADIENT X COMPONENT (m01s00i005)OROGRAPHIC GRADIENT Y COMPONENT (m01s00i006)OROGRAPHIC GRADIENT XX COMPONENT (m01s00i035)OROGRAPHIC GRADIENT XY COMPONENT (m01s00i036)OROGRAPHIC GRADIENT YY COMPONENT (m01s00i037)SILHOUETTE OROGRAPHIC ROUGHNESS (m01s00i017)HALF OF (PEAK TO TROUGH HT OF OROG) (m01s00i018)In [2]: orogOut[2]: <iris 'Cube' of surface_altitude / (m) (latitude: 73; longitude: 96)>
In [3]: auxcoord=iris.coords.AuxCoord(orog.data,standard_name=str(orog.standard_name),long_name="orography",var_name="orog",units=orog.units)
In [4]: vmro3.add_aux_coord(auxcoord,(2,3,))
In [5]: factory=iris.aux_factory.HybridHeightFactory(sigma=vmro3.coord("sigma"),orography=vmro3.coord("surface_altitude"))
In [6]: vmro3.add_aux_factory(factory)
In [8]: print vmro3mass_fraction_of_ozone_in_air / (kg kg-1) (time: 12; model_level_number: 60; latitude: 73; longitude: 96) Dimension coordinates: time x - - - model_level_number - x - - latitude - - x - longitude - - - x Auxiliary coordinates: forecast_period x - - - level_height - x - - sigma - x - - surface_altitude - - x x Derived coordinates: altitude - x x xKeyError Traceback (most recent call last)<ipython-input-10-d4d606719173> in <module>()----> 1 iris.fileformats.netcdf.save(vmro3,'/group_workspaces/jasmin2/ukca/nlabraham/CCMI/misc/vmro3_03.nc',netcdf_format='NETCDF4_CLASSIC')
/usr/lib/python2.7/site-packages/iris/fileformats/netcdf.pyc in save(cube, filename, netcdf_format, local_keys, unlimited_dimensions, zlib, complevel, shuffle, fletcher32, contiguous, chunksizes, endian, least_significant_digit) 1754 sman.write(cube, local_keys, unlimited_dimensions, zlib, complevel, 1755 shuffle, fletcher32, contiguous, chunksizes, endian,-> 1756 least_significant_digit) 1757 1758 conventions = CF_CONVENTIONS_VERSION
/usr/lib/python2.7/site-packages/iris/fileformats/netcdf.pyc in write(self, cube, local_keys, unlimited_dimensions, zlib, complevel, shuffle, fletcher32, contiguous, chunksizes, endian, least_significant_digit) 770 # Add the formula terms to the appropriate cf variables for each 771 # aux factory in the cube.--> 772 self._add_aux_factories(cube, cf_var_cube, dimension_names) 773 774 # Add data variable-only attribute names to local_keys.
/usr/lib/python2.7/site-packages/iris/fileformats/netcdf.pyc in _add_aux_factories(self, cube, cf_var_cube, dimension_names) 952 primaries.append(primary_coord) 953 --> 954 cf_name = self._name_coord_map.name(primary_coord) 955 cf_var = self._dataset.variables[cf_name] 956
/usr/lib/python2.7/site-packages/iris/fileformats/netcdf.pyc in name(self, coord) 194 if result is None: 195 msg = 'Coordinate is not mapped, {!r}'.format(coord)--> 196 raise KeyError(msg) 197 return result 198
KeyError: 'Coordinate is not mapped, None'
I should clarify that the altitude here then only gives the b * orog term. Passing in model_level_height as the delta then gives the altitude above sea-level.
level_height:formula_terms = "a: level_height b: sigma orog: orog" ;