7

Click here to load reader

EQUATION DIFFUSION REACTION

Embed Size (px)

DESCRIPTION

FINITE ELEMENT METHOD

Citation preview

Page 1: EQUATION DIFFUSION REACTION

BE 2

Methode des elements finis P1 pour le probleme deconvection–diffusion–reaction en 2D.

A– Rappel du probleme fort et de sa formulation variationnelle : On considere le problemede convection–diffusion–reaction, etudie en TD :

(P )− div(ε∇u) + β · ∇u+ αu = f dans Ω,

u = 0 sur Γ,

Contrairement au cas monodimensionnel, pour un second membre f donnee, bien que nous puissionsmontrer l’existence et l’unicite de la solution du probleme (P ), nous ne connaissons pas son expressionanalytique. Mais pour une fonction reguliere ue donnee, on peut calculer le second membre correspon-dant fe.

Exemple : On suppose que ]0, 1[×]0, 1[. Soit ue la fonction definie sur Ω par

(0.1) ue(x, y) = sin(πx) sin(πy).

Verifier que le second membre fe est donne par

(0.2) fe(x, y) =(2 ε π2 + α

)sin(πx) sin(πy) + β1 π cos(πx) sin(πy) + β2 π sin(πx) cos(πy).

La formulation variationnelle du probleme (P ) est donnee par :

(Pv)

u ∈ V,

a(u, v) = L(v), ∀v ∈ V,

avec V = H10 (Ω), a(u, v) =

∫Ω

ε∇u · ∇v +∫

Ω

(β ·∇)uv +∫

Ω

αuv et L(v) =∫

Ω

fv, ∀v ∈ V.

On suppose que ε ∈ L∞(Ω), ε ≥ ε0 > 0, α ≥ 0 et que div β = 0. Le probleme variationnel (Pv) admetdonc une solution et une seule.

B– Triangulation du domaine : On considere le On suppose que Ω est un domaine polygonal eton considere une triangulation reguliere Th, h > 0, formee de triangles :

Ω =⋃

K∈Th

K.

Dans tout ce qui suit, on suppose que Ω est le rectangle ]x0, x1[×]y0, y1[.

Pour diverses valeurs de x0, x1, y0, y1, Nx et Ny, executer la fonction MATLAB meshP1.m etafficher la triangulation Th. Consulter les tableaux node, elem et codnofr.

• Les noeuds sont numerotes dans le sens lexicographique. Afin de prendre en compte les noeudsinternes du maillage, on procede a une renumerotation des noeuds. Ceci est obtenu grace la fonctionMATLAB numddl.m . Executer cette procedure et commenter les resultats.

• Integrer ces deux fonctions dans un un programme principal main.m dont les parametresd’entree sont x0, y0, x1, y1, Nx et Ny.

1

Page 2: EQUATION DIFFUSION REACTION

C– Discretisation en elements finis P1 : Soit Wh, le sous–espace element finis P1 (approximationde l’espace H1(Ω)) et

Vh = Wh ∩H10 (Ω).

Le probleme variationnel discret, associe au probleme (P ), s’ecrit :

(Pvh)

uh ∈ Vh

a(uh, vh) = L(vh), ∀vh ∈ Vh.

Soit Nh le nombre de noeuds du maillage. SoitϕiNh

i=1 une base de Wh etϕiN0

i=1 une base de Vh. Leprobleme variationnel (Pv

h) est equivalent au systeme algebrique

(S)

ξ ∈ RN0 ,

A ξ = b.

Ou la matrice A et le second membre b sont definis par :

(0.3)

Aij =

∑K∈Th

[ ∫K

ε∇ϕj · ∇ϕi +∫

K

(β · ∇)ϕj ϕi +∫

K

α ϕj ϕi

],

bi =∑

K∈Th

∫K

fϕi.

Pour K ∈ Th quelconque et i = 1, 2, 3, on a vu plus haut que le tableau elem fournit le numero globaldu ieme noeud de l’element K :

19

20

12 13

1817

1

1

2

3

2

3Exemple :

K elem(1,K) elem(2,K) elem(3,K)— ————– ————- ————-19 17 12 1820 13 18 12

Comme nous l’avons signale en cours, pour ces deux elements, la correspondance entre les fonctionsde base et les coordonnees barycentriques est donnee par :

Pour l’element 19 :

φ17 = λ1,φ12 = λ2,φ18 = λ3.

Pour l’element 20 :

φ13 = λ1,φ18 = λ2,φ12 = λ3.

les coefficients de la matrice globale A et du second membre global b, donnes par (0.3), sontdonc obtenus par assemblage de matrices elementaires AK et de vecteurs elementaires bK .

2

Page 3: EQUATION DIFFUSION REACTION

D– Calcul des matrices et du vecteur elementaires :

Soit K un element de Th. Soit λ1, λ2 et λ3 les coordonnees barycentriques associees aux sommets S1, S2

et S3 de K.

Soit MK ,DK et CK les matrices elementaires de M3(R) definies, ∀k, l = 1, 2, 3, par :

MKkl =

∫K

λl λk, (matrice de masse)

DKkl =

∫K

∇λl · ∇λk, (matrice de rigidite ou de raideur)

CKkl =

∫K

(β · ∇)λl λk, (matrice de convection).

Pour simplifier la mise en oeuvre, on adopte les notations suivantes

(0.4) X =

x32

x13

x21

et Y =

y23

y31

y12

, avec xij = xi − xj , yij = yi − yj , ∀i, j = 1, 2, 3.

Pour K un element de la triangulation Th,

• ecrire une fonction MATLAB qui permet de recuperer en arguments de sortie les numeros dessommets N(1) = elem(1,K), N(2) = elem(2,K) et N(3) = elem(3,K), les coordonnees dessommets ainsi que les vecteurs X et Y .

– infoelem.m , les parametres d’entree sont : elem et node.

• En effectuant une boucle sur les elements du maillage, integrer cette fonction au programmeprincipal main.m .

Les vecteurs X et Y dependent de K et ils jouent un role important dans l’implementation des codeselements finis sous MATLAB. On peut, par exemple, facilement montrer (voir TD) que :

(0.5)∂λi

∂x=

12 |K|

Yi,∂λi

∂y=

12 |K|

Xi, ∀i = 1, 2, 3 et |K| = 12

(X3 Y2 −X2 Y3

)

Nous avons vu en TD que Les matrices et le vecteur elementaires sont donnes par :

3

Page 4: EQUATION DIFFUSION REACTION

MK =|K|12

2 1 11 2 11 1 2

,

DK =1

4 |K|

(Y Y t +XXt

),

CK = β1(K)16

Y1 Y1 Y1

Y2 Y2 Y2

Y3 Y3 Y3

+ β2(K)

X1 X1 X1

X2 X2 X2

X3 X3 X3

bK =|K|3f(K)

111

.Pour une fonction h definie sur K, on note h(K) la valeur de h au barycentre le l’element K et estdonnee par :

h(K) =f(S1) + f(S2) + f(S3)

3.

Pour K un triangle de sommets elem(1,K), elem(1,K) et elem(1,K),

• ecrire une fonction MATLAB pour calculer chacune des matrices elementaires donnes plus haut :

– matmass.m pour MK , les parametres d’entree sont : |K|.

– matdiff.m pour DK , les parametres d’entree sont : |K| , X et Y .

– matconv.m pour CK , les parametres d’entree sont : β, X et Y .

• ecrire une fonction MATLAB pour calculer le vecteur elementaire donne plus haut :

– secmem.m pour bK , les parametres d’entree sont : |K| ,β, α, ε,X, Y et la fonction f .

On suppose que ε et α sont constantes, ecrire alors

AK = ε DK + CK +αMK .

• Integrer ces fonctions au programme principal main.m .

4

Page 5: EQUATION DIFFUSION REACTION

C– Assemblage et resolution du systeme algebrique :

L’algorithme d’assemblage est decrit dans la procedure suivante :

pour K = 1 −→ Nelem

Calculer les matrices DK , CK et MK et formerla matrice elementaire AK (= ε DK + CK +αMK)

Calculer le second membre elementaire bK

pour k = 1 −→ 3i←− elem(k,K)si i > 0b(i)←− b(i) + bK(i)

pour l = 1 −→ 3j ←− elem(l,K)si j > 0A(i, j)←− A(i, j) +AK(k, l)

fin de sifin pour l

fin de si

fin pour k

fin pour K

• Ecrire la procedure MATLAB qui permet d’effectuer l’assemblage des tableaux elementairescomme c’est decrit dans l’algorithme precedent.

Integrer directement cette procedure dans le programme principal main.m a l’interieur de laboucle sur les elements.

En sortie de la boucle sur les elements, on recupere alors la matrice globale A et le vecteur global b.

• Ecrire la procedure MATLAB qui permet d’obtenir la solution ξ du systeme algebrique

(0.6) A ξ = b.

– solve.m , les parametres d’entree sont : A et b.

Integrer cette procedure dans le programme principal main.m .

5

Page 6: EQUATION DIFFUSION REACTION

C– Representation graphique et etude de l’erreur :

On suppose maintenant que f(x, y) =(2 ε π2+α

)sin(πx) sin(πy)+β1 π cos(πx) sin(πy)+β2 π sin(πx) cos(πy).

La solution du probleme (P ) etant unique, elle donc egale a

ue(x, y) = sin(πx) sin(πy).

• Ecrire la procedure MATLAB qui permet d’obtenir le vecteur solution Ue aux noeuds de latriangulation.

– solexa.m , les parametres d’entree sont : node.

Integrer cette procedure dans le programme principal main.m .

Les composantes du vecteur ξ obtenu par la resolution du systeme (0.6) doivent etre renumeroteeset completees par les conditions aux limites pour obtenir Uh la solution discrete aux noeuds de latriangulation.

• En utilisant le vecteur Nddl donne par la fonction numddl.m , ecrire la procedure MATLABqui permet d’obtenir la solution discrete Uh.

– soldiscr.m , les parametres d’entree sont : node, ξ et Nddl.

• Ecrire la procedure MATLAB qui permet de calculer l’erreur aux noeuds

Erreur(No) = Ue(No)− Uh(No).

Ainsi que la norme infinie de l’erreur ‖Erreur‖∞.

– erreur.m , les parametres d’entree sont : node, Ue et Uh.

Integrer ces procedures dans le programme principal main.m .

• Utiliser la procedure MATLAB postproc.m pour representer sur une meme figure les solutionsexacte Ue et calculee Uh ainsi que l’erreur Erreur.

Integrer cette procedure dans le programme principal main.m .

6

Page 7: EQUATION DIFFUSION REACTION

C– Etude des cas test (Diffusion, Diffusion–Reaction, Diffusion–Convection–Reaction etDiffusion–Convection) :

Etudier les trois problemes suivants :

I– Probleme de diffusion :

α = 0, ε = 1, 0.1, 0.01, 0.001,β = (0, 0)

et f donnee par (0.2).

II– Probleme de diffusion–reaction :

α = 1, ε = 1, 0.1, 0.01, 0.001,β = (0, 0)

et f donnee par (0.2).

III– Probleme de diffusion–convection–reaction :

α = 1, ε = 1, 0.1, 0.01, 0.001,β = (1, 0)

et f donnee par (0.2).

IV– Probleme de diffusion–convection :

α = 0, ε = 1, 0.1, 0.01, 0.001,β = (1, 0)

et f = 1.Pour chacun de ces problemes test interpreter les resultats et conclure.

7