Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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')
Example #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)
Example #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)
Example #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)
Example #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')
Example #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)
Example #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)
Example #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)
Example #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)
Example #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)
Example #16
0
 def test_qv_from_rv(self):
     assert np.isclose(calculate('qv', rv=0.005), 0.0049751243781094535)
Example #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.
Example #18
0
 def test_rv_from_qv(self):
     assert np.isclose(calculate('rv', qv=0.005), 0.005025125628140704)
Example #19
0
 def test_qv_from_rv(self):
     self.assertAlmostEqual(calculate('qv', rv=0.005), 0.004975124378109453)
Example #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)
Example #21
0
 def test_returns_float(self):
     rho = calculate('rho', Tv=1., p=1.)
     self.assertTrue(isinstance(rho, float), 'returned rho should be float')
Example #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)
Example #23
0
 def test_input_unit(self):
     rho = calculate('rho', Tv=1., p=0.01, p_unit='hPa')
     self.assertEqual(rho, 1. / Rd)
Example #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)
Example #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')
Example #26
0
 def test_qv_from_rv(self):
     assert np.isclose(calculate('qv', rv=0.005), 0.0049751243781094535)
Example #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.
Example #28
0
 def test_output_unit(self):
     p = calculate('p', Tv=1., rho=1. / Rd, p_unit='millibar')
     self.assertEqual(p, 0.01)
Example #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)
Example #30
0
 def test_rv_from_qv(self):
     self.assertAlmostEqual(calculate('rv', qv=0.005), 0.005025125628140704)
Example #31
0
 def test_returns_float(self):
     rho = calculate('rho', Tv=1., p=1.)
     assert isinstance(rho, float)
Example #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')
Example #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)
Example #34
0
 def test_rv_from_qv(self):
     assert np.isclose(calculate('rv', qv=0.005), 0.005025125628140704)
Example #35
0
 def test_returns_float(self):
     rho = calculate('rho', Tv=1., p=1.)
     assert isinstance(rho, float)