def test_outside_box():
    grid = StructuredGrid()
    # test by setting the scalar field to the y coordinate
    inside = grid.inside(grid.barycentre + 5)
    assert np.all(
        ~inside == np.any((grid.barycentre + 5) > grid.maximum, axis=1))
    inside = grid.inside(grid.barycentre - 5)
    assert np.all(
        ~inside == np.any((grid.barycentre - 5) < grid.origin, axis=1))

    cix, ciy, ciz = grid.position_to_cell_index(grid.barycentre - 5)
    assert np.all(cix[inside] < grid.nsteps_cells[0])
    assert np.all(ciy[inside] < grid.nsteps_cells[1])
    assert np.all(ciz[inside] < grid.nsteps_cells[2])
    cornersx, cornersy, cornersz = grid.cell_corner_indexes(cix, ciy, ciz)
    assert np.all(cornersx[inside] < grid.nsteps[0])
    assert np.all(cornersy[inside] < grid.nsteps[1])
    assert np.all(cornersz[inside] < grid.nsteps[2])
    globalidx = grid.global_indicies(
        np.dstack([cornersx, cornersy, cornersz]).T)
    # print(globalidx[inside],grid.n_nodes,inside)
    assert np.all(globalidx[inside] < grid.n_nodes)
    inside = grid.inside(grid.barycentre - 5)
    inside, grid.position_to_cell_corners(grid.barycentre - 5)
    vector = grid.evaluate_gradient(grid.barycentre - 5, grid.nodes[:, 1])
    assert np.sum(np.mean(vector[inside, :], axis=0) -
                  np.array([0, 1, 0])) == 0
    vector = grid.evaluate_gradient(grid.nodes, grid.nodes[:, 1])
def test_evaluate_gradient():
    grid = StructuredGrid()
    # test by setting the scalar field to the y coordinate
    vector = grid.evaluate_gradient(grid.barycentre, grid.nodes[:, 1])
    assert np.sum(vector - np.array([0, 1, 0])) == 0

    # same test but for a bigger grid, making sure scaling for cell is ok
    grid = StructuredGrid(step_vector=np.array([100, 100, 100]))
    vector = grid.evaluate_gradient(grid.barycentre, grid.nodes[:, 1])
    assert np.sum(vector - np.array([0, 1, 0])) == 0
def test_evaluate_gradient2():
    # this test is the same as above but we will use a random vector
    np.random.seed(0)
    for i in range(10):
        step = np.random.uniform(0, 100)
        grid = StructuredGrid(step_vector=np.array([step, step, step]))

        # define random vector
        n = np.random.random(3)
        n /= np.linalg.norm(n)
        distance = (n[0] * grid.nodes[:, 0] + n[1] * grid.nodes[:, 1] +
                    n[2] * grid.nodes[:, 2])
        vector = grid.evaluate_gradient(np.random.uniform(1, 8, size=(100, 3)),
                                        distance)
        assert np.all(np.isclose(np.sum(vector - n[None, :], axis=1),
                                 0)) == True
    assert i == 9
Ejemplo n.º 4
0
def test_evaluate_gradient():
    grid = StructuredGrid()
    grid.update_property('Y', grid.nodes[:, 1])
    vector = np.mean(grid.evaluate_gradient(grid.barycentre(), 'Y'), axis=0)
    # vector/=np.linalg.norm(vector)
    assert np.sum(vector - np.array([0, grid.step_vector[1], 0])) == 0