É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 semiconducteur. 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 i1, j , k −2 V i , j , k V i−1, j , k H² V i , j1, k −2 V i , j , k V i , j−1, k H² V i , j , k1−2 V i , j , k V i , j , k−1 H² V i1, j , k V i−1, j , k V i , j1, k V i , j−1, k V i , j , k1 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'à I1 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 I1. Lorsque j a atteint J1 et i I1, on augmente k. On continue ce schéma jusqu'à (I1), (J1) et (K1). 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 n1V n−1V nI V n−I V nIJ V n−IJ −6 V n =−H² /0 V n−IJ V n−I V n−1−6 V n V n1 V nI V nIJ =−H² /0 Encore une fois, cette équation n'est valable que pour les points internes, soit n=2I 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 'blockTST' (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 offthe 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 GaussSeidel Successive OverRelaxation (SOR) Cette méthode est beaucoup plus rapide que Jacobi et GaussSeidel ([1] p.215216). Autres méthodes: Incomplete LU factorization Conjugate gradient Generalized minimal residuals Biconjugate 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' GaussSeidel method. » [1] p.242 Multigrid semble plus rapide que SOR et conjugate gradient également. Utilisent GaussSeidel 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 GaussSeidel. 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 halfwidth n1 near diagonal Sparse LU : Gaussian elimination, exploiting entire zerostructure of H Inv(H)*b : precompute and store inverse of H, multiply it by righthandside 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