예제 #1
0
def test_calc_lwf(class_objects, params_objects):
    d_source, d_class, s_width = class_objects
    obj = drizzle.DrizzleProducts(d_source, params_objects)
    lwc_in = np.array([[0.001, 0.001, 0.002], [0.003, 0.002, 0.001]])
    expected = np.array([[0.001, 0.005508, 0.011016],
                         [0.016524, 0.011016, 0.001]])
    testing.assert_array_almost_equal(obj._calc_lwf(lwc_in), expected)
예제 #2
0
def test_calc_v_air(class_objects, params_objects):
    d_source, d_class, s_width = class_objects
    obj = drizzle.DrizzleProducts(d_source, params_objects)
    d_v = np.array([[2.0, 2.0, 4.0], [1.0, 3.0, 5.0]])
    obj._ind_drizzle = (np.array([0, 1]), np.array([1, 2]))
    expected = np.array([[-2.0, 0.0, -4.0], [-1.0, -3.0, -2.0]])
    testing.assert_array_almost_equal(obj._calc_v_air(d_v), expected)
예제 #3
0
def test_calc_lwc(class_objects, params_objects):
    d_source, _, _ = class_objects
    obj = drizzle.DrizzleProducts(d_source, params_objects)
    dia, mu, s = [obj._params.get(key) for key in ("Do", "mu", "S")]
    gamma_ratio = drizzle.gamma(4 + mu) / drizzle.gamma(3 + mu) / (3.67 + mu)
    expected = 1000 / 3 * obj._data.beta * s * dia * gamma_ratio
    testing.assert_array_almost_equal(obj._calc_lwc(), expected)
예제 #4
0
def test_calc_density(class_objects, params_objects):
    d_source, _, _ = class_objects
    obj = drizzle.DrizzleProducts(d_source, params_objects)
    obj._data.z = np.array([[1, 1, 1], [1, 1, 1]])
    a = 3.67**6 / 1**6
    expected = np.array([[0.0, a, a], [a, a, 0.0]])
    testing.assert_array_almost_equal(obj._calc_density(), expected)
예제 #5
0
def test_find_indices(class_objects, params_objects):
    d_source, d_class, s_width = class_objects
    obj = drizzle.DrizzleProducts(d_source, params_objects)
    obj._params["Do"] = np.array([[0.0, 1.0, 1.0], [1.0, 1.0, 0.0]])
    x, y = obj._find_indices()
    expected = (np.array([0, 0, 1, 1]), np.array([1, 2, 0, 1]))
    testing.assert_array_almost_equal(x, expected)
예제 #6
0
def test_calc_fall_velocity(class_objects, params_objects):
    # TODO: fix this
    d_source, d_class, s_width = class_objects
    obj = drizzle.DrizzleProducts(d_source, params_objects)
    compare = np.array([[0, -7.11002091, -7.11002091],
                        [-7.11002091, -7.11002091, 0]])
    testing.assert_array_almost_equal(obj._calc_fall_velocity(), compare)
예제 #7
0
def result(class_objects, params_objects):
    d_source, d_class, s_width = class_objects
    errors = get_drizzle_error(d_source, params_objects)
    cal_products = drizzle.DrizzleProducts(d_source, params_objects)
    return {**params_objects.params, **cal_products.derived_products, **errors}
예제 #8
0
def test_calc_derived_products(class_objects, params_objects, key):
    d_source, d_class, s_width = class_objects
    obj = drizzle.DrizzleProducts(d_source, params_objects)
    dictio = obj._calc_derived_products()
    assert key in dictio.keys()