Salut,
Soit une équation vectorielle S = (1-d^2Laplacien)B.
S et B sont des vecteurs a trois composantes Sx,Sy,Sz et Bx,By, Bz, ne dépendant chacune que de x et y, nous avons donc 3 équations 2D linéaires.
On connait S, d est une constante, et on cherche B.
Les conditions périodiques sont de trois types :
1/ x,y périodiques, on résoud alors les équations dans la base de fourier bien adaptée. Pas de problemes.
2/ x, y non périodiques. Je veux alors des conditions (venant des équations de maxwell) aux bords de Neumann. i.e. je veux que la dérivée normale de la composante normale soit nulle, et que la dérivée normale de la composante tangentielle soit nulle (pour l'instant, on pourra faire ensuite des conditions ou elle n'est pas nulle)
A titre d'exemple, supposons que l'on se place au bord x = L, je veux donc imposer :
a/ dBx/dx = 0
b/ dBy/dx = 0
c/ dBz/dx = 0
Aucun probleme, il suffit d'utiliser la transformée en cosinus, qui assure des conditions de Neumann homogène (dérivée normale = 0 aux bords)
J'ai testé ceci, ça marche bien. Seulement je me suis rendu compte que je n'avais pas div(B) = 0 au bord. Et puis, div(B) = dBx/dx + dBy/dy. Le premier terme est nul par la transformée en cosinus, ok... mais le second (dérivée tangentielle de la composante tangentielle) n'est pas imposé, et donc j'ai div(B) != 0.
Auriez-vous une idée pour assurer également cette condition ?
3/ Conditions limites mixes, périodique en x, et Neuman+div(B)=0 en y. Donc ici, ça correspondrait au cas 1 en x, et cas 2 en y. Seulement là je ne vois pas trop comment faire, idéalement il faudrait faire une TF suivant la direction x et une TC suivant la direction y, mais je me vois mal faire ça avec fftw...
Merci pour vos idées
Partager