def test_fspace_zero(out_shape): """Check zero element.""" fspace = FunctionSpace(odl.IntervalProd(0, 1), out_dtype=(float, out_shape)) points = _points(fspace.domain, 4) mesh_shape = (5, ) mesh = _meshgrid(fspace.domain, mesh_shape) point = 0.5 values_points_shape = out_shape + (4, ) values_point_shape = out_shape values_mesh_shape = out_shape + mesh_shape f_zero = fspace.zero() assert all_equal(f_zero(points), np.zeros(values_points_shape)) if not out_shape: assert f_zero(point) == 0.0 else: assert all_equal(f_zero(point), np.zeros(values_point_shape)) assert all_equal(f_zero(mesh), np.zeros(values_mesh_shape)) out_points = np.empty(values_points_shape) out_mesh = np.empty(values_mesh_shape) f_zero(points, out=out_points) f_zero(mesh, out=out_mesh) assert all_equal(out_points, np.zeros(values_points_shape)) assert all_equal(out_mesh, np.zeros(values_mesh_shape))
def test_fspace_vector_real_imag(): rect, _, mg = _standard_setup_2d() cspace = FunctionSpace(rect, field=odl.ComplexNumbers()) f = cspace.element(cfunc_2d_vec_oop) # real / imag on complex functions assert all_equal(f.real(mg), cfunc_2d_vec_oop(mg).real) assert all_equal(f.imag(mg), cfunc_2d_vec_oop(mg).imag) out_mg = np.empty((2, 3)) f.real(mg, out=out_mg) assert all_equal(out_mg, cfunc_2d_vec_oop(mg).real) f.imag(mg, out=out_mg) assert all_equal(out_mg, cfunc_2d_vec_oop(mg).imag) # real / imag on real functions, should be the function itself / zero rspace = FunctionSpace(rect) f = rspace.element(func_2d_vec_oop) assert all_equal(f.real(mg), f(mg)) assert all_equal(f.imag(mg), rspace.zero()(mg)) # Complex conjugate f = cspace.element(cfunc_2d_vec_oop) fbar = f.conj() assert all_equal(fbar(mg), cfunc_2d_vec_oop(mg).conj()) out_mg = np.empty((2, 3), dtype='complex128') fbar(mg, out=out_mg) assert all_equal(out_mg, cfunc_2d_vec_oop(mg).conj())
def test_fspace_zero(): rect, points, mg = _standard_setup_2d() # real fspace = FunctionSpace(rect) zero_vec = fspace.zero() assert zero_vec([0.5, 1.5]) == 0.0 assert all_equal(zero_vec(points), np.zeros(5, dtype=float)) assert all_equal(zero_vec(mg), np.zeros((2, 3), dtype=float)) # complex fspace = FunctionSpace(rect, field=odl.ComplexNumbers()) zero_vec = fspace.zero() assert zero_vec([0.5, 1.5]) == 0.0 + 1j * 0.0 assert all_equal(zero_vec(points), np.zeros(5, dtype=complex)) assert all_equal(zero_vec(mg), np.zeros((2, 3), dtype=complex))