def test_rect_grid_2d(): """test 2D grids""" grid = CartesianGrid([[2], [2]], 4, periodic=True) assert grid.get_image_data(np.zeros(grid.shape))["extent"] == [0, 2, 0, 2] for _ in range(10): p = np.random.randn(2) assert np.all(grid.polar_coordinates_real(p) < np.sqrt(2)) periodic = random.choices([True, False], k=2) grid = CartesianGrid([[4], [4]], 4, periodic=periodic) assert grid.dim == 2 assert grid.volume == 16 np.testing.assert_array_equal(grid.discretization, np.ones(2)) assert grid.typical_discretization == 1 assert grid.polar_coordinates_real((1, 1)).shape == (4, 4) grid = CartesianGrid([[-2, 2], [-2, 2]], [4, 8], periodic=periodic) assert grid.dim == 2 assert grid.volume == 16 assert grid.typical_discretization == 0.75 assert grid.polar_coordinates_real((1, 1)).shape == (4, 8) # test conversion between polar and Cartesian coordinates c1 = grid.cell_coords p = np.random.random(2) * grid.shape d, a = grid.polar_coordinates_real(p, ret_angle=True) c2 = grid.from_polar_coordinates(d, a, p) assert np.allclose(grid.distance_real(c1, c2), 0)
def test_rect_grid_1d(): """test 1D grids""" grid = CartesianGrid([32], 16, periodic=False) assert grid.dim == 1 assert grid.volume == 32 assert grid.typical_discretization == 2 np.testing.assert_array_equal(grid.discretization, np.full(1, 2)) assert grid.polar_coordinates_real(0).shape == (16, ) grid = CartesianGrid([[-16, 16]], 8, periodic=True) assert grid.cuboid.pos == [-16] assert grid.shape == (8, ) assert grid.dim == 1 assert grid.volume == 32 assert grid.typical_discretization == 4 assert grid.polar_coordinates_real(1).shape == (8, ) np.testing.assert_allclose(grid.normalize_point(-16 - 1e-10), 16 - 1e-10) np.testing.assert_allclose(grid.normalize_point(-16 + 1e-10), -16 + 1e-10) np.testing.assert_allclose(grid.normalize_point(16 - 1e-10), 16 - 1e-10) np.testing.assert_allclose(grid.normalize_point(16 + 1e-10), -16 + 1e-10) for periodic in [True, False]: a, b = np.random.random(2) grid = CartesianGrid([[a, a + b]], 8, periodic=periodic) # test conversion between polar and Cartesian coordinates c1 = grid.cell_coords p = np.random.random(1) * grid.shape d, a = grid.polar_coordinates_real(p, ret_angle=True) c2 = grid.from_polar_coordinates(d, a, p) assert np.allclose(grid.distance_real(c1, c2), 0)