Exemple #1
0
 def test_glacier_melt_step_function(self):
     dtf = 6.0
     temperature = 10.0
     area_m2 = 3600.0/0.001
     sca = 0.5 * area_m2
     gf = 1.0 * area_m2
     m = glacier_melt_step(dtf, temperature, sca, gf)
     self.assertAlmostEqual(1.25, m)  # mm/h
     self.assertAlmostEqual(0.0, glacier_melt_step(dtf, 0.0, sca, gf),5, 'no melt at 0.0 deg C')
     self.assertAlmostEqual(0.0, glacier_melt_step(dtf, 10.0, 0.7, 0.6),5, 'no melt when glacier is covered')
 def test_glacier_melt_step_function(self):
     dtf = 6.0
     temperature = 10.0
     area_m2 = 3600.0 / 0.001
     sca = 0.5 * area_m2
     gf = 1.0 * area_m2
     m = glacier_melt_step(dtf, temperature, sca, gf)
     self.assertAlmostEqual(1.25, m)  # mm/h
     self.assertAlmostEqual(0.0, glacier_melt_step(dtf, 0.0, sca, gf), 5,
                            'no melt at 0.0 deg C')
     self.assertAlmostEqual(0.0, glacier_melt_step(dtf, 10.0, 0.7, 0.6), 5,
                            'no melt when glacier is covered')
 def test_glacier_melt_ts_m3s(self):
     utc = Calendar()
     t0 = utc.time(2016, 10, 1)
     dt = deltahours(1)
     n = 240
     ta = TimeAxis(t0, dt, n)
     area_m2 = 487 * 1000 * 1000  # Jostedalsbreen, largest i Europe
     temperature = TimeSeries(ta=ta,
                              fill_value=10.0,
                              point_fx=fx_policy.POINT_AVERAGE_VALUE)
     sca_values = dv.from_numpy(np.linspace(area_m2 * 1.0, 0.0, num=n))
     sca = TimeSeries(ta=ta,
                      values=sca_values,
                      point_fx=fx_policy.POINT_AVERAGE_VALUE)
     gf = 1.0 * area_m2
     dtf = 6.0
     melt_m3s = create_glacier_melt_ts_m3s(
         temperature, sca, gf,
         dtf)  # Here we get back a melt_ts, that we can do ts-stuff with
     self.assertIsNotNone(melt_m3s)
     full_melt_m3s = glacier_melt_step(dtf, 10.0, 0.0, gf)
     expected_melt_m3s = np.linspace(0.0, full_melt_m3s, num=n)
     assert_array_almost_equal(expected_melt_m3s,
                               melt_m3s.values.to_numpy(), 4)
     # Just to check we can work with the result as a ts in all aspects
     mx2 = melt_m3s * 2.0
     emx2 = expected_melt_m3s * 2.0
     assert_array_almost_equal(emx2, mx2.values.to_numpy(), 4)
Exemple #4
0
 def test_glacier_melt_ts_m3s(self):
     utc = Calendar()
     t0 = utc.time(2016,10,1)
     dt = deltahours(1)
     n = 240
     ta = Timeaxis(t0, dt, n)
     area_m2 = 487*1000*1000  # Jostedalsbreen, largest i Europe
     temperature = Timeseries(ta=ta, fill_value=10.0, point_fx=fx_policy.POINT_AVERAGE_VALUE)
     sca_values = dv.from_numpy(np.linspace(area_m2*1.0,0.0,num=n))
     sca = Timeseries(ta=ta, values=sca_values, point_fx=fx_policy.POINT_AVERAGE_VALUE)
     gf = 1.0 *area_m2
     dtf = 6.0
     melt_m3s = create_glacier_melt_ts_m3s(temperature, sca, gf, dtf) # Here we get back a melt_ts, that we can do ts-stuff with
     self.assertIsNotNone(melt_m3s)
     full_melt_m3s = glacier_melt_step(dtf, 10.0, 0.0, gf)
     expected_melt_m3s = np.linspace(0.0,full_melt_m3s,num=n)
     assert_array_almost_equal(expected_melt_m3s,melt_m3s.values.to_numpy(),4)
     # Just to check we can work with the result as a ts in all aspects
     mx2 = melt_m3s*2.0
     emx2 = expected_melt_m3s * 2.0;
     assert_array_almost_equal(emx2, mx2.values.to_numpy(), 4)