def test_save_1d_tensor(tempdir): mesh = UnitIntervalMesh(MPI.COMM_WORLD, 32) element = ufl.TensorElement("Lagrange", mesh.ufl_cell(), 2, shape=(2, 2)) u = Function(FunctionSpace(mesh, element)) with u.vector.localForm() as loc: loc.set(1.0) filename = os.path.join(tempdir, "u.pvd") with VTKFile(mesh.mpi_comm(), filename, "w") as vtk: vtk.write_function(u, 0.)
def test_save_1d_vector(tempdir): mesh = UnitIntervalMesh(MPI.COMM_WORLD, 32) def f(x): vals = np.zeros((2, x.shape[1])) vals[0] = x[0] vals[1] = 2 * x[0] * x[0] return vals element = ufl.VectorElement("Lagrange", mesh.ufl_cell(), 2, dim=2) u = Function(FunctionSpace(mesh, element)) u.interpolate(f) u.vector.ghostUpdate(addv=PETSc.InsertMode.INSERT, mode=PETSc.ScatterMode.FORWARD) filename = os.path.join(tempdir, "u.pvd") with VTKFile(MPI.COMM_WORLD, filename, "w") as vtk: vtk.write_function(u, 0.)
def test_block_size_real(mesh): mesh = UnitIntervalMesh(12) V = FiniteElement('DG', mesh.ufl_cell(), 0) R = FiniteElement('R', mesh.ufl_cell(), 0) X = FunctionSpace(mesh, V * R) assert X.dofmap.index_map.block_size == 1