def _check_soil_level(self, lbcode, expect_match=True): lbvc = 6 lblev = 12.3 brsvd1, brlev = 0, 0 stash = STASH(1, 1, 1) blev, bhlev, bhrlev, brsvd2 = None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [(DimCoord([lblev], long_name='soil_model_level_number', attributes={'positive': 'down'}), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def test_valid(self, expect_match=True): lbvc = 65 lblev = 37.0 bhlev = 0.35 # sigma bhrlev, brsvd2 = 0.31, 0.39 # sigma bounds blev = 9596.3 # level_height brlev, brsvd1 = 9500.0, 9800.0 # level_height bounds lbcode = _lbcode(0) # unused stash = STASH(1, 1, 1) # unused coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_coords_and_dims = [ (DimCoord([37.0], standard_name='model_level_number', attributes={'positive': 'up'}), None), (DimCoord([9596.3], long_name='level_height', units='m', bounds=[brlev, brsvd1], attributes={'positive': 'up'}), None), (AuxCoord([0.35], long_name='sigma', bounds=[bhrlev, brsvd2]), None)] expect_factories = [(HybridHeightFactory, [{'long_name': 'level_height'}, {'long_name': 'sigma'}, Reference('orography')])] else: expect_coords_and_dims = [] expect_factories = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_coords_and_dims) self.assertEqual(factories, expect_factories)
def _check_potm(self, lbcode, expect_match=True): lbvc = 19 blev = 130.6 stash = STASH(1, 1, 1) lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [ (DimCoord([blev], standard_name='air_potential_temperature', units='K', attributes={'positive': 'up'}), None) ] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def _check_height(self, blev, stash, expect_normal=True, expect_fixed_height=None): lbvc = 1 lbcode = _lbcode(0) # effectively unused in this case lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_normal: expect_result = [(DimCoord(blev, standard_name='height', units='m', attributes={'positive': 'up'}), None)] elif expect_fixed_height: expect_result = [(DimCoord([expect_fixed_height], standard_name='height', units='m', attributes={'positive': 'up'}), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def _check_pressure(self, lbcode, expect_match=True): lbvc = 8 blev = 250.3 stash = STASH(1, 1, 1) lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [(DimCoord([blev], long_name='pressure', units='hPa'), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def _check_soil_depth(self, lbcode, expect_match=True): lbvc = 6 blev = 0.05 brsvd1, brlev = 0, 0.1 stash = STASH(1, 1, 1) lblev, bhlev, bhrlev, brsvd2 = None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [(DimCoord([blev], standard_name='depth', units='m', bounds=[[brsvd1, brlev]], attributes={'positive': 'down'}), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def test_valid(self, expect_match=True): lbvc = 9 lblev = 37.0 bhlev = 850.1 # pressure bhrlev, brsvd2 = 810.0, 875.0 # pressure bounds blev = 0.15 # sigma brlev, brsvd1 = 0.11, 0.19 # sigma bounds lbcode = _lbcode(0) # unused stash = STASH(1, 1, 1) # unused coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_coords_and_dims = [ (DimCoord([37.0], standard_name='model_level_number', attributes={'positive': 'up'}), None), (DimCoord([850.1], long_name='level_pressure', units='Pa', bounds=[810.0, 875.0]), None), (AuxCoord([0.15], long_name='sigma', bounds=[brlev, brsvd1]), None)] expect_factories = [(HybridPressureFactory, [{'long_name': 'level_pressure'}, {'long_name': 'sigma'}, Reference('surface_air_pressure')])] else: expect_coords_and_dims = [] expect_factories = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_coords_and_dims) self.assertEqual(factories, expect_factories)
def _check_depth(self, lbcode, lblev, brlev=0.0, brsvd1=0.0, expect_bounds=True, expect_match=True): lbvc = 2 lblev = 23.0 blev = 123.4 stash = STASH(1, 1, 1) bhlev, bhrlev, brsvd2 = None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [ (DimCoord([lblev], standard_name='model_level_number', attributes={'positive': 'down'}), None)] if expect_bounds: expect_result.append( (DimCoord(blev, standard_name='depth', units='m', bounds=[brsvd1, brlev], attributes={'positive': 'down'}), None)) else: expect_result.append( (DimCoord(blev, standard_name='depth', units='m', attributes={'positive': 'down'}), None)) else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def test_unknown_lbvc(self): lbvc = 999 blev, lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None, None lbcode = _lbcode(0) # unused stash = STASH(1, 1, 1) # unused coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) self.assertEqual(coords_and_dims, []) self.assertEqual(factories, [])
def test_valid(self, expect_match=True): lbvc = 65 lblev = 37.0 bhlev = 0.35 # sigma bhrlev, brsvd2 = 0.31, 0.39 # sigma bounds blev = 9596.3 # level_height brlev, brsvd1 = 9500.0, 9800.0 # level_height bounds lbcode = _lbcode(0) # unused stash = STASH(1, 1, 1) # unused coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_coords_and_dims = [ (DimCoord([37.0], standard_name='model_level_number', attributes={'positive': 'up'}), None), (DimCoord([9596.3], long_name='level_height', units='m', bounds=[brlev, brsvd1], attributes={'positive': 'up'}), None), (AuxCoord([0.35], long_name='sigma', bounds=[bhrlev, brsvd2]), None) ] expect_factories = [(HybridHeightFactory, [{ 'long_name': 'level_height' }, { 'long_name': 'sigma' }, Reference('orography')]) ] else: expect_coords_and_dims = [] expect_factories = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_coords_and_dims) self.assertEqual(factories, expect_factories)
def _check_pressure(self, lbcode, expect_match=True): lbvc = 8 blev = 250.3 stash = STASH(1, 1, 1) lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [ (DimCoord([blev], long_name='pressure', units='hPa'), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def test_valid(self, expect_match=True): lbvc = 9 lblev = 37.0 bhlev = 850.1 # pressure bhrlev, brsvd2 = 810.0, 875.0 # pressure bounds blev = 0.15 # sigma brlev, brsvd1 = 0.11, 0.19 # sigma bounds lbcode = _lbcode(0) # unused stash = STASH(1, 1, 1) # unused coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_coords_and_dims = [ (DimCoord([37.0], standard_name='model_level_number', attributes={'positive': 'up'}), None), (DimCoord([850.1], long_name='level_pressure', units='Pa', bounds=[810.0, 875.0]), None), (AuxCoord([0.15], long_name='sigma', bounds=[brlev, brsvd1]), None) ] expect_factories = [(HybridPressureFactory, [{ 'long_name': 'level_pressure' }, { 'long_name': 'sigma' }, Reference('surface_air_pressure')])] else: expect_coords_and_dims = [] expect_factories = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_coords_and_dims) self.assertEqual(factories, expect_factories)
def _check_potm(self, lbcode, expect_match=True): lbvc = 19 blev = 130.6 stash = STASH(1, 1, 1) lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [ (DimCoord([blev], standard_name='air_potential_temperature', units='K', attributes={'positive': 'up'}), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def _check_soil_level(self, lbcode, expect_match=True): lbvc = 6 lblev = 12.3 brsvd1, brlev = 0, 0 stash = STASH(1, 1, 1) blev, bhlev, bhrlev, brsvd2 = None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [ (DimCoord([lblev], long_name='soil_model_level_number', attributes={'positive': 'down'}), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def _check_depth(self, lbcode, lblev, brlev=0.0, brsvd1=0.0, expect_bounds=True, expect_match=True): lbvc = 2 lblev = 23.0 blev = 123.4 stash = STASH(1, 1, 1) bhlev, bhrlev, brsvd2 = None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [(DimCoord([lblev], standard_name='model_level_number', attributes={'positive': 'down'}), None)] if expect_bounds: expect_result.append((DimCoord(blev, standard_name='depth', units='m', bounds=[brsvd1, brlev], attributes={'positive': 'down'}), None)) else: expect_result.append((DimCoord(blev, standard_name='depth', units='m', attributes={'positive': 'down'}), None)) else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def test_unknown_lbvc(self): lbvc = 999 blev, lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None, None lbcode = _lbcode(0) # unused stash = STASH(1, 1, 1) # unused coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) self.assertEqual(coords_and_dims, []) self.assertEqual(factories, [])
def _check_soil_depth(self, lbcode, expect_match=True): lbvc = 6 blev = 0.05 brsvd1, brlev = 0, 0.1 stash = STASH(1, 1, 1) lblev, bhlev, bhrlev, brsvd2 = None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_match: expect_result = [ (DimCoord([blev], standard_name='depth', units='m', bounds=[[brsvd1, brlev]], attributes={'positive': 'down'}), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])
def _check_height(self, blev, stash, expect_normal=True, expect_fixed_height=None): lbvc = 1 lbcode = _lbcode(0) # effectively unused in this case lblev, bhlev, bhrlev, brsvd1, brsvd2, brlev = \ None, None, None, None, None, None coords_and_dims, factories = _convert_scalar_vertical_coords( lbcode=lbcode, lbvc=lbvc, blev=blev, lblev=lblev, stash=stash, bhlev=bhlev, bhrlev=bhrlev, brsvd1=brsvd1, brsvd2=brsvd2, brlev=brlev) if expect_normal: expect_result = [ (DimCoord(blev, standard_name='height', units='m', attributes={'positive': 'up'}), None)] elif expect_fixed_height: expect_result = [ (DimCoord([expect_fixed_height], standard_name='height', units='m', attributes={'positive': 'up'}), None)] else: expect_result = [] self.assertCoordsAndDimsListsMatch(coords_and_dims, expect_result) self.assertEqual(factories, [])