Maxwell Eigenvalues - Fichera Corner

Just a simple question. Looking at the benchmark problem for the Fichera corner proposed by Monique Dauge, my understanding was that this benchmark has zero Dirichlet boundary conditions on all the boundaries.

But in the finite element space for the corresponding NGSolve example I don’t see a tag to flag the boundaries as being of Dirichlet type. Rather than

mesh = Mesh(OCCGeometry(fichera).GenerateMesh(maxh=0.4))
mesh.RefineHP(levels=2, factor=0.2)
fes = HCurl(mesh, order=3)

I was expecting something like

fichera.bc("Dirichlet")
mesh = Mesh(OCCGeometry(fichera).GenerateMesh(maxh=0.4))
mesh.RefineHP(levels=2, factor=0.2)
fes = HCurl(mesh, order=3, dirichlet="Dirichlet")

to reflect the fact the tangential component of the trial function is zero on all the boundaries, but with the grid function value not needing to be set as it is zero on the boundary.

Am I missing something (I guess it is something simple)?

2.4.1 Maxwell eigenvalue problem — NGS-Py 6.2.2604 documentation

The computed eigenvalues are very close to the benchmark of Monique, which is really great though.

Thanks Paul.

Hi Paul,

you need two adjustments in the file, the Dirichlet condition for H(curl), as you made,

and turning the Poisson-projection also to a Dirichlet problem. For that, you give the un-constrained dofs of the potential space to the direct solver (and you also remove the regularization of the matrix).

    # math1[0,0] += 1     # fix the 1-dim kernel
    invh1 = math1.Inverse(inverse="sparsecholesky", freedofs=fesh1.FreeDofs())

Then I get Dirichlet eigenvalues:

[3.219673064589118, 5.880495248486283, 5.880503265349359, 10.686301088974712, 10.694645750369212, 10.694723461697198, 12.317408809548944, 12.317616163826983, 13.357217909193588, 13.422147559777194, 13.422230318251941, 14.214296732829302]

The exact eigenvalues should be the same, only the role of E and H are swapped.

Joachim

Thanks very much Joachim