Dear Forum,
I am working with NGSolve on a nice application to plasma physics.
To make my model even better, I’m trying to add a non-trivial (and non-linear) boundary condition (BC) of the form E_t = grad(f(E)), where f(E) is computed externaly, to a mixed FEM Maxwell formulation.
I see several possibilities to impose such a condition but I’m always running into problems.
-
I can compute grad(f(E)) by post-processing and impose E_t as a dirichlet BC. This would be the easiest solution.
Problem 1: I did not find a clever way to only impose E_t (leaving E_n free) as the gfu.Set() function only works for the whole E field.
Related problem: I did not find a way to select the vector En (only its amplitude by scalar product of E with the special normal coefficient function n). Is this possible? -
I can compute grad(f(E)) by post-processing and impose E_t through the surface term of my Maxwell equations of the form:
(v \cross n) \vdot ( curl(E) ).
However, as my BC only involves E_t, I end up with quite a tedious expression. My current attempt of implementing this method failed. -
I could add an additional test and trial function to express the weak form of my BC as a second equation and introduce this new E_t variable into the surface term of my weak Maxwell formulation. I did not test this yet but it probably suffers from the same difficulties found in (2).
Additional information:
- As non-linear, all cases will need iterations.
- I work with complex 2D geometries.
Is there a simpler technique that would make my life easier?
Can I avoid going through the Maxwell surface term appearing in the weak formulation?
Is there a better way to do this?
Looking for inputs and thanking you in advance for your kind help,
Vincent