def test_insert_polar(): """test the `insert` method for polar systems""" grid = PolarSymGrid(3, 5) f = ScalarField(grid) g = f.copy() a = np.random.random() for r in np.linspace(0, 3, 8).reshape(8, 1): f.data = g.data = 0 f.insert(r, a) assert f.integral == pytest.approx(a) grid.make_inserter_compiled()(g.data, r, a) np.testing.assert_array_almost_equal(f.data, g.data)
def test_localization_polar(): """tests simple droplets localization in polar grid""" radius = np.random.uniform(2, 3) width = np.random.uniform(0.5, 1.5) d1 = DiffuseDroplet((0, 0), radius, interface_width=width) grid_radius = 6 + 2 * np.random.random() grid = PolarSymGrid(grid_radius, 16) field = d1.get_phase_field(grid) emulsion = image_analysis.locate_droplets(field, refine=True) assert len(emulsion) == 1 d2 = emulsion[0] np.testing.assert_almost_equal(d1.position, d2.position, decimal=5) assert d1.radius == pytest.approx(d2.radius, rel=1e-5) assert d1.interface_width == pytest.approx(d2.interface_width, rel=1e-5) emulsion = image_analysis.locate_droplets(ScalarField(grid)) assert len(emulsion) == 0
c = f.grid.cell_coords[2, 2] np.testing.assert_allclose(intp(c, f._data_full), f.data[..., 2, 2]) with pytest.raises((ValueError, IndexError)): intp(np.array([100, -100])) res = f.make_interpolator(backend="numba", fill=45)(np.array([100, -100])) np.testing.assert_almost_equal(res, np.full(f.data_shape, 45)) @pytest.mark.slow @pytest.mark.parametrize( "grid", [ UnitGrid((6, )), PolarSymGrid(6, 4), SphericalSymGrid(7, 4), CylindricalSymGrid(6, (0, 8), (7, 8)), ], ) def test_interpolation_to_cartesian(grid): """test whether data is interpolated correctly to Cartesian grid""" dim = grid.dim vf = VectorField(grid, 2) sf = vf[0] # test extraction of fields fc = FieldCollection([sf, vf]) # subset grid_cart = UnitGrid([4] * dim) for f in [sf, fc]: res = f.interpolate_to_grid(grid_cart)
c = f.grid.cell_coords[2, 2] np.testing.assert_allclose(intp(c, f._data_full), f.data[..., 2, 2]) with pytest.raises((ValueError, IndexError)): intp(np.array([100, -100])) res = f.make_interpolator(backend="numba", fill=45)(np.array([100, -100])) np.testing.assert_almost_equal(res, np.full(f.data_shape, 45)) @pytest.mark.slow @pytest.mark.parametrize( "grid", [ UnitGrid((6,)), PolarSymGrid(6, 4), SphericalSymGrid(7, 4), CylindricalSymGrid(6, (0, 8), (7, 8)), ], ) def test_interpolation_to_cartesian(grid): """test whether data is interpolated correctly to Cartesian grid""" dim = grid.dim vf = VectorField(grid, 2) sf = vf[0] # test extraction of fields fc = FieldCollection([sf, vf]) # subset grid_cart = UnitGrid([4] * dim) for f in [sf, fc]: res = f.interpolate_to_grid(grid_cart)