TP : Eléments finis P 1 en dimension Frédéric Legoll Mars 017 L objectif de ce TP est de programmer la méthode des éléments finis P 1 en dimension, sur un maillage non-structuré i.e. générique), pour une EDP simple. Il s inspire d un sujet similaire proposé par F. Alouges. Ce sujet et le code correspondant se trouvent sur le site web du cours, http://cermics.enpc.fr/ legoll/edpef.html Le programme principal est neumann.sce, qui appelle certaines routines définies dans les autres fichiers.sce. Pour toute la suite, on se donne un domaine borné et polygonal R, une fonction f L ), et on s intéresse au problème { u u = f dans D ), u n = 0 sur, 1) où la condition aux limites porte sur la dérivée normale : u n n est le vecteur normal à. = n u, où Question 1. En supposant que u est assez régulière pour que toutes les intégrations par parties soient possibles, montrer que, si u est solution de1), alors u est solution de la formulation variationnelle suivante : Chercher u V tel que, pour tout v V, au,v) = bv), ) avec V = H 1 ) et au,v) = u v + uv, bv) = f v. On admettra pour la suite que la formulation variationnelle) est équivalente à résoudre l EDP 1) dans H 1 ) modulo une interprétation correcte de la condition aux limites dans 1)). Question. Montrer que ) est bien posé. 1
1 Discrétisation On maille avec un maillage T h du type de celui sur la gauche de la Figure 5. page 79) du polycopié cf. aussi la Figure 1 pour un exemple typique de maillage non-structuré). On discrétise ) sur l espace de dimension finie V h = { v h C 0 ), v h K P 1 pour tout K T h }, dont une base est {ϕ 1,...,ϕ N }, où N est le nombre de noeuds du maillage noeuds internes à et noeuds sur le bord ) et où ϕ j est la fonction affine par morceaux sur chaque triangle, qui vaut 1 sur le noeud S j et 0 en tous les autres noeuds. On note T l pour 1 l L) les éléments du maillage T h. Figure 1 Exemple de maillage non-structuré de Question. Ecrire la formulation discrète associée à ) de solution u h V h ), et montrer qu elle revient à résoudre le système linéaire M +K)U = B, où la matrice de raideur K, de taille N N, est donnée par K ij = ϕ i ϕ j, ) où la matrice de masse M, de taille N N, est donnée par M ij = ϕ i ϕ j, 4) et où le membre de droite B R N est donné par B i = f ϕ i. 5) Montrer que le vecteur U R N est tel que sa composante i vaut u h S i ).
Un premier choix pour On choisit pour commencer le domaine = [0,], qu on a maillé avec le logiciel libre Gmsh, ce qui fournit le fichier geomcarre.msh non distribué). Pour faciliter la lecture du maillage sous Scilab, ce fichier a été scindé en deux, geomcarre.node et geomcarre.element. Question 4. Afficher le maillage geomcarre à l aide du code routine visu, utilisée dans neumann.sce et définie dans visu maillage.sce). Que représentent les entiers / tableaux dénommés Nbpt, Nbtri, Coorneu, Numtri? Afficher les maillages geomcarre et geomcarre. Quel est leur utilité? Calcul des matrices de raideur et de masse.1 Calcul des matrices élémentaires Question 5. Montrer que le calcul de K et de M revient à calculer, pour chaque triangle T l et pour chaque couple de fonctions de forme ϕ i et ϕ j, les quantités Kij T l = ϕ i ϕ j et Mij l = ϕ i ϕ j. 6) l T l Question 6. On se place dans le triangle T l, dont les noeuds sont S 1, S et S. On rappelle que la fonction de forme ϕ 1 associée au noeud S 1 est donnée par ϕ 1 x,y) = 1 D y x x ) x y y )), où D = x y 1 x 1 y. On a noté x i,y i ) les coordonnées du sommet S i 1 i ), et on a utilisé les notations x ij = x i x j et y ij = y i y j. On a de même que ϕ x,y) = 1 D y 1x x 1 ) x 1 y y 1 )) et ϕ x,y) = 1 D y 1x x ) x 1 y y )). Vérifier que ϕ j S i ) = δ ij. On remarquera que x x D = y y ) x x 1 y y 1 ) = S S S 1 S est proportionnel à l aire de T l. C est donc une quantité invariante par permutation des indices. Question 7. Pour calculer 6), on va utiliser les formules suivantes. On note S 1, S et S les noeuds d un triangle T l :
pour une fonction g constante sur T l, on a ) S1 +S +S g = T l g T l où T l est l aire de T l. pour une fonction g affine i.e. P 1 ) sur T l, on a g = T l T l gs1 )+gs )+gs ) ). pour une fonction g de classe P sur T l, on a g = T l T l [ g S1 +S ) +g S +S ) +g S +S 1 )]. Soit T l un triangle de sommets S 1, S et S. Completer neumann.sce et les fichiers matk elem.sce et matm elem.sce qui calculent 6) à partir des coordonnées des sommets de T l. On pourra vérifier l implémentation en comparant le résultat fourni par les fichiers matk elem.sce et matm elem.sce à un calcul analytique direct, dans le cas du triangle de référence de sommets 0,0), 1,0) et 0,1).. Assemblage L assemblage des matrices K et M définies par ) et 4) est fait par l algorithme suivant : 1. On pose K = 0, M = 0.. Boucle sur les éléments : pour l = 1 à L, a) Déterminer les coordonnées des sommets de T l. b) Calculer les contributions élémentaires 6), pour 1 i,j. c) Boucle sur i : pour i = 1 à, i. Identifier le numéro I du noeud i dans la numérotation globale des noeuds 1 I N). ii. Boucle sur j : pour j = 1 à, A. Identifier le numéro J du noeud j dans la numérotation globale des noeuds 1 J N). B. Incrémenter la matrice de raideur : K IJ := K IJ +K l ij et idem pour la matrice de masse M). Question 8. Compléter le fichier neumann.sce pour réaliser l assemblage des matrices K et M. 4
4 Calcul du second membre Question 9. On calcule le second membre par 5). On admet que, pour une fonction f continue, on peut remplacer dans 5) la fonction f par son interpolée I h f aux noeuds, définie par I h fx) = N fs i )ϕ i x). i=1 Donner alors l expression de B en utilisant la matrice de masse M et implémenter ceci dans neumann.sce. 5 Mise en oeuvre informatique Pour éviter d avoir à calculer une excellente approximation de u ce qui serait nécessaire pour évaluer l erreur entre la solution exacte et son approximation u h ), on se place dans le cas où la solution exacte est ux, y) = cosπx) cosπy). Question 10. Calculer la fonction f correspondante et implémenter sa formule dans le fichier second membre.sce. L objectif est maintenant decalculer l approximation u h dela solution de) pour plusieurs maillages, et de vérifier que la solution converge bien vers la solution exacte, au taux prévu par la théorie en fonction de la taille des éléments. Question 11. On calcule ici u u h L ). 11a. On assimile u à sa interpolé I h u sur V h et on définit l erreur par e h = I h u) u h L ). En quoi est-ce légitime, dans l optique d étudier le comportement de u u h L ) vis à vis de h? 11b. On écrit u h x) = j U j ϕ j x) et I h u = j V j ϕ j x) avec V j = us j ). Montrer que e h s exprime facilement à partir des vecteurs V et U, ainsi que de la matrice de raideur K. 11c. Implémenter le calcul de e h dans le fichier neumann.sce. Question 1. On calcule ici u u h L ). 5
1a. On assimile à nouveau u à sa interpolé I h u sur V h et on définit l erreur par ẽ h = I h u u h L ). En quoi est-ce légitime, dans l optique d étudier le comportement de u u h L ) vis à vis de h? 1b. Comme dans la Question 11b, montrer que ẽ h s exprime facilement à partir des vecteurs V et U, ainsi que de la matrice de masse M. 1c. Implémenter le calcul de ẽ h dans le fichier neumann.sce. Question 1. Tracer e h et ẽ h en fonction de h, en utilisant les différents maillages fournis le pas de maillage a été divisé par pour passer d un maillage à un autre, et le pas pour le maillage le plus grossier est de l ordre de h 0.). On pourra penser à faire une figure de loge h et de logẽ h en fonction de log h. Commenter. 6