def test_user_bcs_numba(dim, target): """test setting user BCs""" if dim == 1: value = 1 elif dim == 2: value = np.arange(3) elif dim == 3: value = np.arange(9).reshape(3, 3) grid = UnitGrid([3] * dim) bcs = grid.get_boundary_conditions({"type": "user"}) # use normal method to set BCs f1 = ScalarField(grid) f1.set_ghost_cells(bc={target: value}) # use user method to set BCs f2 = ScalarField(grid) setter = bcs.make_ghost_cell_setter() # test whether normal call is a no-op f2._data_full = 3 setter(f2._data_full) np.testing.assert_allclose(f2._data_full, 3) setter(f2._data_full, args={"t": 1}) np.testing.assert_allclose(f2._data_full, 3) f2._data_full = 0 # test whether calling setter with user data works properly setter(f2._data_full, args={target: value}) np.testing.assert_allclose(f1._data_full, f2._data_full)
def test_user_bcs_numpy(dim, target): """test setting user BCs""" value = np.arange(3) if dim == 2 else 1 grid = UnitGrid([3] * dim) bcs = grid.get_boundary_conditions({"type": "user"}) # use normal method to set BCs f1 = ScalarField(grid) f1.set_ghost_cells(bc={target: value}) # use user method to set BCs f2 = ScalarField(grid) # test whether normal call is a no-op f2._data_full = 3 f2.set_ghost_cells(bc=bcs) np.testing.assert_allclose(f2._data_full, 3) f2.set_ghost_cells(bc=bcs, args={"t": 1}) np.testing.assert_allclose(f2._data_full, 3) f2._data_full = 0 # test whether calling setter with user data works properly bcs.set_ghost_cells(f2._data_full, args={target: value}) np.testing.assert_allclose(f1._data_full, f2._data_full)