예제 #1
0
def test_add_interpolated_1d():
    """ test the `add_interpolated` method for 1d systems """
    grid = PolarGrid(3, 5)
    f = ScalarField(grid)
    g = f.copy()
    a = np.random.random()
    for r in np.linspace(0, 3, 8).reshape(8, 1):
        f.data = g.data = 0
        f.add_interpolated(r, a)
        assert f.integral == pytest.approx(a)
        grid.make_add_interpolated_compiled()(g.data, r, a)
        np.testing.assert_array_almost_equal(f.data, g.data)
예제 #2
0
def test_add_interpolated_scalar(example_grid):
    """ test the `add_interpolated` method """
    f = ScalarField(example_grid)
    a = np.random.random()

    c = tuple(example_grid.point_to_cell(example_grid.get_random_point()))
    p = example_grid.cell_to_point(c, cartesian=False)
    f.add_interpolated(p, a)
    assert f.data[c] == pytest.approx(a / example_grid.cell_volumes[c])

    f.add_interpolated(example_grid.get_random_point(cartesian=False), a)
    assert f.integral == pytest.approx(2 * a)

    f.data = 0  # reset
    add_interpolated = example_grid.make_add_interpolated_compiled()
    c = tuple(example_grid.point_to_cell(example_grid.get_random_point()))
    p = example_grid.cell_to_point(c, cartesian=False)
    add_interpolated(f.data, p, a)
    assert f.data[c] == pytest.approx(a / example_grid.cell_volumes[c])

    add_interpolated(f.data, example_grid.get_random_point(cartesian=False), a)
    assert f.integral == pytest.approx(2 * a)