Find L2 projection of a given function in ngsolve

3 weeks 1 day ago - 3 weeks 1 day ago #2893 by dong
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.
Attachments:

Please Log in or Create an account to join the conversation.

3 weeks 1 day ago #2894 by joachim
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

Please Log in or Create an account to join the conversation.

3 weeks 1 day ago #2895 by dong
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.

Please Log in or Create an account to join the conversation.

3 weeks 1 day ago #2896 by joachim
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:
github.com/NGSolve/modeltemplates/blob/m...ates/NavierStokes.py

Joachim
The following user(s) said Thank You: dong

Please Log in or Create an account to join the conversation.

2 weeks 20 hours ago #2903 by dong
Thank you so much for your clarification. I think ngsolve will be more user-friendly if it has an L2-projection built-in function.

Please Log in or Create an account to join the conversation.

© 2019 Netgen/NGSolve