Normal Jump of HCurl on internal interfaces

Hello everybody,

for a problem at hand I need to evaluate the normal term \nu \cdot E for E \in H^{curl}.
More specifically, it is known that solutions of the Maxwell’s equations have tangential continuity on interfaces between different materials, as well as normal continuity if the jump in material parameter is also taken into consideration, i. e.

n_1^2 \nu \cdot E_1 = n_2^2 \nu \cdot E_2.

I need to evaluate a term of the form

\int_\Gamma \lbrack n_1^{-2} - n_2^{-2} \rbrack (n^2 \nu \cdot E) (n^2 \nu \cdot P) ds

where P has equal properties as E.

Therefore my question is either

  1. How to compute the above expression on a given internal interface.

or alternatively

  1. How to determine which is the master element to a given surface/interface and therefore which part of a gridfunction gfu is used when Integrate( nu * gfu *ds(“interface”), mesh) is evaluated?

I guess “.Other()” is not the way to go for an HCurl gridfunction.

Thanks for any support.

Greetings
Philipp

evaluating the gf on the boundary will only give you the natural (tangential) trace. You need to use BoundaryFromVolumeCF for that. It goes back to the adjacent volume element and evaluates there.
You can steer which adjacent volume element is taken by using a mesh.MaterialCF( {"domain_to_eval" : gfu})
so something like

E1 = BoundaryFromVolumeCF(mesh.MaterialCF( { "domain1" : n1**(-2) * E}))
E2 = BoundaryFromVolumeCF(mesh.MaterialCF( { "domain2" : n2**(-2) * E}))

Integrate((E1-E2) * n, mesh.Boundaries("interface"))

should do the trick

Hello Christopher,

thank you so much - that answer is already extremely helpful.
However, how do I know in which direction the normal vector on a interface boundary is oriented?
I recently stumbled across a problem/geometry given by an arch (build by the difference of 2 cylinder C_2 \setminus C_1 of different radii r_1 < r_2) surrounded by second material where the normal once pointed into the arch (in the inner radius), whilst out of the arch (on the outer radius) on another part of the interface.

Greetings
Philipp