Compute the Laplacian of trial functions

Hello together,
I have the following problem: in my code, I would like to compute the Laplacian of some function, which is an element of

 V_vec = VectorFunctionSpace(mesh, "Lagrange", 1)

I can use div(grad(U)) but the problem is, since the degree of the function space is 1, the laplacian is computed to be zero. For my computations, the degree of the function space is fixed. My idea now was to project the function to another, higher dimensional, function space and compute the laplacian, then to project it back to my original function space.
Surprisingly (:smile: ) this didn’t work. Does someone have an idea how to solve this issue?

That would not work, as a projection into a higher dimensional space (that contains the linear polynomials), will still render you with a linear solution, and then the double derivative will be zero.

See: Computing element-wise spatial derivatives of the solution - #4 by dokken

Would it be possible to define

 V_vec = VectorFunctionSpace(mesh, "Lagrange", 2)

and then set U to be an element of V_vec. Then to project the laplacian of U to a lower dimensional function space?

That should in theory work, as grad(U) would be in "DG" 1, and div(grad(u)) in “DG” 0.
I wouldn’t project this into “CG”, 1 as that is not a compatible finite element space.