def test_precipitable_water(): """Test precipitable water with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') pw = precipitable_water(data['dewpoint'], data['pressure'], top=400 * units.hPa) truth = (0.8899441949243486 * units('inches')).to('millimeters') assert_array_equal(pw, truth)
def test_critical_angle(): """Test critical angle with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') ca = critical_angle(data['pressure'], data['u_wind'], data['v_wind'], data['height'], stormu=0 * units('m/s'), stormv=0 * units('m/s')) truth = [140.0626637513269] * units('degrees') assert_almost_equal(ca, truth, 8)
def test_precipitable_water(): """Test precipitable water with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') pw = precipitable_water(data['pressure'], data['dewpoint'], top=400 * units.hPa) truth = 22.60430651 * units.millimeters assert_array_almost_equal(pw, truth, 4)
def test_precipitable_water(): """Test precipitable water with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') pw = precipitable_water(data['pressure'], data['dewpoint'], top=400 * units.hPa) truth = (0.8899441949243486 * units('inches')).to('millimeters') assert_array_equal(pw, truth)
def test_mean_pressure_weighted_temperature(): """Test pressure-weighted mean temperature function with vertical interpolation.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') t, = mean_pressure_weighted(data['pressure'], data['temperature'], height=data['height'], depth=6000 * units('meter')) assert_almost_equal(t, 281.535035296836 * units('kelvin'), 7)
def test_critical_angle(): """Test critical angle with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') ca = critical_angle(data['pressure'], data['u_wind'], data['v_wind'], data['height'], u_storm=0 * units('m/s'), v_storm=0 * units('m/s')) truth = [140.0626637513269] * units('degrees') assert_almost_equal(ca, truth, 8)
def test_bulk_shear_no_depth(): """Test bulk shear with observed sounding and no depth given. Issue #568.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = bulk_shear(data['pressure'], data['u_wind'], data['v_wind'], height=data['height']) truth = [20.225018939, 22.602359692] * units('knots') assert_almost_equal(u.to('knots'), truth[0], 8) assert_almost_equal(v.to('knots'), truth[1], 8)
def test_bulk_shear_no_depth(): """Test bulk shear with observed sounding and no depth given. Issue #568.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = bulk_shear(data['pressure'], data['u_wind'], data['v_wind'], heights=data['height']) truth = [20.225018939, 22.602359692] * units('knots') assert_almost_equal(u.to('knots'), truth[0], 8) assert_almost_equal(v.to('knots'), truth[1], 8)
def test_precipitable_water_xarray(): """Test precipitable water with xarray input.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') press = xr.DataArray(data['pressure'], attrs={'units': str(data['pressure'].units)}) dewp = xr.DataArray(data['dewpoint'], dims=('press',), coords=(press,)) pw = precipitable_water(press, dewp, top=400 * units.hPa) truth = 22.60430651 * units.millimeters assert_almost_equal(pw, truth)
def test_bunkers_motion(): """Test Bunkers storm motion with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') motion = concatenate(bunkers_storm_motion(data['pressure'], data['u_wind'], data['v_wind'], data['height'])) truth = [2.18346161, 0.86094706, 11.6006767, 12.53639395, 6.89206916, 6.69867051] * units('m/s') assert_almost_equal(motion.flatten(), truth, 8)
def test_precipitable_water_no_bounds(): """Test precipitable water with observed sounding and no bounds given.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') dewpoint = data['dewpoint'] pressure = data['pressure'] inds = pressure >= 400 * units.hPa pw = precipitable_water(pressure[inds], dewpoint[inds]) truth = 22.60430651 * units.millimeters assert_array_almost_equal(pw, truth, 4)
def test_bunkers_motion(): """Test Bunkers storm motion with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') motion = concatenate(bunkers_storm_motion(data['pressure'], data['u_wind'], data['v_wind'], data['height'])) truth = [1.4537892577864744, 2.0169333025630616, 10.587950761120482, 13.915130377372801, 6.0208700094534775, 7.9660318399679308] * units('m/s') assert_almost_equal(motion.flatten(), truth, 8)
def test_precipitable_water_no_bounds(): """Test precipitable water with observed sounding and no bounds given.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') dewpoint = data['dewpoint'] pressure = data['pressure'] inds = pressure >= 400 * units.hPa pw = precipitable_water(pressure[inds], dewpoint[inds]) truth = (0.8899441949243486 * units('inches')).to('millimeters') assert_array_equal(pw, truth)
def test_bulk_shear(): """Test bulk shear with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = bulk_shear(data['pressure'], data['u_wind'], data['v_wind'], height=data['height'], depth=6000 * units('meter')) truth = [29.899581266946115, -14.389225800205509] * units('knots') assert_almost_equal(u.to('knots'), truth[0], 8) assert_almost_equal(v.to('knots'), truth[1], 8)
def test_bulk_shear(): """Test bulk shear with observed sounding.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = bulk_shear(data['pressure'], data['u_wind'], data['v_wind'], heights=data['height'], depth=6000 * units('meter')) truth = [29.899581266946115, -14.389225800205509] * units('knots') assert_almost_equal(u.to('knots'), truth[0], 8) assert_almost_equal(v.to('knots'), truth[1], 8)
def test_precipitable_water_no_bounds(): """Test precipitable water with observed sounding and no bounds given.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') dewpoint = data['dewpoint'] pressure = data['pressure'] inds = pressure >= 400 * units.hPa pw = precipitable_water(dewpoint[inds], pressure[inds]) truth = (0.8899441949243486 * units('inches')).to('millimeters') assert_array_equal(pw, truth)
def test_mean_pressure_weighted(): """Test pressure-weighted mean wind function with vertical interpolation.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = mean_pressure_weighted(data['pressure'], data['u_wind'], data['v_wind'], heights=data['height'], depth=6000 * units('meter')) assert_almost_equal(u, 6.0208700094534775 * units('m/s'), 7) assert_almost_equal(v, 7.966031839967931 * units('m/s'), 7)
def test_bulk_shear_elevated(): """Test bulk shear with observed sounding and a base above the surface.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = bulk_shear(data['pressure'], data['u_wind'], data['v_wind'], height=data['height'], bottom=data['height'][0] + 3000 * units('meter'), depth=3000 * units('meter')) truth = [0.9655943923302139, -3.8405428777944466] * units('m/s') assert_almost_equal(u, truth[0], 8) assert_almost_equal(v, truth[1], 8)
def test_mean_pressure_weighted(): """Test pressure-weighted mean wind function with vertical interpolation.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = mean_pressure_weighted(data['pressure'], data['u_wind'], data['v_wind'], height=data['height'], depth=6000 * units('meter')) assert_almost_equal(u, 6.0208700094534775 * units('m/s'), 7) assert_almost_equal(v, 7.966031839967931 * units('m/s'), 7)
def test_bulk_shear_elevated(): """Test bulk shear with observed sounding and a base above the surface.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = bulk_shear(data['pressure'], data['u_wind'], data['v_wind'], heights=data['height'], bottom=data['height'][0] + 3000 * units('meter'), depth=3000 * units('meter')) truth = [0.9655943923302139, -3.8405428777944466] * units('m/s') assert_almost_equal(u, truth[0], 8) assert_almost_equal(v, truth[1], 8)
def test_mean_pressure_weighted_elevated(): """Test pressure-weighted mean wind function with a base above the surface.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = mean_pressure_weighted(data['pressure'], data['u_wind'], data['v_wind'], height=data['height'], depth=3000 * units('meter'), bottom=data['height'][0] + 3000 * units('meter')) assert_almost_equal(u, 8.270829843626476 * units('m/s'), 7) assert_almost_equal(v, 1.7392601775853547 * units('m/s'), 7)
def test_mean_pressure_weighted_elevated(): """Test pressure-weighted mean wind function with a base above the surface.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') u, v = mean_pressure_weighted(data['pressure'], data['u_wind'], data['v_wind'], heights=data['height'], depth=3000 * units('meter'), bottom=data['height'][0] + 3000 * units('meter')) assert_almost_equal(u, 8.270829843626476 * units('m/s'), 7) assert_almost_equal(v, 1.7392601775853547 * units('m/s'), 7)
def test_critical_angle_units(): """Test critical angle with observed sounding and different storm motion units.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') # Set storm motion in m/s ca_ms = critical_angle(data['pressure'], data['u_wind'], data['v_wind'], data['height'], u_storm=10 * units('m/s'), v_storm=10 * units('m/s')) # Set same storm motion in kt and m/s ca_kt_ms = critical_angle(data['pressure'], data['u_wind'], data['v_wind'], data['height'], u_storm=10 * units('m/s'), v_storm=19.4384449244 * units('kt')) # Make sure the resulting critical angles are equal assert_almost_equal(ca_ms, ca_kt_ms, 8)
def test_critical_angle_units(): """Test critical angle with observed sounding and different storm motion units.""" data = get_upper_air_data(datetime(2016, 5, 22, 0), 'DDC') # Set storm motion in m/s ca_ms = critical_angle(data['pressure'], data['u_wind'], data['v_wind'], data['height'], stormu=10 * units('m/s'), stormv=10 * units('m/s')) # Set same storm motion in kt and m/s ca_kt_ms = critical_angle(data['pressure'], data['u_wind'], data['v_wind'], data['height'], stormu=10 * units('m/s'), stormv=19.4384449244 * units('kt')) # Make sure the resulting critical angles are equal assert_almost_equal(ca_ms, ca_kt_ms, 8)