21
INSTITUT SUPERIEUR D’INFORMATIQUE DE MODELISATION ET DE LEURS APPLICATIONS COMPLEXE DES CEZEAUX BP 125 - 63173 AUBIERE CEDEX Rapport de projet 3 ème année METHODE DE GALERKIN DISCONTINUE POUR LA RESOLUTION D'UNE EQUATION HYPERBOLIQUE Présenté par : Cédric Houard Ludovic Gillet 1

METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Embed Size (px)

Citation preview

Page 1: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

INSTITUT SUPERIEUR D’INFORMATIQUE DE MODELISATION ET DE LEURS APPLICATIONS

COMPLEXE DES CEZEAUXBP 125 - 63173 AUBIERE CEDEX

Rapport de projet 3ème année

METHODE DE GALERKIN DISCONTINUE POUR LA

RESOLUTION D'UNE EQUATION HYPERBOLIQUE

Présenté par : Cédric Houard Ludovic Gillet

1

Page 2: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Responsable : Rachid Touzani

2

Page 3: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

INSTITUT SUPERIEUR D’INFORMATIQUE DE MODELISATION ET DE LEURS APPLICATIONS

COMPLEXE DES CEZEAUXBP 125 - 63173 AUBIERE CEDEX

Rapport de projet 3ème année

METHODE DE GALERKIN DISCONTINUE POUR LA

RESOLUTION D'UNE EQUATION HYPERBOLIQUE

Présenté par : Cédric Houard Ludovic Gillet

3

Page 4: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Responsable : Rachid Touzani

4

Page 5: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

REMERCIEMENTS :

Nous tenons avant tout à remercier notre maître de projet : M TOUZANI Rachid pour sa disponibilité, pour l’ensemble des réponses apportées à nos questions concernant la librairie OFELI et tous ses conseils qui nous ont permis d’élaborer ce projet.

Nous remercions également M BARRA Vincent, notamment pour avoir été compréhensif quant à nos disponibilités pour la soutenance.

5

Page 6: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

GLOSSAIRE :

OFELI Bibliothèque permettant de travailler avec des maillages en C et C++.

Equation hyperbolique Equation notamment utilisée en mécanique des fluides et en propagation des ondes.

Galerkin Mathématicien russe (1871-1945).

Maillage Découpage d’un domaine en plusieurs éléments. On travaillera sur des triangles.

6

Page 7: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

TABLE DES FIGURES ET ILLUSTRATIONS :

Figure 1 – Domaine soumis à un flux 9

Figure 2 – Exemple de découpage d’un domaine 9

Figure 3 – Calcul du sens de la normale 10

Figure 4 – Conditions initiales et conditions aux limites13

Figure 5 – Evolution du domaine (10 itérations)14

Figure 6 – Evolution du domaine (19 itérations)14

7

Page 8: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

RESUME :

Le but du projet est de résoudre une équation hyperbolique :

( )( ) 0=+∂∂

ufdivtu

Pour cela, on va utiliser la méthode de Galerkin discontinue. On va donc devoir découper notre domaine de résolution en éléments et appliquer cette méthode à chaque élément. On devra donc parcourir l’ensemble du maillage.Pour gérer le maillage plus facilement, on va utiliser la bibliothèque OFELI, qui prend en compte les triangles constituant le maillage, les côtés de chaque triangle, ainsi que les nœuds constituant les sommets des triangles. Cette librairie est compatible avec le C et le C++. On visualisera les résultats grâce au programme GNUPLOT, et on travaillera sous LINUX.On commencera à vérifier notre programme sur des petits maillages pour ensuite étudier les domaines plus imposants.

Mots-clés : équation hyperbolique, Galerkin discontinue, maillage

ABSTRACT :

The aim of this project is to solve a hyperbolic equation:

( )( ) 0=+∂∂

ufdivtu

To this end, we used the Galerkin method. We have to cut our field of resolution in elements and to apply this method for each element, so we must traverse all of the mesh.To use the mesh easily, we used the OFELI library, which take into account the triangles which are in the mesh, the sides and the points of each triangle. This library is compatible with C and C++. The results will be seen thanks to GNUPLOT and we worked with LINUX.Our program will be verified with little problems and then with big meshes.

8

Page 9: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Keywords: hyperbolic equation, Galerkin method, mesh

9

Page 10: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

TABLE DES MATIERES :

REMERCIEMENTS

GLOSSAIRE

TABLE DES ILLUSTRATIONS

RESUME, ABSTRACT

TABLE DES MATIERES

INTRODUCTION 8

PREMIERE PARTIE : PRESENTATION DE LA METHODE 9

1. Equation hyperbolique 9

2. Principe de résolution 9

3. Autres calculs nécessaires10

SECONDE PARTIE : RESOLUTION DU PROBLEME11

1. Fonction principale11

2. Vérification du sens de la normale11

3. Calcul du flux allant de T à S11

4. Calcul pour une itération de l’algorithme général11

5. Enregistrement des résultats11

6. Particularités de la bibliothèque OFELI12

10

Page 11: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

TROISIEME PARTIE : QUELQUES RESULTATS13

CONCLUSION 15

11

Page 12: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

INTRODUCTION :

Dans le cadre de notre troisième année d’études à l’ISIMA, nous avons réalisé un projet entre octobre 2006 et mars 2007, encadré par M TOUZANI Rachid.

Le but du projet est de résoudre sur un domaine fini une équation hyperbolique de la forme :

( )( ) 0=+∂∂

ufdivtu

Ce genre d’équation est utilisé pour la propagation des ondes ou en mécanique des fluides.On découpe notre domaine fini en éléments, et on cherchera à calculer la valeur de u sur chaque élément.

On utilisera pour cela la méthode de Galerkin discontinue, dont on explique le principe dans une première partie, puis on décrit les principales fonctions qu’on utilise. Enfin, on donnera quelques résultats obtenus.

8

Page 13: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

PREMIERE PARTIE : PRESENTATION DE LA METHODE

1. Equation hyperbolique

Le but du projet est de résoudre l'équation hyperbolique suivante grâce à une méthode d'éléments finis de type Galerkin discontinu.

( )( ) 0=+∂∂

ufdivtu

Où f est une fonction de flux donnée.Une telle équation permet de regarder l’évolution d’un domaine soumis à un flux (mécanique des fluides, propagation des ondes,…).

Figure 1 – Domaine soumis à un flux

On va s’intéresser dans notre étude à un flux de type :( ) uauF

=

2. Principe de résolution

Pour résoudre cette équation, on se place dans le domaine des éléments finis.

Figure 2 – Exemple de découpage d’un domaine

On obtient :

( )( )∫∫∫ΩΩΩ

+ Ω−Ω∆

=Ω∆

dvuFdivdvut

dvut

nnn ...1

.1 1

On intègre par partie :

( ) ( ) .......1

.1 1 ∫ ∫∫∫

Ω ΓΩΩ

+ Γ−Ω∇+Ω∆

=Ω∆

dvnuFdvuFdvut

dvut

nnnn

On se place maintenant sur un triangle T, dans P0, et on note e une arête de T

( ) ( ) dsvnuFdxvuFdxvut

dxvut T e e

nn

T

n

T

n ......1

.1 1 ∫ ∑∫∫∫ −∇+

∆=

∆+

9

Page 14: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Finalement, on a :

( )ne

e

nT

nT ueuT

tuT

tφ..

1.

1 1 ∑−∆

=∆

+

Avec nTu la valeur de u sur le triangle T, et eφ définit comme suit :

Soit S le triangle tel que eTS =∩On pose ( ) eSnse nuFF

.= avec ne normale de T→S.

Si 0<seF alors ( ) sene Fu =φ

Sinon ( ) ( ) eTnne nuFu

.=φ

De plus, pour avoir convergence du problème, Δt doit vérifier la condition suivante :

ch

t.2

<∆ avec h le pas de la subdivision en x et c le coefficient devant

div(f(u)) dans l’équation hyperbolique. Dans notre cas, c vaut 1.

3. Autres calculs nécessaires

a) Longueur d’une arête

D’après la formule précédente, on doit calculer la longueur d’une arête à partir des points a=(xa,ya) et b=(xb,yb) délimitants cette arête. La formule est évidemment donnée par :

( ) ( ) 22baba yyxxlong −+−=

b) Aire d’un triangle

L’aire doit également être déduite des coordonnées des points délimitant le triangle.

( )( ) ( )( )abacabac xxyyyyxxaire −−−−−=21

c) Calcul de la normale à une arête

( ) ( )

−−

−+−=

ba

ab

baabxx

yy

xxyyn

22

1

Le sens de la normale dépend de l’ordre des points que l’on prend. Pour avoir un sens correct de la norme qui va bien du triangle T au triangle S dans l’algorithme précédent, on calcule le produit scalaire entre le vecteur v liant le centre du triangle et un sommet de l’arête, et la normale. Si ce produit scalaire est négatif, alors l’arête est entrante.

10

Page 15: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Figure 3 – Calcul du sens de la normale

11

Page 16: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

SECONDE PARTIE : RESOLUTION DU PROBLEME

1. Fonction principale

La première étape de notre programme consiste à lire le maillage à partir du fichier donné en argument de l’exécutable. Les grands maillages seront générés grâce au programme Genmesh. Puis on définit tous les côtés du maillage, ainsi que les voisins de chaque élément grâce à des fonctions de la librairie OFELI. On crée également les données du problème, c’est-à-dire un vecteur de taille le nombre d’éléments du maillage qui contiendra la solution du problème, une variable contenant les coordonnées de chaque triangle, et les conditions aux frontières du domaine. On applique donc tout d’abord les conditions initiales et les conditions aux limites. On calcule également le nombre d’éléments que contient le maillage. Enfin, on boucle sur le temps en appliquant l’algorithme vu précédemment, et on écrit les résultats obtenus pour chaque itération dans un fichier, ce qui nous permet de voir l’évolution du résultat.

2. Vérification du sens de la normale

On doit vérifier le sens de la normale lors du calcul de eφ . Pour cela, on calcul le vecteur reliant le centre du triangle et un sommet du triangle. On calcule la normale à l’arête entre les triangles T et S sans se préoccuper de son sens. On calcule le produit scalaire entre le vecteur calculé juste avant et cette normale. Suivant le signe du produit scalaire trouvé, on en déduit le sens correct de la normale.

3. Calcul du flux allant de T à S

On commence dans cette fonction à calculer la normale d’une arête séparant T et S, et à déterminer son sens de la manière vu auparavant. On en déduit eφ qui intervient dans l’algorithme.

4. Calcul pour une itération de l’algorithme général

On commence par calculer pour chaque triangle le terme nTuT

t.

1∆

.

Puis on parcourt l’ensemble des voisins de T pour calculer ( )ne

e

ueφ.∑

avec e une arête entre T et un voisin de T. Ensuite on additionne les

termes calculés ci-dessus et on multiplie le résultat par Tt∆

, ce qui nous

donne la valeur à l’itération suivante de l’élément T.

12

Page 17: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

5. Enregistrement des résultats

On souhaite visualiser les résultats grâce à gnuplot. On pourra lire directement dans un fichier les résultats pour afficher graphiquement ce qu’on obtient. Le fichier contient trois colonnes : une représentant les abscisses de ‘u’ (correspondant aux abscisses des centres des triangles), une autre contenant leur ordonnées, et la dernière la valeur de ‘u’. Pour avoir un résultat lisible, les données doivent être classées selon les abscisses croissantes, puis les ordonnées croissantes, comme ci-dessous :

0.00666667 0.0133333 00.00666667 0.0333333 00.00666667 0.0533333 00.00666667 0.0733333 00.00666667 0.0933333 0

0.0133333 0.00666667 00.0133333 0.0266667 00.0133333 0.0466667 00.0133333 0.0666667 00.0133333 0.0866667 0

0.0266667 0.0133333 00.0266667 0.0333333 00.0266667 0.0533333 00.0266667 0.0733333 00.0266667 0.0933333 0

0.0333333 0.00666667 00.0333333 0.0266667 00.0333333 0.0466667 00.0333333 0.0666667 00.0333333 0.0866667 0

0.0466667 0.0133333 00.0466667 0.0333333 00.0466667 0.0533333 00.0466667 0.0733333 00.0466667 0.0933333 0

6. Particularités de la bibliothèque OFELI

Comme préciser auparavant, La bibliothèque OFELI se caractérise par sa vision des maillages. Ainsi, parmi toute la librairie, on a pu utilisé les classes mesh, element, side, node, point.

a) MeshCette classe permet de manipuler les maillages.Par exemple, cette classe contient la fonction getNbElements() qui permet de connaître le nombre d’éléments. On peut également faire des boucles sur l’ensemble des éléments grâce aux fonctions topElement() et getElement().Ce sont les principales fonctions de la classe Mesh qu’on utilise.

13

Page 18: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

b) ElementOn utilise cette classe pour utiliser les éléments (les triangles dans notre cas), et en particulier ces fonctions :getLabel() retourne le numéro de l’élément.getNbSides() retourne le nombre de côtés que possède l’élément.getPtrNode(i) retourne un pointeur vers le noeud de label igetPtrSide(i) retourne un pointeur vers le côté de label i

c) SideCette classe permet de gérer les côtés des éléments. On utilise notamment :getPtrNode(i) retourne un pointeur vers le noeud de label igetLabel() retourne le numéro de l’élément.getNeighborElement(i) retourne un pointeur vers le voisin du i-ème côté de l’élément.

d) NodePour décrire un nœud, on utilise la classe Node.getCoord() permet de retourner les coordonnées du sommet.

e) PointPermet d’accéder facilement aux coordonnées de point.

TROISIEME PARTIE : QUELQUES SOLUTIONS

On peut voir l’évolution d’un flux sur les graphiques suivants. On a pris

( ) uuF ⋅

−−

=1

1

Le domaine étudié est [0 ;1]× [0 ;1], on a décomposé le domaine en 5000 éléments. On va regarder 20 itérations du domaine.

14

Page 19: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Figure 4 – Conditions initiales et conditions aux limites

Figure 5 – Evolution du domaine (10 itérations)

On voit sur ces graphiques l’évolution du flux. Le pic se déplace, et les bords sont « envahis » par le flux.

15

Page 20: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

Figure 6 – Evolution du domaine (19 itérations)

16

Page 21: METHODE DE GALERKIN DISCONTINUE POUR LA … · une méthode d'éléments finis de type Galerkin discontinu. +(())=0 ... un flux (mécanique des ... Soit S le triangle tel que S∩T=e

CONCLUSION :

Notre étude permet de résoudre une équation hyperbolique dans P0. Nous avons également créé de quoi visualiser les résultats sous Gnuplot. On voit ainsi très bien la propagation du flux dans le domaine étudié.

Cependant, nous avons encore quelques soucis quant à certains résultats obtenus. En effet, le programme ne donne pas de résultats cohérents pour certaines valeurs de a. De plus notre programme se limite à une résolution dans P0, on aurait pu résoudre l’équation dans P1. C’est-à-dire que chaque triangle aurait trois valeurs (une différente pour chaque sommet) au lieu d’une seule (située au centre du triangle).

17