Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par...

20
Bonnet Rebecca Pernod Erik ISITV Calcul scientifique 2 ère année Travaux Pratiques D’ Eléments Finis

Transcript of Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par...

Page 1: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

Bonnet Rebecca

Pernod Erik

ISITV

Calcul scientifique

2ère année

Travaux

Pratiques

D’

Eléments

Finis

Page 2: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

1

I - Problématique………………………………………………..……………………..2

II – Etude du problème………………………………………..……………………..2

III – Algorithme ……………………………..…………………..……………………..9

IV – Points délicats……………………………………………………………….…..10

V – Résultats.………………………………………………..………………...………..11

VI – Programme …………...……………………………………..…………………..15

TP 1 : Application de la méthode des éléments

Finis au problème de la plaque. Equation de la chaleur.

Page 3: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

2

I - Problématique

Dans ce TP, nous considérons une plaque rectangulaire dont les 4 côtés sont

maintenus à des températures différentes. On cherche alors la température d’état

stationnaire T(x,y) en tout point de la plaque.

Nous sommes donc amenés à résoudre le problème (P) suivant :

(P)

] [ ] [

====

×=∆−

10)1,(

50)0,(

20),1(

5),0(

,0,00

xT

xT

yT

yT

basurT

Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de

discrétisation h=1

1

+N et k=

1

1

+M.

Par simplification du problème on pose a = b = 1 et M=N.

II – Etude du problème

Etude du problème variationnel

On cherche à étudier le système (P).

On a V= deBordConditionsvVv ⊂∈ ;

Et on a le problème variationnel suivant :

0.

0..

=−∇∇⇔

=∇−∇∇

∫∫

∫∫

ΩΩ

ΩΩ

δ

δ

vdivuvu

nvuvu

Or

Page 4: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

3

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )

( ) ( ) ( ) ( )∫∫∫∫∫

∫∫∫∫∫

∇+∇+∇+∇=

∇+∇+∇+∇=

Ω

Ω

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

,15,0201,100,50.

,1,1,0,01,1,0,0,.

dxyudxyudxxudxxuvdivu

dyyvyudyyvyudxxvxudxxvxuvdivu

δ

δ

D’où

( ) ( ) ( ) ( ) 0,15,0201,100,50.1

0

1

0

1

0

1

0

=

∇+∇+∇+∇−∇∇=−∇∇ ∫∫∫∫∫∫∫

ΩΩΩ

dxyudxyudxxudxxuvuvdivuvuδ

On obtient donc :

( ) ( ) ( ) ( ) ( )

∫∫∫∫

Ω

∇∇=

∇+∇+∇+∇=

vuvua

dxyudxyudxxudxxuvl

),(

,15,0201,100,501

0

1

0

1

0

1

0

On a a(u,v) bilinéaire car l’intégrale et le gradient sont des fonctions linéaires et car a

est symétrique.

L(v) est aussi linéaire car c’est une somme d’intégrales et de gradients.

Montrons la continuité de a(u,v) :

11

1

'

...2

²

2

²

2

²²

HH

LLH

LL

vudvu

oùd

or

vudvu

Ω

Ω

≤Ω∇∇

∇+=

∇∇≤Ω∇∇

On a bien a(u,v) continue.

Montrons la V-ellipticité de a(u,v) :

Page 5: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

4

2

2

²

2

1

1

1

'²1

),(

H

L

uc

uc

Poincaréaprèsddxuc

dx

udvuuua

Ω=Ω∇∇=

∫ ∫

Ω

Ω Ω δδ

a(u,v) est V-elliptique

l(v) est continue car elle ne dépend pas de v

On peut donc appliquer le théorème de Lax-Milgram au problème : on a donc

existence et unicité de la solution.

Etude du problème variationnel approché

On a

( )

( ) ( )( ) ( )

( )

( ) ( )2

1

,

0,

'

0,

0,

,;

∇=

≠=

==

==

=

∈∈Ω∈= ∞

iii

ii

jjii

jjh

iih

iihTihhh

a

et

jijau

oùd

lua

luaet

uu

TborddeconditionslesvérifievetQvCvV

φφφ

φφ

φφφ

φφφ

τ

Il faut donc calculer pour chaque j les Σ ui a(φi, φi ), pour cela déterminons la valeur

du gradient de φi sur les triangles qui entourent le point i comme sur le schéma

suivant :

Tα+2n

Tα+2n-1 Tα+2n+1

Tα Tα+2

Tα+1

Page 6: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

5

−−

−=∇

++

+

−+

+

+

12

2

12

2

1

)1

;1

(

)1

;0(

)0;1

(

)0;1

(

)1

;0(

)1

;1

(

n

n

n

i

Tsurhh

Tsurh

Tsurh

Tsurh

Tsurh

Tsurhh

α

α

α

α

α

α

φ

Par exemple calculons a(φi, φi ) :

Les termes diagonaux de la matrice seront donc tous égaux à 4 car A(i,i) = a(φi, φi ).

Mais le nœud i est en relation avec 6 autres nœuds. Pour chaque interaction entre

deux nœuds on prend comme support les deux triangles adjacents.

4

²

2

²

1

²

1

²

1

²

1

²

2

2

²

),(12

2

2

2

12

2

2

2

1

22

=

+++++=

∇+∇+∇+∇+∇+∇= ∫∫∫∫∫∫+++−+++

hhhhhh

h

anT

i

nT

i

nT

i

T

i

T

i

T

iii

αααααα

φφφφφφφφ

Page 7: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

6

( ) ( )

1

0

1.

1

1

1

1

.0

1

2

²

,1,

21212

1212 11

1

1

−=

−+−

=

∇∇+∇∇=

∇∇+∇∇=

∇∇=

=−

+++−+

−+−+

∫∫

∫∫

ΩΩ

−Ω

−Ω

Ω−

h

h

h

h

hh

h

lespourntranslatioparsymétrieayil

aiiA

TiTiTiTi

TiTiTiTi

ii

ii

nn

nn

αααα

αααα

φφφφ

φ

φφφφ

φφ

φφ

Par la suite on obtient :

∇=∇

∇=∇

∇=∇

∇=∇

∇=∇

∇=∇

++

−++

+++

+

++−+

+

−−

−−

n

n

n

n

nn

TiTNi

TiTNi

TiTNi

TiTNi

TiTi

TiTi

22

121

121

2

1212

2

1

1

1

1

αα

αα

αα

αα

αα

αα

φφ

φφ

φφ

φφ

φφ

φφ

Page 8: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

7

∇=∇

∇=∇

∇=∇

∇=∇

∇=∇

∇=∇

+++

+

++

+−+

−+++

+

++

++

+

+

+

+

112

2

22

112

1212

2

1

1

1

1

αα

αα

αα

αα

αα

αα

φφ

φφ

φφ

φφ

φφ

φφ

TiTNi

TiTNi

TiTNi

TiTNi

TiTi

TiTi

n

n

n

n

nn

On en déduit le remplissage de la matrice A suivant :

A(i,i) = a(φi, φi ) = 4

A(i,i-1) = a(φi, φi-1 ) = -1

A(i,i+1) = a(φi, φi+1 ) = -1

A(i,i-N) = a(φi, φi-N ) = 0

A(i,i+N) = a(φi, φi+N ) = 0

A(i,i+N+1) = a(φi, φi+1+N ) = -1

A(i,i-N-1) = a(φi, φi-1-N ) = -1

Page 9: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

8

N-1

On obtient donc le système matriciel suivant :

=

−−

−−

−−

++

+

++

+

+

−−

−−

−−

+

1,1

12

1,1

11

1,1

12

1,1

11

2

11

11

2

11

2

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

:

.

'

.

.

'

'

nn

N

nn

N

N

NN

NN

NN

N

f

f

f

f

u

u

u

u

I

IAI

IAI

I

IAI

I

Avec

−−

−−

=

410

1..

...

..1

014

'A de taille N-1xN-1

I, la matrice identité. Sa présence reflète le fait que les valeurs des bords sont connues

et sont présentes dans le vecteur de charge.

Dans ce cas particulier où nous connaissons les valeurs des bords le vecteur de

charge s’écrira plus précisément :

=

15

10

...

10

5.7

20

0

...

0

5

35

50

...

50

5.27

F

N-1

Taille N+1. Le motif se répète N-1 fois

Page 10: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

9

III – Algorithme

Page 11: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

10

IV – Points délicats

1. Pour un M et un N donnés, on obtient une matrice de taille

[(N+1)x(M+1)]x[(N+1)x(M+1)]. Autrement dit lorsqu’on dépasse N=M=40, on constate

alors que le programme est très long voire impossible à exécuter pour les PC peu

puissants (Le langage fortran étant lui aussi limité dans la taille des matrices).

2. Nous nous sommes aperçus que pour la résolution du système matriciel

l’utilisation de la matrice A totale est fastidieuse. Ainsi nous avons utilisé une matrice

A restreinte aux nœuds intérieurs (de taille A[(N-1)² ;(N-1)²]. Cela permet aussi

d’alléger le système matriciel. Bien évidemment, il faut modifier le vecteur solution

et le vecteur de charge en conséquence.

3. Le problème majeur que nous avons rencontré a été de passer du maillage de la

plaque en indice (i,j) qui s’effectue de bas en haut au remplissage de la matrice

d’indice (i,j) qui s’effectue de haut en bas. En effet, à un nœud numéroté i,

correspond à la ligne entière i de la matrice solution. Il nous a donc fallut trouver

une équation de passage entre ces deux notations. (correspondance entre A(i,i) et

a(φi ;φi) vue précédemment).

Page 12: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

11

V – Résultats Afin de simplifier l’étude des résultats nous avons tracé des courbes grâce aux

résultats obtenus et à l’aide de Maple.

A la fin du programme, on imprime le vecteur solution dans un fichier texte,

ainsi à l’aide de Maple il est possible de récupérer les données de ce fichier et de

reconstituer la matrice solution.

Voici le programme Maple pour N=5

EF : TP1 Equation de la chaleur sur une plaque. Résolution par la méthode des éléments finis. Acquisition des données et modélisation graphique > restart: > n:=5: > n:=n+1: > f := fopen( "F:\\Documents and Settings\\erik\\Bureau\\EF\\resultats\\Matrices.n=5 .dat",READ ): > all:=readdata(f,float,1): for i from 1 to n do a[i]:=[seq(all[j+(i-1)*n],j=1..n)]: od: mat:=[seq(a[i],i=1..n)]: MAT:=convert(mat,Matrix);

:= MAT

7.5 10.0 10.0 10.0 10.0 15.05.0 9.63979195 11.9062886 12.3112889 10.5778222 20.05.0 11.6528792 15.6740734 16.7610449 14.875149 20.05.0 16.2976514 22.376081 24.1836684 22.7395511 20.05.0 26.1616456 33.3489308 34.8579965 31.8993869 20.027.5 50.0 50.0 50.0 50.0 35.0

> with(plots): matrixplot(MAT,title=`Evolution graphique de la cha leur`, axes=boxed); matrixplot(MAT,title=`Histogramme de l'évolution de la chaleur`,heights=histogram,axes=boxed);

Page 13: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

12

Voici les courbes de l’évolution de la chaleur : Pour M=N=5

Graphique plan Histogramme

Pour M=N=15

Graphique plan Histogramme

Pour M=N=25

Page 14: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

13

Graphique plan Histogramme

Pour M=N=40

Graphique plan Histogramme

Avec ici, en rouge la température la plus élevé (50°C) et violet la plus faible (5°C)

Page 15: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

14

Dans les coins, nous avons pris à chaque fois la moyenne des températures des

deux bords. On retrouve bien les résultats attendus.

On constate bien que la diffusion de la chaleur est progressive. De plus les

histogrammes rendent bien compte de l’importance du maillage. Plus celui-ci est

grand moins il y a d’écarts brusques de température entre 2 mailles voisines.

A l’aide d’un compteur placé dans la méthode de la résolution du système,

nous pouvons obtenir le tableau suivant :

Valeur de N et M Nombre d’itérations nécessaires

5 30

15 390

25 1150

40 3040

On constate que le nombre d’itérations augmente très rapidement. On est donc très

vite limité par la capacité de l’ordinateur.

Page 16: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

15

VI – Programme

c ********************************************* ********************* c | | c | Elements Finis : TP1 | c | Diffusion chaleur dans une pla que | c | | c ********************************************* ********************* c PROGRAM Bidule c c Declarations c ************ c INTEGER i,j,k,dim,N,Neu,cpt DOUBLE PRECISION A,h,Aptit,FM,F,T,TM,L,U PARAMETER (dim= 2000 ) DIMENSION A(dim,dim),T(dim),TM(dim,dim),F(dim),Aptit(dim,dim) , & FM(dim,dim),L(dim,dim),U(dim,dim) c OPEN(UNIT= 69, FILE= 'Matrices.dat' ,STATUS='UNKNOWN') OPEN(UNIT= 17, FILE= 'Resultats.dat' ,STATUS='UNKNOWN') c c c Initialisation c ************** c 15 WRITE(*,*) 'Saisissez une valeur pour N' READ(*,*)N c Neu=N+ 1 c IF (N*N .GT. dim) THEN WRITE (*,*) 'La valeur de N choisie est trop grande, recommence z' GOTO 15 ENDIF c c c On resout le systŠme sans prendre en compte l es bords neu=neu- 2 c c --- Vecteur de charge --- c DO i= 1,Neu !remplissage de 0 DO j= 1,Neu FM(i,j)= 0 ENDDO ENDDO c DO i= 1,Neu !matrice de charge (taille neu x neu) DO j= 1,Neu FM( 1,j)= 50 FM(i, 1)= 5 FM(i,Neu)= 20 FM(Neu,j)= 10 ENDDO ENDDO FM(1, 1)= 55 !on complete les coins FM(1,Neu)= 70 FM(Neu, 1)= 15 FM(Neu,Neu)= 30 c DO i= 1,Neu !on remplit le vecteur de charge (taille neu x neu) DO j= 1,Neu ! a l'aide de la matrice de charge F((i- 1)*Neu+j)=FM(i,j) ENDDO ENDDO c

Page 17: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

16

c --- Matrice restreinte aux noeuds interieurs --- c DO i= 1,Neu** 2 DO j= 1,Neu** 2 !remplissage de 0 Aptit(i,j)= 0 ENDDO ENDDO c DO i= 1,Neu** 2 Aptit(i,i)= 4 !remplissage des termes diagonaux ENDDO DO i= 1,Neu** 2- 1 Aptit(i,i+ 1)=- 1 Aptit(i+ 1,i)=- 1 ENDDO DO i= 1,Neu** 2-(Neu+ 1) Aptit(i,i+Neu)=- 1 Aptit(i+Neu,i)=- 1 ENDDO DO i= 1,Neu- 1 !remplacement des 0 sur les diags Aptit(i*Neu,i*Neu+ 1)= 0 Aptit(i*Neu+ 1,i*Neu)= 0 ENDDO c WRITE(*,*) WRITE(*,*) c c --- resolution --- c CALL decLU(Neu,dim,Aptit,L,U) CALL resolLU(Neu,L,U,F,T,cpt,dim) c WRITE( 17,*) 'taille N : ' ,N WRITE( 17,*) WRITE( 17,*) "Nombre d'it‚rations pour la r‚solution :" WRITE( 17,*)cpt WRITE( 17,*) c DO i= 1,Neu DO j= 1,Neu TM(i,j)=T((i- 1)*Neu+j) ENDDO ENDDO c c DO i= 1,Neu DO j= 1,Neu A(i+ 1,j+ 1)=TM(i,j) ENDDO ENDDO c DO i= 1,N+ 1 DO j= 1,N+ 1 A( 1,j)= 50 A(i, 1)= 5 A(i,N+ 1)= 20 A(N+1,j)= 10 ENDDO ENDDO A( 1, 1)= 27.5 A(N+1, 1)= 7.5 A(N+1,N+ 1)= 15 A( 1,N+ 1)= 35 c CALL Mat(A,N+ 1,dim) CLOSE( 69) CLOSE( 17) c c END

Page 18: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

17

c c ********************************************* ********************* c --------------------------------------------- --------------------- c c --------------------------------------------- --------------------- c Decomposition LU c SUBROUTINE decLU(N,dim,A,L,U) INTEGER n,i,j,k,m,dim DOUBLE PRECISION A,L,U DIMENSION A(dim,dim),L(dim,dim),U(dim,dim) m=n*n do i= 1,m- 1 do j= 1+i,m U(j,i)= 0 L(i,j)= 0 enddo enddo do i= 1,m L(i,i)= 1 enddo do i= 1,m U( 1,i)=A( 1,i) enddo L( 2, 1)=A( 2, 1)/U( 1, 1) do i= 2,m U( 2,i)=A( 2,i)-L( 2, 1)*U( 1,i) enddo do i= 3,m do j= 1,i- 1 L(i,j)=A(i,j) do k=1,j- 1 L(i,j)=L(i,j)-L(i,k)*U(k,j) enddo L(i,j)=L(i,j)/U(j,j) enddo do j=i,m U(i,j)=A(i,j) do k=1,i- 1 U(i,j)=U(i,j)-L(i,k)*U(k,j) enddo enddo enddo return end c --------------------------------------------- --------------------- c c --------------------------------------------- --------------------- c Resolution LU c SUBROUTINE resolLU(N,L,U,q,x,cpt,dim) INTEGER n,i,j,cpt,dim DOUBLE PRECISION L,U,q,x,y DIMENSION L(dim,dim),U(dim,dim),q(dim),x(dim),y(dim) c y( 1)=q( 1) cpt= 0 do i= 2,n*n y(i)=q(i) do j= 1,i- 1 y(i)=y(i)-L(i,j)*y(j) cpt=cpt+ 1 enddo enddo c x(n*n)=y(n*n)/U(n*n,n*n) do i=n*n- 1, 1,- 1 x(i)=y(i) do j=n*n,i+ 1,- 1 x(i)=x(i)-U(i,j)*x(j)

Page 19: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

18

cpt=cpt+ 1 enddo x(i)=x(i)/U(i,i) enddo c return end c --------------------------------------------- --------------------- c c --------------------------------------------- --------------------- c _____ Affichage de la matrice _____ c SUBROUTINE MAT(A,N,dim) c INTEGER i,j,N,dim,choix DOUBLE PRECISION A DIMENSION A(dim,dim) c WRITE(*,*) 'Comment voulez-vous afficher la matrice A ?' WRITE(*,*) "0 = Ne pas afficher la matrice" WRITE(*,*) "1 = A l'‚cran sous forme de matrice" WRITE(*,*) "2 = Dans un fichier texte sous forme de matrice" WRITE(*,*) "3 = Dans un fichier texte sous forme de vecteur Nx N" READ(*,*)choix WRITE(*,*) c 10 FORMAT(d14 .8 , 1A,$) c IF (choix .EQ. 1) THEN DO 100 i= 1,N WRITE(*,*)(A(i,j),j= 1,N) 100 CONTINUE c ELSEIF (choix .EQ. 2) THEN DO i= 1,N DO j= 1,N WRITE( 69, 10)A(i,j), ';' ENDDO WRITE ( 69,*) ENDDO c ELSEIF (choix .EQ. 3) THEN DO i= 1,N DO j= 1,N WRITE( 69,*)A(N-i+ 1,j) ENDDO ENDDO c ENDIF c c RETURN END c --------------------------------------------- --------------------- c c --------------------------------------------- --------------------- c PRODUIT SCALAIRE c SUBROUTINE SCALAIRE (V1,V2,taille,NM,res) c c --- Declarations --- INTEGER i, taille DOUBLE PRECISION V1(taille), V2(taille) DOUBLE PRECISION res c c -- - Initialisation --- res= 0 c c --- Calcul du Produit Scalaire ---

Page 20: Travaux Pratiques D’ Eléments Finis · 2009. 10. 29. · Nous discrétiserons ce problème par la méthode des éléments finis, avec des pas de discrétisation h= 1 1 N + et k=

19

DO i= 1,NM res=res+V1(i)*V2(i) ENDDO RETURN END c --------------------------------------------- ---------------------