Appropriate smoothers for H(curl) space

Hello NGSolve community,

I’m a novice about the multigrid preconditioners for Nedelec elements. I plan to solve a time-harmonic Maxwell’s problem with multigrid method. From my best knowledge, there
are 2 crucial challenge (the latter confuse me):

  1. Time-harmonic systems itself is indefinite (curlcurlE-k^2E). Given I want to solve EM problem of RF devices, which are small compared to wavelength, this challenge is partially resolved by a dense coarse level.
  2. Smoothers suitable for Nedelec elements. Traditional smoother for H1 doesn’t work due to large kernel of curl-curl operator, and “… the main difficulty stems from the different scaling of solenoidal and irrotational fields in the curl-curl problem …” as mention by Zaglmayr phd thesis 2006

I googled for past 3 days, it seems there are 3 categories for H(curl) smoothers:

  • The smoothers of Arnold-Falk-Winther (2000) and Hiptmair (1999). They construct a block multiplicative Schwarz preconditioners for lowest order level, based on space decomposition w.r.t. vertex patches
  • Preconditioners of Schöberl /Zaglmayr (phd thesis 2006 & 2010 (hp-FEM)). They rearrange dofs according to low-order Nedelec space, high-order gradient space, and high-order non-gradient space. I haven’t understand if it’s applied to local patches to form block Schwarz preconditioners, or it arranges dofs globally. It’s similar to pMUS preconditioner in Ansys HFSS.
  • Preconditioners based on Hiptmair (2007), and Tzanio (2015) previously based on deal.II. This kind construct auxiliary space on nodes (and fall into the AMG and AMS class ?)

My biggest question is, which smoother is the most optimal, in case of indefinite Maxwell problem. Should I apply a GMG with these smoothers ?

The 2nd problem is, are all above smoothers allow matrix-free FEM? If NGSolve arrange Nedelec dofs hierarchically, then are they tensorial to be used for matrix-free? May static condensation fit into matrix-free FEM?


this is an interesting question, I cannot give a single definite answer.

For a wide range we prefer a two-grid method. Let’s say 2nd or 3rd order elements lead to 1E6 to 1E7 dofs, but the lowest order subspace is around 1E5. Then we can use a direct sparse factorization for the lowest order sub-block, and apply smoothing only for the high order basis functions.

If we have much more then 1E6 lowest order dofs, we need some h-version multigrid. Either the Hiptmair-Xu AMS as you mentioned, or an H(curl)-amg like Reitzinger-Schöberl AMG. The first one builds on widely available standard H1-AMG components, the second one constructs special prolongation operators dedicated to edge elements.

The next question is on the type of problems you like to solve. Is it a model problem, with all well-shaped elements ? Or do you have a nasty mesh, or very thin, anisotropic sub-domains. Then the solver must take care of that (either by line-smoothing, or include some more dofs into the direct solver). Many EM problems have very heterogeneous coefficients. Does your application involve other special techniques (absorbing bc, PML, mortaring, network coupling, … ) ?

I think matrix free is fine if you have (topologically) structured hex-meshes, but it is difficult for complex geometries and unstructured meshes.


Thanks for your reply Joachim,

Your advice is really helpful. So we should always first apply p-multigrid based on hierarchical basis functions, and then h-multigrid. For p-multigrid, should smoothers be chosen elaborately? And for the h-multigrid, why here algebraic multigrids are suggested? Is a geometric multigrid + AMS-like smoother possible.

For the problem I will solve, the models are from real-world RF devices, like filters, antennas, etc. Dielectric constant varies but not differs too much (typically 1-5). Metal conductors/PEC and PML/ABC might be included. Finally mesh size may varies due to some small geometry features.


Hi Wayne,

it depends on your problem whether you want to do geometric multigrid. If you can, it is an excellent choice. Important question is how coarse is your coarsest mesh to resolve your geometry. Then, does it make sense to refine, or maybe it is better to increase p ? Or even do geometric refinement towards singular edges/vertices (as in EVP on Fichera cube) ?


Hi Joachim,

The h-multigrid part is clear to me now, but I still have a doubt on the option of smoothers.

It’s said H1 smoothers do not work on Hcurl space (according to Zaglmayr’s thesis). Then
should the smoothers on higher order basis levels (2nd and 3rd), and residual transfer between
these levels, be treated specially? AMS seems more like a complete preconditioner, and left me
no room to do direct factorization on coarse level (neither can I use AMS on coarse level, since it
won’t converge).


Or put it more simple, suppose either we use

  1. A geometric multigrid with 1st order element, solve the coarsest level directly.


  1. A p-multigrid, solve the coarsest level (1st element) directly.

Should the smoothers be specially selected, other than H1 smoothers such as Gauss-Seidel, Jacobi, or Chebyshev?


Thanks to the basis-function as in Zaglmayr’s thesis, we can use standard smoothers (point Gauss-Seidel, block Gauss-Seidel, IC,…) for the high-order system (plus something good for the lowest-order sub-system).

See also this talk, around page 18.


That’s a great slice, extending some techniques from i-tutorials.

Think I understand Zaglmayr’s method now… So we first do p-multigrid with the aid of hierachical
H(curl) bases, then solve lowest-order level directly or with some geometric/algebraic multigrid methods.

Just one last question. On coarsest grid during algebraic multigrid, is applying a direct solver possible?
Because time-harmonic is hard to converge, I want to make it more robust by direct solving a coarsest level as large as possible.