État du problème Discrétisation de l`équation de poisson en 3D

Transcription

État du problème Discrétisation de l`équation de poisson en 3D
État du problème
Dans le modèle étudié pour simuler un émetteur terahertz, la densité des porteurs peut être très grande à
certains endroits, par exemple directement où le laser à impulsions utilisé frappe le semi­conducteur.
Pour cette raison, nous croyons qu'il est important de tenir compte de l'interaction entre porteurs dans le
modèle. L'interaction considérée est électromagnétique, la collision entre électrons étant négligée
comme phénomène d'échange d'énergie. Pour résoudre le problème, nous discrétiserons le domaine
spatial représentant l'émetteur dans les trois axes cartésiens et déterminerons le potentiel électrique à
chaque point du grillage obtenu. Pour ce faire, nous devrons résoudre l'équation de Poisson en trois
dimensions. Nous avons choisi d'utiliser la méthode des différences finies, plus précisement la
différence centrale, afin de ramener le problème à une situation traitable numériquement, soit un
système d'équations linéaires. La dernière étape consiste donc à choisir un algorithme permettant de
résoudre efficacement ce système.
Discrétisation de l'équation de poisson en 3D
L'équation de poisson en trois dimensions s'écrit comme suit:
∇ ²V  x , y , z=
∂ ²V
∂ x²

∂ ²V
∂ y²

∂ ²V
∂ z²
=−  x , y , z/0
où   x , y , z est la densité de charge au point (x,y,z).
Le système de discrétisation utilisé est le suivant: le domaine est divisé en cubes de côté H. Chaque
sommet de ces cubes est identifié par 3 indices. La position en x est définie par i, qui va de 1 à I.
L'indice correpondant à y est j, qui va de 1 à J. Sa position en z est donnée par l'indice k, allant de 1 à
K. Ainsi la position de chaque point, selon les indices et H est:
x=i−1∗H , y= j−1∗H et z=k−1∗H
La discrétisation de l'équation de Poisson par différence centrale donne:
∂ ²V
∂ x²
∂ ²V
∂ y²
∂ ²V
∂ z²
=
=
=
V i1, j , k −2 V i , j , k V i−1, j , k
H²
V i , j1, k −2 V i , j , k V i , j−1, k
H²
V i , j , k1−2 V i , j , k V i , j , k−1
H²
V i1, j , k V i−1, j , k V i , j1, k V i , j−1, k V i , j , k1 V i , j , k−1 −6 V i , j , k =−H²  i , j , k /0
C'est l'équation discrète en 7 points de Poisson ([4] p.76)(il est probablement possible de prendre en
compte les points 'diagonaux' pour réduire l'erreur, voir [1] p.123). Il est important de noter que cette
équation n'est valable que pour les points qui ne sont pas situés sur les bords du domaine, puisque le
potentiel ou sa dérivée sera défini aux frontières. Ainsi l'équation est valable pour i=2,.. , I −1 ,
j=2,.. , J −1 et k=2, .. , K −1 . On obtient donc une équation linéaire par point 'interne', soit
 I −2∗ J −2∗ K −2 équations (et le même nombre d'inconnues). Maintenant, on doit ordonner
ces équations de telle façon que la matrice des coefficients obtenue soit la plus simple à résoudre
possible. Je ne connais pas la meilleure façon, mais la manière 'naturelle' (voir [1] p.172) de la faire est
la suivante: La première équation sera pour i=2, j=2 et k=2. La suivante sera pour les indices i=3, j=2,
k=2, et on continue de cette façon à augmenter i jusqu'à I­1 en gardant j et k constants. Ensuite on
augmente j de 1 et on ramène i à 2, en gardant k à 2. On recommence la premiere étape, soit augmenter
i de 2 a I­1. Lorsque j a atteint J­1 et i I­1, on augmente k. On continue ce schéma jusqu'à (I­1), (J­1) et
(K­1). Une façon pratique de générer cet enchaînement est de créer un autre indice, n, qui combine i, j
et k:
n=i j−1∗I k−1∗IJ , n = 1, ... , IJK
Cet indice numérote tous les points. Pourquoi? Parce que dans notre équation à 7 points, certains
couples d'indices font référence à un point sur la frontière, ainsi il est utile qu'il soit numéroté pour
pouvoir facilement l'identifier. L'équation à 7 points utilisant l'indice n est:
V n1V n−1V nI V n−I V nIJ V n−IJ −6 V n =−H² /0
V n−IJ V n−I V n−1−6 V n V n1 V nI V nIJ =−H² /0
Encore une fois, cette équation n'est valable que pour les points internes, soit
n=2I IJ , ... , I −1 J −2 I  K −2 IJ , et ce en sautant certaines valeurs de n (qui
correspondent à des points sur la frontière) dans l'intervalle. En classant ces équations par n croissant,
on obtient le schéma 'naturel' mentionné plus haut. En notation matricielle, l'équation sera de la forme:
 =
AV
S
 le vecteur des potentiels inconnus et 
où A est la matrice des coefficients, V
S le vecteur 'source'.
Plusieurs équations auront des 'V' ayant une valeur définie puisqu'ils correspondent à des points se
trouvant sur la frontière. Évidemment, ces 'V' n'ont pas d'inconnue associée, et donc pour la notation
matricielle, on place ces valeurs connues du côté droit des équations, dans le vecteur 'source'. La
matrice des coefficents obtenue peut être décrite comme 'block tridiagonal' en trois dimensions. Un
exemple de système d'équations et de matrice des coefficients pour I = J = K = 5 est présenté dans les
prochaines pages. Exemple de système d'équations linéeaires obtenues avec l'équations à 7 points:
Les potentiels situés sur la frontière (fond gris) sont ensuite placés dans le terme de droite
correspondant.
Sous forme matricielle, ce système se réécrit comme suit:
La matrice précédente est classée 'block­TST' (Toeplitz, symetric, tridiagonal) selon [1] p. 197.
Méthodes pour la résolution de systèmes d'équations linéaires
Finite element?
« If all you need is to solve the Poisson equation in a square, say, with nice boundary conditions, then
probably there is absolutely no need to bother with the FEM [Finite Element Method] (unless off­the­
shelf software is available), since finite differences will do perfectly well. » [1], p. 163. Les erreurs
avec la méthode des differences finies et la FEM sont du même ordre [1] p.159.
Peu importe la méthode choisie, différences finies ou éléments finies, la discrétisation de l'équation de
Poisson apporte un système d'équations linéaires qu'il faut résoudre. Il existe plusieurs méthodes pour
ce faire, certaines plus générales qui sont moins appropriées pour le problème spécifique de l'équation
de Poisson. Boundary element method?
« In the particular case of electrostatic problems, the BEM has some direct advantages overs methods,
such as FEM and FDM [...]. BEM enforces the potential at infinity to be equal to zero. [...]. FEM and
FDM require an artificial boundary condition to be placed at the truncation of the problem space. This
usually requires approximating the potential to zero or the derivative of the potential or the derivative
of the potential to some value at the truncated boundary. » [5]
Méthodes directes
Élimination de Gauss
Cette méthode, appliquée de façon générale, est beaucoup trop lente (type Dense LU dans le tableau
plus bas) pour être utilisée dans le cadre de notre modèle et elle permet de résoudre des systèmes
d'équations linéaires très généraux. Cependant, puisque la matrice des coefficients obtenue est
particulière et 'sparse', certaines méthodes directes spécialisées dans ce genre de matrice pourraient être
utilisées. Elles sont toutefois plus lentes que les méthodes itératives les plus rapides.
Cholesky Factorization
C'est une méthode directe comme l'élimination de Gauss, plus rapide, mais toutefois moins que
plusieurs méthodes itératives.
Méthodes itératives
Trois méthodes classiques (« Classical iterative methods are neither the only nor, indeed, the best
means to solve sparse linear systems by iteration[...] » [1] p.220):
­Jacobi
­Gauss­Seidel
­Successive Over­Relaxation (SOR)
Cette méthode est beaucoup plus rapide que Jacobi et Gauss­Seidel ([1] p.215­216).
Autres méthodes:
Incomplete LU factorization
Conjugate gradient
Generalized minimal residuals
Bi­conjugate gradients
*Une librairie écrite en c qui pourrait être utile: LASPACK
Multigrid techniques (multigrid/full multigrid)
« There is no hiding the vastly superior performance of both the basic and full versions of multigrid, in
comparison with, say, the 'plain' Gauss­Seidel method. » [1] p.242
Multigrid semble plus rapide que SOR et conjugate gradient également.
Utilisent Gauss­Seidel comme 'smoother' sur des grillages de différentes grosseurs, à chaque grosseur
une certaine gamme en fréquence (hautes fréquences) de l'erreur est diminuée par Gauss­Seidel. Cette
méthode traite des problèmes beaucoup plus généraux que les 'rapid elliptic solvers'.
Rapid Elliptic Solvers
Hockney method ([1] p.245)
Fast Fourier Transform ([1] p.245, [2] p.205)
Facr ([2] p.208)
Le plus performant des algorithmes pour notre problème (selon [2]), utilise FFT et CR.
Cyclic Reduction ([2] p.201)
Une librairie qui pourrait être utile: FISHPACK
Comparaison du temps de calcul de quelques méthodes (tiré de [3]):
Algorithm
­­­­­­­­­­­­
Dense LU
Band LU
Jacobi I
Inv(H)*b
CG
SOR
Sparse LU
FFT
Multigrid
Lower Bound
Type
­­­­­
D
D
N^2
D
I
I
D
D
I
Serial Time
­­­­­­­­­­­
N^3
N^2
N^2
N^(3/2)
N^(3/2)
N^(3/2)
N*log N
N
N
PRAM Time
­­­­­­­­­­­­­­­­
N
N
N
log N
N^(1/2)*log N
N^(1/2)
N^(1/2)
log N
(log N)^2
log N
Storage
­­­­­­­­­
N^2
N^(3/2)
N
N^2
N
N
N*log N
N
N
N #Procs ­­­­­­­­
N^2
N
N
N^2
N
N
N
N
N
Key to abbreviations:
Dense LU: Gaussian elimination, treating H as dense
Band LU :
Gaussian elimination, treating H as zero outside a band of half­width n­1 near diagonal
Sparse LU : Gaussian elimination, exploiting entire zero­structure of H
Inv(H)*b : precompute and store inverse of H, multiply it by right­hand­side b
CG :
Conjugate Gradient method
SOR : Successive Overrelaxation
FFT : Fast Fourier Transform based method Diagramme tiré de [2] p.168.
Tableau tiré de [2] p.169.
Références
1­ ISERLES, A. (1996), A First Course in the Numerical Analysis of Differential Equations, Cambridge University Press, Cambridge.
2­
HOCKNEY, R.W. et EASTWOOD, J.W. (1988), Computer simulation using particules, paperback edition, Adam Hilger, Bristol.
3­
http://www.cs.berkeley.edu/~demmel/cs267/lecture17/lecture17.html
4­
PICKERING, M. (1986), An Introduction to Fast Fourier Transform Methods for Partial Differential Equations, with Applications, Research Studies Press, Letchworth.
5­
http://www.integratedsoft.com/papers/techdocs/tech_5cx.pdf