def test_fenics_vector(): mesh = UnitSquare(3, 3) fs1 = FunctionSpace(mesh, "CG", 2) fs2 = FunctionSpace(mesh, "DG", 1) ex1 = Expression("1.+x[0]*x[1]") ex2 = Expression("2.*x[0] - x[1]") ex3 = Expression("1. + 2.*x[0] - x[1] + x[0]*x[1]") f1 = interpolate(ex1, fs1) f2 = interpolate(ex2, fs1) f3 = interpolate(ex1, fs2) f4 = interpolate(ex1, fs1) f5 = interpolate(ex3, fs1) vec1 = FEniCSVector(f1) vec2 = FEniCSVector(f2) vec3 = FEniCSVector(f3) vec4 = FEniCSVector(f4) vec5 = FEniCSVector(f5) assert_true(vec1 == vec1) assert_false(vec1 == vec2) assert_false(vec1 == vec3) assert_true(vec1 == vec4) assert_false(vec1 != vec1) assert_true(vec1 != vec2) assert_true(vec1 != vec3) assert_false(vec1 != vec4) vec12 = vec1 + vec2 vec12b = vec1 + vec2 vec1m = -vec1 vec1m3 = 3 * vec1 vec21 = vec2 + vec1 vec14 = vec1 - vec4 assert_equal(vec12, vec21) assert_almost_equal(vec12.array(), vec5.array()) assert_almost_equal(vec12.array(), vec12b.array()) assert_equal(vec14.array(), np.zeros(vec12.coeffs.size())) assert_equal(vec1m.array(), -vec1.array()) assert_equal(vec1m3.array(), 3 * vec1.array()) assert_almost_equal(vec1.eval([0.8, 0.4]), 1.32)