def test_setting_boundary_conditions(): """test setting some boundary conditions""" grid = CylindricalSymGrid(1, [0, 1], 3) b_inner = NeumannBC(grid, 0, upper=False) assert grid.get_boundary_conditions("natural")[0].low == b_inner assert grid.get_boundary_conditions({"value": 2})[0].low != b_inner
def test_grid_div_grad_cyl(): """compare div grad to laplacian""" grid = CylindricalSymGrid(2 * np.pi, (0, 2 * np.pi), (16, 16), periodic_z=True) field = ScalarField.from_expression(grid, "cos(r) + sin(z)") bcs = grid.get_boundary_conditions() a = field.laplace(bcs) c = field.gradient(bcs) b = c.divergence(bcs.differentiated) res = ScalarField.from_expression(grid, "-sin(r)/r - cos(r) - sin(z)") # do not test the radial boundary points np.testing.assert_allclose(a.data[1:-1], res.data[1:-1], rtol=0.1, atol=0.05) np.testing.assert_allclose(b.data[1:-1], res.data[1:-1], rtol=0.1, atol=0.05)
def test_setting_domain_cylindrical(): """test various versions of settings bcs for cylindrical grids""" grid = CylindricalSymGrid(1, [0, 1], [2, 2], periodic_z=False) grid.get_boundary_conditions("auto_periodic_neumann") grid.get_boundary_conditions(["derivative", "derivative"]) with pytest.raises(ValueError): grid.get_boundary_conditions(["derivative"]) with pytest.raises(ValueError): grid.get_boundary_conditions(["derivative"] * 3) with pytest.raises(RuntimeError): grid.get_boundary_conditions(["derivative", "periodic"]) grid = CylindricalSymGrid(1, [0, 1], [2, 2], periodic_z=True) grid.get_boundary_conditions("auto_periodic_neumann") grid.get_boundary_conditions(["derivative", "periodic"]) with pytest.raises(RuntimeError): grid.get_boundary_conditions(["derivative", "derivative"])