Find L2 projection of a given function in ngsolve

I’m finding L2 projection of a given function f on a finite element space Q.

Is there any function in Ngsolve do this job as in Fenics?

I also tried to write a find to find the L2-projection using its definition, but I met an error when finding the inverse matrix.

Could you please tell me how to fix this? Please see the attached file.
Thank you so much.

Attachment: Projection1.ipynb

You have to do it following its definition. You are building some sub-block in a huge matrix, and the solver is telling you correctly that the big matrix is not invertible

Build and invert the matrix on a single space, then you can embed the single-space vectors in your product-space,

Joachim

Thank you so much. Could you please show me how to embed a single-space vectors in a product space?
I searched a tutorial from ngsolve documentation, but I couldn’t find an example.

You can use an embedding matrix:

r = IntRange (a,b)
emb = Embedding(n, r)

This embeds a vector of length b-a into a vector of length n, starting at index a.

some use-cases you can find here:

Joachim

Thank you so much for your clarification. I think ngsolve will be more user-friendly if it has an L2-projection built-in function.