Compute the face embedding matrix for FE_NedelecSZ

50 views
Skip to first unread message

Sebastian Kinnewig

unread,
Sep 21, 2021, 10:35:41 AM9/21/21
to deal.II User Group
Hello all,

I am currently working on an adaptive solver for the time-harmonic Maxwell equation. At the moment I am using the Nédélec elements provided by the class FE_Nedelec. Since FE_Nedelec requires a consistent orientation of the faces, I would like to switch to FE_NedelecSZ (therefore I already implemented the hessian in FE_NedelecSZ #12771).

To make the switch to FE_NedelecSZ I need to compute the face embedding. I tried to compute the face embedding via the function FETools::compute_face_embedding_matricies() and pass the resulting face embedding matrix to the interface_constraints (similar to what is done in the FE_Nedelec class). But that doesn't seem to work, does anyone have any ideas or suggestions as to what the problem could be?

Thank you in advance!

Best Regards,
Sebastian

Wolfgang Bangerth

unread,
Sep 21, 2021, 12:55:57 PM9/21/21
to dea...@googlegroups.com
On 9/21/21 8:35 AM, Sebastian Kinnewig wrote:
>
> To make the switch to FE_NedelecSZ I need to compute the face embedding.
> I tried to compute the face embedding via the function
> FETools::compute_face_embedding_matricies() and pass the resulting face
> embedding matrix to the interface_constraints (similar to what is done
> in the FE_Nedelec class). But that doesn't seem to work, does anyone
> have any ideas or suggestions as to what the problem could be?

Can you describe what happens (i.e., what "that doesn't seem to work"
actually means)?

Best
W.


--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/

Sebastian Kinnewig

unread,
Sep 22, 2021, 4:37:08 AM9/22/21
to deal.II User Group
Thank you for the first answer!

When I implement the computation of the embedding matrix , as done in FE_Nedelec, in FE_NedelecSZ the program compiles and runs without any warnings or errors (even in debug mode).
But from the results it appears that there still is a problem with the hanging nodes.

Maybe it is the best when I attach some pictures of the solution. For the test case I computed a reference solution to which I know the analytical solution.
All faces in that test case are oriented (therefore there should be no sign conflict) moreover, it works when I use FE_Nedelec (see appendix). With just global refinement also FE_NedelecSZ works fine.

So my best guess is, that there is still a problem with the hanging nodes. (Are there maybe more functions that need to be called for the hanging nodes to work correctly? At the moment I am only define this->interface_constraints in FE_NedelecSZ.)

Best,
Sebastian

 FE_NedelecSZ.pngFE_Nedelec.png

Alexander

unread,
Sep 22, 2021, 3:27:30 PM9/22/21
to deal.II User Group
Hi Sebastian
FE_NedelecSZ does not support hanging nodes, i.e. the mesh must be conforming.

Implementing handing-node constraints for this element is possible, but would require a special approach since constraints are not static. If you feel like implementing this, I would be glad to discuss -- I happen to miss this functionality too, but I've never come to a point where I can devote enough time to this.

Best
Alexander

Wolfgang Bangerth

unread,
Sep 22, 2021, 4:51:19 PM9/22/21
to dea...@googlegroups.com
On 9/22/21 2:37 AM, Sebastian Kinnewig wrote:
>
> When I implement the computation of the embedding matrix , as done in
> FE_Nedelec, in FE_NedelecSZ the program compiles and runs without any
> warnings or errors (even in debug mode).
> But from the results it appears that there still is a problem with the
> hanging nodes.

Alexander knows this element much better than I do, so I have little to
add. The current way we deal with constraints lives by the assumption
that on every cell, the shape functions are mapped from a reference cell
in the same way. I believe that that is not actually the case for the SZ
element because, if I recall correctly, the sign (vector direction) of
shape functions depends on the node numbers. A check for you might be to
see whether at hanging nodes the *magnitude* of the solution is correct
but the *sign* is wrong.
Reply all
Reply to author
Forward
0 new messages