Hello everyone,
I have implemented a high-order Crouzeix-Raviart FE-Space using mylittlengsolve. When using meshes, that have been generated using the Mesh() function everything works fine. However, when refining the mesh and updating the FE-space using fes.Update(), it does not dismiss the “old” degrees of freedom from the previous mesh but keeps them as free and therefore creating a singular system matrix.
How can I fix this issue?
Thank you all very much in advance.
Hi,
the mesh keeps the old edges and faces in the topology (for multigrid methods). So you need to make sure to define your basis only on facets that are actually in the finest mesh level. Have a look at hdivhofespace.cpp and search for fine_facet.
Best, Christopher
Dear Christopher,
Please excuse my late reply. Thanks for your help. I looked at hdivhofespace.cpp and was able to transfer the ideas there to my element. I had to slightly change the indexing but everything is working flawlessly.
Best, Nis-Erik
1 Like