Esempio n. 1
0
 def setUp(self):
     self.quantities = {'p': 8.9e4, 'Tv': 4.5+273.15, 'theta': 14.+273.15,
                        'rv': 1e-3, 'Tlcl': -22.5+273.15,
                        'thetae': 17.+273.15, 'Tw': -2.5+273.15,
                        'Td': -18.5+273.15, 'plcl': 62500.,
                        }
     self.quantities['T'] = calculate('T', **self.quantities)
     self.quantities['rho'] = calculate('rho', **self.quantities)
     self.add_assumptions = ('bolton', 'unfrozen bulb')
Esempio n. 2
0
 def setUp(self):
     self.quantities = {'p': 8.9e4, 'Tv': 9.+273.15, 'theta': 18.4+273.15,
                        'rv': 6e-3, 'Tlcl': 3.8+273.15,
                        'thetae': 36.5+273.15,
                        'Tw': 6.5+273.15, 'Td': 4.8+273.15, 'plcl': 83500.,
                        }
     self.quantities['T'] = calculate('T', **self.quantities)
     self.quantities['rho'] = calculate('rho', **self.quantities)
     self.add_assumptions = ('bolton', 'unfrozen bulb')
Esempio n. 3
0
 def setUp(self):
     self.quantities = {'p': 9e4, 'theta': 14.+273.15,
                        'rv': 1e-3, 'Tlcl': -22.+273.15,
                        'thetae': 17.+273.15, 'Tw': -4.+273.15,
                        'Td': -18.+273.15, 'plcl': 65000.,
                        }
     self.quantities['T'] = calculate('T', **self.quantities)
     self.quantities['Tv'] = calculate('Tv', **self.quantities)
     self.quantities['rho'] = calculate('rho', **self.quantities)
     self.add_assumptions = ('bolton', 'unfrozen bulb')
Esempio n. 4
0
 def setUp(self):
     self.quantities = {'p': 8.9e4, 'theta': 18.4+273.15,
                        'rv': 6e-3, 'Tlcl': 3.8+273.15,
                        'thetae': 36.5+273.15,
                        'Tw': 6.5+273.15, 'Td': 4.8+273.15, 'plcl': 83500.,
                        }
     self.quantities['T'] = calculate('T', **self.quantities)
     self.quantities['Tv'] = calculate('Tv', **self.quantities)
     self.quantities['rho'] = calculate('rho', **self.quantities)
     self.add_assumptions = ('bolton', 'unfrozen bulb')
Esempio n. 5
0
 def setUp(self):
     self.quantities = {'p': 8.9e2, 'theta': 14.+273.15,
                        'rv': 1., 'Tlcl': -22.5+273.15,
                        'thetae': 17.+273.15, 'Tw': -2.5,
                        'Td': -18.5+273.15, 'plcl': 62500.,
                        }
     self.units = {'p_unit': 'hPa', 'Tv_units': 'degC', 'Tw_unit': 'degC',
                   'rv_unit': 'g/kg'}
     kwargs = {}
     kwargs.update(self.quantities)
     kwargs.update(self.units)
     self.quantities['T'] = calculate('T', **kwargs)
     self.quantities['Tv'] = calculate('Tv', **kwargs)
     self.quantities['rho'] = calculate('rho', **kwargs)
     self.add_assumptions = ('bolton', 'unfrozen bulb')
Esempio n. 6
0
 def test_double_reverse_calculation(self):
     rho, Tv = calculate('rho', 'Tv', add_assumptions=('Tv equals T',),
                         **self.vars2)
     assert (rho == 1/Rd).all()
     self.assertTrue(isinstance(rho, np.ndarray),
                     'returned rho should be ndarray')
     self.assertTrue(isinstance(Tv, np.ndarray),
                     'returned Tv should be ndarray')
Esempio n. 7
0
 def test_double_reverse_calculation(self):
     rho, Tv = calculate('rho',
                         'Tv',
                         add_assumptions=('Tv equals T', ),
                         **self.vars2)
     assert (rho == 1 / Rd).all()
     assert isinstance(rho, np.ndarray)
     assert isinstance(Tv, np.ndarray)
Esempio n. 8
0
 def test_double_calculation(self):
     Tv, rho = calculate('Tv', 'rho', add_assumptions=('Tv equals T',),
                         **self.vars2)
     assert Tv.shape == self.shape
     assert rho.shape == self.shape
     assert (rho == 1/Rd).all()
     assert isinstance(rho, np.ndarray)
     assert isinstance(Tv, np.ndarray)
Esempio n. 9
0
 def test_double_calculation(self):
     Tv, rho = calculate('Tv',
                         'rho',
                         add_assumptions=('Tv equals T', ),
                         **self.vars2)
     assert Tv.shape == self.shape
     assert rho.shape == self.shape
     assert (rho == 1 / Rd).all()
     assert isinstance(rho, np.ndarray)
     assert isinstance(Tv, np.ndarray)
Esempio n. 10
0
 def test_returns_same_value(self):
     for quantity in self.units_dict.keys():
         for unit in self.units_dict[quantity]:
             kwargs = {}
             kwargs[quantity + '_unit'] = unit
             kwargs[quantity] = 1.5
             result = calculate(quantity, **kwargs)
             print(result, quantity, unit)
             self.assertAlmostEqual(
                 result, 1.5, msg='calculate should return the same value '
                 'when given a value as input')
Esempio n. 11
0
 def _generator(self, quantity, tolerance):
     skew_T_value = self.quantities.pop(quantity)
     calculated_value, funcs = calculate(
         quantity, add_assumptions=self.add_assumptions,
         debug=True, **self.quantities)
     diff = abs(skew_T_value - calculated_value)
     if diff > tolerance:
         err_msg = ('Value {0:.4f} is too far away from '
                    '{1:.4f} for {2}.'.format(
                        calculated_value, skew_T_value, quantity))
         err_msg += '\nfunctions used:\n'
         err_msg += '\n'.join([f.__name__ for f in funcs])
         raise AssertionError(err_msg)
Esempio n. 12
0
 def _generator(self, quantity, tolerance):
     skew_T_value = self.quantities.pop(quantity)
     calculated_value, funcs = calculate(
         quantity, add_assumptions=self.add_assumptions,
         debug=True, **self.quantities)
     diff = abs(skew_T_value - calculated_value)
     if diff > tolerance:
         err_msg = ('Value {:.2f} is too far away from '
                    '{:.2f} for {}.'.format(
                        calculated_value, skew_T_value, quantity))
         err_msg += '\nfunctions used:\n'
         err_msg += '\n'.join([f.__name__ for f in funcs])
         raise AssertionError(err_msg)
Esempio n. 13
0
 def test_calculate_Tw(self):
     quantity = 'Tw'
     skew_T_value = self.quantities.pop(quantity)
     calculated_value, funcs = calculate(
         quantity, add_assumptions=('bolton', 'unfrozen bulb'),
         debug=True,
         **self.quantities)
     diff = abs(skew_T_value - calculated_value)
     if diff > 1.:
         err_msg = ('Value {:.2f} is too far away from '
                    '{:.2f} for {}.'.format(
                        calculated_value, skew_T_value, quantity))
         err_msg += '\nfunctions used:\n'
         err_msg += '\n'.join([f.__name__ for f in funcs])
         raise AssertionError(err_msg)
Esempio n. 14
0
 def test_calculate_Tw(self):
     quantity = 'Tw'
     skew_T_value = self.quantities.pop(quantity)
     calculated_value, funcs = calculate(quantity,
                                         add_assumptions=('bolton',
                                                          'unfrozen bulb'),
                                         debug=True,
                                         **self.quantities)
     diff = abs(skew_T_value - calculated_value)
     if diff > 1.:
         err_msg = ('Value {:.2f} is too far away from '
                    '{:.2f} for {}.'.format(calculated_value, skew_T_value,
                                            quantity))
         err_msg += '\nfunctions used:\n'
         err_msg += '\n'.join([f.__name__ for f in funcs])
         raise AssertionError(err_msg)
Esempio n. 15
0
 def test_calculate_thetae(self):
     quantity = 'thetae'
     skew_T_value = self.quantities.pop(quantity)
     self.quantities.pop('Tlcl')  # let us calculate this ourselves
     kwargs = {}
     kwargs.update(self.quantities)
     kwargs.update(self.units)
     calculated_value, funcs = calculate(
         quantity, add_assumptions=('bolton', 'unfrozen bulb'),
         debug=True,
         **kwargs)
     diff = abs(skew_T_value - calculated_value)
     if diff > 1.:
         err_msg = ('Value {0:.2f} is too far away from '
                    '{1:.2f} for {2}.'.format(
                        calculated_value, skew_T_value, quantity))
         err_msg += '\nfunctions used:\n'
         err_msg += '\n'.join([f.__name__ for f in funcs])
         raise AssertionError(err_msg)
Esempio n. 16
0
 def test_qv_from_rv(self):
     assert np.isclose(calculate('qv', rv=0.005), 0.0049751243781094535)
Esempio n. 17
0
 def test_T_from_Tv(self):
     assert calculate('T', Tv=1., add_assumptions=('Tv equals T',)) == 1.
     assert calculate('T', Tv=5., add_assumptions=('Tv equals T',)) == 5.
Esempio n. 18
0
 def test_rv_from_qv(self):
     assert np.isclose(calculate('rv', qv=0.005), 0.005025125628140704)
Esempio n. 19
0
 def test_qv_from_rv(self):
     self.assertAlmostEqual(calculate('qv', rv=0.005), 0.004975124378109453)
Esempio n. 20
0
 def test_double_reverse_calculation(self):
     rho, Tv = calculate('rho', 'Tv', add_assumptions=('Tv equals T',),
                         **self.vars2)
     assert (rho == 1/Rd).all()
     assert isinstance(rho, np.ndarray)
     assert isinstance(Tv, np.ndarray)
Esempio n. 21
0
 def test_returns_float(self):
     rho = calculate('rho', Tv=1., p=1.)
     self.assertTrue(isinstance(rho, float), 'returned rho should be float')
Esempio n. 22
0
 def test_depth_2_calculation(self):
     rho = calculate('rho', add_assumptions=('Tv equals T', ), **self.vars2)
     assert rho.shape == self.shape
     assert (rho == 1 / Rd).all()
     assert isinstance(rho, np.ndarray)
Esempio n. 23
0
 def test_input_unit(self):
     rho = calculate('rho', Tv=1., p=0.01, p_unit='hPa')
     self.assertEqual(rho, 1. / Rd)
Esempio n. 24
0
 def test_simple_calculation(self):
     rho = calculate('rho', **self.vars1)
     assert (rho.shape == self.shape)
     assert (rho == 1/Rd).all()
     assert isinstance(rho, np.ndarray)
Esempio n. 25
0
 def test_simple_calculation(self):
     rho = calculate('rho', **self.vars1)
     assert (rho.shape == self.shape)
     assert (rho == 1 / Rd).all()
     self.assertTrue(isinstance(rho, np.ndarray),
                     'returned rho should be ndarray')
Esempio n. 26
0
 def test_qv_from_rv(self):
     assert np.isclose(calculate('qv', rv=0.005), 0.0049751243781094535)
Esempio n. 27
0
 def test_T_from_Tv(self):
     assert calculate('T', Tv=1., add_assumptions=('Tv equals T', )) == 1.
     assert calculate('T', Tv=5., add_assumptions=('Tv equals T', )) == 5.
Esempio n. 28
0
 def test_output_unit(self):
     p = calculate('p', Tv=1., rho=1. / Rd, p_unit='millibar')
     self.assertEqual(p, 0.01)
Esempio n. 29
0
 def test_simple_calculation(self):
     rho = calculate('rho', **self.vars1)
     assert (rho.shape == self.shape)
     assert (rho == 1 / Rd).all()
     assert isinstance(rho, np.ndarray)
Esempio n. 30
0
 def test_rv_from_qv(self):
     self.assertAlmostEqual(calculate('rv', qv=0.005), 0.005025125628140704)
Esempio n. 31
0
 def test_returns_float(self):
     rho = calculate('rho', Tv=1., p=1.)
     assert isinstance(rho, float)
Esempio n. 32
0
 def test_depth_2_calculation(self):
     rho = calculate('rho', add_assumptions=('Tv equals T', ), **self.vars2)
     assert rho.shape == self.shape
     assert (rho == 1 / Rd).all()
     self.assertTrue(isinstance(rho, np.ndarray),
                     'returned rho should be ndarray')
Esempio n. 33
0
 def test_depth_2_calculation(self):
     rho = calculate('rho', add_assumptions=('Tv equals T',), **self.vars2)
     assert rho.shape == self.shape
     assert (rho == 1/Rd).all()
     assert isinstance(rho, np.ndarray)
Esempio n. 34
0
 def test_rv_from_qv(self):
     assert np.isclose(calculate('rv', qv=0.005), 0.005025125628140704)
Esempio n. 35
0
 def test_returns_float(self):
     rho = calculate('rho', Tv=1., p=1.)
     assert isinstance(rho, float)