Triangle elements in 3D broken in dolfinx?

You are not consistently using the manifold triangle as the cell type. If you use cell everywhere.

Also, the domain for your mesh is not sensible.
Here is a mwe:

import dolfinx
import ufl
from mpi4py import MPI

n_div = 2
mesh_2D = dolfinx.mesh.create_unit_square(
    MPI.COMM_SELF, n_div, n_div, dolfinx.mesh.CellType.triangle
)
gdim, shape, degree = 3, "triangle", 1
cell = ufl.Cell(shape, geometric_dimension=gdim)
domain = ufl.Mesh(ufl.VectorElement("Lagrange", cell, degree, dim=gdim))
cells = mesh_2D.geometry.dofmap
x = mesh_2D.geometry.x
mesh = dolfinx.mesh.create_mesh(MPI.COMM_WORLD, cells, x, domain)

Ue = (
    ufl.VectorElement(
        "Lagrange",
        cell,
        2,
        dim=3,
    ),
)
Te = ufl.VectorElement("CR", cell, 1, dim=3)

V = dolfinx.fem.FunctionSpace(mesh, ufl.MixedElement([Ue, Te]))

v = dolfinx.fem.Function(V)
u, theta = ufl.split(v)
ufl.grad(u)

1 Like