def test_no_el(): """Test equilibrium layer calculation when there is no EL in the data.""" levels = np.array([959., 867.9, 779.2, 647.5, 472.5, 321.9, 251.]) * units.mbar temperatures = np.array([22.2, 17.4, 14.6, 1.4, -17.6, -39.4, -52.5]) * units.celsius dewpoints = np.array([19., 14.3, -11.2, -16.7, -21., -43.3, -56.7]) * units.celsius el_pressure, el_temperature = el(levels, temperatures, dewpoints) assert assert_nan(el_pressure, levels.units) assert assert_nan(el_temperature, temperatures.units)
def test_no_lfc(): """Test LFC calculation when there is no LFC in the data.""" levels = np.array([959., 867.9, 779.2, 647.5, 472.5, 321.9, 251.]) * units.mbar temperatures = np.array([22.2, 17.4, 14.6, 1.4, -17.6, -39.4, -52.5]) * units.celsius dewpoints = np.array([9., 4.3, -21.2, -26.7, -31., -53.3, -66.7]) * units.celsius lfc_pressure, lfc_temperature = lfc(levels, temperatures, dewpoints) assert assert_nan(lfc_pressure, levels.units) assert assert_nan(lfc_temperature, temperatures.units)
def test_lfc_sfc_precision(): """Test LFC when there are precision issues with the parcel path.""" levels = np.array([839., 819.4, 816., 807., 790.7, 763., 736.2, 722., 710.1, 700.]) * units.mbar temperatures = np.array([20.6, 22.3, 22.6, 22.2, 20.9, 18.7, 16.4, 15.2, 13.9, 12.8]) * units.celsius dewpoints = np.array([10.6, 8., 7.6, 6.2, 5.7, 4.7, 3.7, 3.2, 3., 2.8]) * units.celsius lfc_pressure, lfc_temp = lfc(levels, temperatures, dewpoints) assert assert_nan(lfc_pressure, levels.units) assert assert_nan(lfc_temp, temperatures.units)
def test_no_el_multi_crossing(): """Test el calculation with no el and severel parcel path-profile crossings.""" levels = np.array([918., 911., 880., 873.9, 850., 848., 843.5, 818., 813.8, 785., 773., 763., 757.5, 730.5, 700., 679., 654.4, 645., 643.9]) * units.mbar temperatures = np.array([24.2, 22.8, 19.6, 19.1, 17., 16.8, 16.5, 15., 14.9, 14.4, 16.4, 16.2, 15.7, 13.4, 10.6, 8.4, 5.7, 4.6, 4.5]) * units.celsius dewpoints = np.array([19.5, 17.8, 16.7, 16.5, 15.8, 15.7, 15.3, 13.1, 12.9, 11.9, 6.4, 3.2, 2.6, -0.6, -4.4, -6.6, -9.3, -10.4, -10.5]) * units.celsius el_pressure, el_temperature = el(levels, temperatures, dewpoints) assert assert_nan(el_pressure, levels.units) assert assert_nan(el_temperature, temperatures.units)
def test_el_small_surface_instability(): """Test that no EL is found when there is a small pocket of instability at the sfc.""" levels = np.array([959., 931.3, 925., 899.3, 892., 867.9, 850., 814., 807.9, 790., 779.2, 751.3, 724.3, 700., 655., 647.5, 599.4, 554.7, 550., 500.]) * units.mbar temperatures = np.array([22.2, 20.2, 19.8, 18.4, 18., 17.4, 17., 15.4, 15.4, 15.6, 14.6, 12., 9.4, 7., 2.2, 1.4, -4.2, -9.7, -10.3, -14.9]) * units.degC dewpoints = np.array([20., 18.5, 18.1, 17.9, 17.8, 15.3, 13.5, 6.4, 2.2, -10.4, -10.2, -9.8, -9.4, -9., -15.8, -15.7, -14.8, -14., -13.9, -17.9]) * units.degC el_pressure, el_temperature = el(levels, temperatures, dewpoints) assert assert_nan(el_pressure, levels.units) assert assert_nan(el_temperature, temperatures.units)
def test_no_el_parcel_colder(): """Tests no EL when parcel stays colder than environment. INL 20170925-12Z.""" levels = np.array([974., 946., 925., 877.2, 866., 850., 814.6, 785., 756.6, 739., 729.1, 700., 686., 671., 641., 613., 603., 586., 571., 559.3, 539., 533., 500., 491., 477.9, 413., 390., 378., 345., 336.]) * units.mbar temperatures = np.array([10., 8.4, 7.6, 5.9, 7.2, 7.6, 6.8, 7.1, 7.7, 7.8, 7.7, 5.6, 4.6, 3.4, 0.6, -0.9, -1.1, -3.1, -4.7, -4.7, -6.9, -7.5, -11.1, -10.9, -12.1, -20.5, -23.5, -24.7, -30.5, -31.7]) * units.celsius dewpoints = np.array([8.9, 8.4, 7.6, 5.9, 7.2, 7., 5., 3.6, 0.3, -4.2, -12.8, -12.4, -8.4, -8.6, -6.4, -7.9, -11.1, -14.1, -8.8, -28.1, -18.9, -14.5, -15.2, -15.1, -21.6, -41.5, -45.5, -29.6, -30.6, -32.1]) * units.celsius el_pressure, el_temperature = el(levels, temperatures, dewpoints) assert assert_nan(el_pressure, levels.units) assert assert_nan(el_temperature, temperatures.units)
def test_no_el_parcel_colder(): """Test no EL when parcel stays colder than environment. INL 20170925-12Z.""" levels = np.array([974., 946., 925., 877.2, 866., 850., 814.6, 785., 756.6, 739., 729.1, 700., 686., 671., 641., 613., 603., 586., 571., 559.3, 539., 533., 500., 491., 477.9, 413., 390., 378., 345., 336.]) * units.mbar temperatures = np.array([10., 8.4, 7.6, 5.9, 7.2, 7.6, 6.8, 7.1, 7.7, 7.8, 7.7, 5.6, 4.6, 3.4, 0.6, -0.9, -1.1, -3.1, -4.7, -4.7, -6.9, -7.5, -11.1, -10.9, -12.1, -20.5, -23.5, -24.7, -30.5, -31.7]) * units.celsius dewpoints = np.array([8.9, 8.4, 7.6, 5.9, 7.2, 7., 5., 3.6, 0.3, -4.2, -12.8, -12.4, -8.4, -8.6, -6.4, -7.9, -11.1, -14.1, -8.8, -28.1, -18.9, -14.5, -15.2, -15.1, -21.6, -41.5, -45.5, -29.6, -30.6, -32.1]) * units.celsius el_pressure, el_temperature = el(levels, temperatures, dewpoints) assert assert_nan(el_pressure, levels.units) assert assert_nan(el_temperature, temperatures.units)
def test_assert_nan_checks_units(): """Test that assert_nan properly checks units.""" with pytest.raises(AssertionError): assert_nan(np.nan * units.m, units.second)
def test_assert_nan(): """Test that assert_nan actually fails when not given a NaN.""" with pytest.raises(AssertionError): assert_nan(1.0 * units.m, units.inches)