def test_poisson_solver_polar(): """ test the poisson solver on Polar grids """ grid = PolarGrid(4, 8) for bc_val in ["natural", {"value": 1}]: bcs = grid.get_boundary_conditions(bc_val) poisson = grid.get_operator("poisson_solver", bcs) laplace = grid.get_operator("laplace", bcs) d = np.random.random(grid.shape) d -= ScalarField(grid, d).average # balance the right hand side np.testing.assert_allclose(laplace(poisson(d)), d, err_msg=f"bcs = {bc_val}") grid = PolarGrid([2, 4], 8) for bc_val in ["natural", {"value": 1}]: bcs = grid.get_boundary_conditions(bc_val) poisson = grid.get_operator("poisson_solver", bcs) laplace = grid.get_operator("laplace", bcs) d = np.random.random(grid.shape) d -= ScalarField(grid, d).average # balance the right hand side np.testing.assert_allclose(laplace(poisson(d)), d, err_msg=f"bcs = {bc_val}")
def test_conservative_laplace(): """ test and compare the two implementation of the laplace operator """ grid = PolarGrid(1.5, 8) f = ScalarField.random_uniform(grid) bcs = grid.get_boundary_conditions("natural") lap = ops.make_laplace(bcs) np.testing.assert_allclose(f.apply(lap).integral, 0, atol=1e-12)