FE_Nedelec vs PolynomialsNedelec, and examples

93 views
Skip to first unread message

Soon Kiat Lau

unread,
Mar 24, 2015, 12:30:03 PM3/24/15
to dea...@googlegroups.com
Hello deal.II community!

I am attempting to solve Maxwell's Equations in deal.II in the frequency/phasor domain. This means the time derivative is replaced by a complex number, assuming the wave varies with time sinusoidally. History has shown that nodal elements are not suited for this kind of problem because the field vector for an electromagnetic problem is behaves differently from a solid mechanics/heat transfer problem (nodal elements were designed for the latter). Therefore, the Nedelec/Whitney/Bossavit/edge elements (so many names... let's call it Nedelec for now) were created.

From what I've found, there are two classes related to Nedelec elements:

There is a report by Anna Schneebeli where she used deal.II for solving such a problem: in pg 18 of her report, she mentioned using the FE_Nedelec class (https://www.dealii.org/8.0.0/reports/nedelec/nedelec.pdf). However, no example code was included.


My question is thus the following:
  • Which of the two class should be used?
  • Are there any examples of implementing these elements in deal.II?


I'm particularly worried about the second question because I found Dr. Bangerth's comments a while back :(

Ross Kynch

unread,
Mar 24, 2015, 2:56:06 PM3/24/15
to dea...@googlegroups.com
Hi Soon,

The class you want is FE_Nedelec. PolynomialsNedelec is used to generate the basis set. However, I would be wary of using it in 3D domains where you cannot guarantee that the cells are of standard orientation. That basically means that you need to stick to meshes which are essentially cube-like.

There are a few example which I and others have posted in this user group. For the real-valued equation there's a fairly simple real 3D implementation within the tests for the current development version, see here https://github.com/dealii/dealii/blob/master/tests/deal.II/nedelec_non_rect_face.cc

To handle the complex-valued equation you describe, you'd need to use an FE_System with two FE_Nedelec elements and decompose things into real/imaginary parts in order to build the linear system.

I'm currently working on an implementation which I think will overcome the orientation issues, but I wouldn't rely on it being ready very soon.

Best of luck,

Ross

Soon Kiat Lau

unread,
Mar 24, 2015, 4:40:28 PM3/24/15
to dea...@googlegroups.com

On Tuesday, March 24, 2015 at 1:56:06 PM UTC-5, Ross Kynch wrote:
However, I would be wary of using it in 3D domains where you cannot guarantee that the cells are of standard orientation. That basically means that you need to stick to meshes which are essentially cube-like.

What a coincidence! I was reading a book "Quick Finite Elements for Electromagnetic Waves" by Giuseppe Pelosi et al and the authors also mentioned that unless rectangularity is imposed (all cube elements), the shape functions will not be divergence-free  (p 46). They recommend tetrahedral elements instead. This could be a problem since deal.II is currently focused on hexahedral elements :(

Hopefully your implementation would solve this problem!

Soon Kiat Lau

unread,
Mar 24, 2015, 4:47:33 PM3/24/15
to dea...@googlegroups.com
Also, may I ask what would be your solution to the orientation issues? If you could point me to the relevant papers/books, I plan to study them so that I could try implementing it in my code. Maybe even contribute to deal.II! :)

Ross Kynch

unread,
Mar 24, 2015, 5:31:12 PM3/24/15
to dea...@googlegroups.com
Yes, the issue is far more easily solved with tetrahedra (e.g. approach of ainsworth & coyle where you require 2 reference elements and process the mesh to label every cell of either type). I'm currently implementing the method described in the PhD thesis of Sabine Zaglmayr (see chapter 5 in http://www.numerik.math.tugraz.at/~zaglmayr/pub/szthesis.pdf). There is definitely a penalty to pay, but I'm fairly confident it will work.. it's just a painful process to implement. I'm just testing/debugging the edge labelling concept in 2D and then I'll move onto the hex.

Any help is welcome :)

Ross
Reply all
Reply to author
Forward
0 new messages