Vous êtes sur la page 1sur 17

École Polytechnique de Montréal

Département de génie mécanique

Sigle du cours : MEC 3230


Nom du cours : Éléments finis
Laboratoire 0 : Méthode de Ritz
Professeur : André Garon

1 Rappel – calcul symbolique MATLAB


Nous allons utiliser le calcul symbolique de MATLAB pour calculer la solution approchée des
formulations faibles de l’approximation de RITZ du transfert de chaleur.

Table 1 – Méthodes du calcul symbolique de MATLAB


Expression MATLAB Note

f(a) subs(f,x,a) Évaluer une fonction


∂f
∂x
diff(f,x) La dérivée d’une fonction
RB
A
f (x)dx int(f,x,A,B) Intégration d’une fonction

B=double(A) Conversion d’un symbole n A


en nombre réel B
spy(MAT) Affichage des coefficients réels
non nuls de la matrice MAT

Les fichiers exo1.m, exo2.m et exo3.m utilisent le calcul symbolique pour résoudre les exer-
cices de ce document.

1
2 Exemple 1 – Conditions de Dirichlet
1. Problème fort :
 
d dT
− k = f, Ω =]A, B[
dx dx
T (A) = TA , T (B) = TB
2. Problème faible :
On multiplie par une fonction test et on intègre par partie :

Z B     Z B
dϕ dT dT dT
k dx = ϕ(B) k + ϕ(A) −k + ϕf dx
A dx dx dx B dx A A

3. Espace Solution :
On cherche T = T0 + Tg telle que T0 ∈ H01 (Ω), car nous avons des conditions de Dirichlet
sur tout le bord du domaine de calcul.
Selon l’approche de Galerkin, on choisit ϕ ∈ H01 (Ω).
4. Imposer les conditions de Neumann ou de Robin :
Les conditions de Neumann ou de Robin ne peuvent être utilisées.

On cherche T = T0 + Tg telle que T0 ∈ H01 (Ω), satisfaisant la formulation faible suivante :

Z B Z B
dϕ dT
k dx = ϕf dx
A dx dx A

∀ϕ ∈ H01 (Ω)
5. Formulation faible continue – Imposer les conditions de Dirichlet :
On cherche T = T0 + Tg telle que T0 ∈ H01 (Ω), satisfaisant la formulation faible suivante :

Z B Z B Z B
dϕ dT0 dϕ dTg
k dx = ϕf dx − k dx
A dx dx A A dx dx

∀ϕ ∈ H01 (Ω)
6. Approximation - polynomiale :

— T ≈ T N = T0N + Tg .
— T0N = N
P
j=1 Ψj (x)aj .
— ϕ = Ψi (x) de i = 1..N
— Ψi (x) = (x − A)i ∗ (x − B) de i = 1..N
7. Formulation faible discrète :
On cherche T N = T0N + Tg telle que T0N ∈ V N ⊆ H01 (Ω), satisfaisant la formulation faible
suivante
N Z B  Z B Z B
X dΨi dΨj dΨi dTg
k dx aj = Ψi f dx − k dx
j=1 A dx dx A A dx dx

2
pour Ψi de i = 1..N
8. Coefficients de la matrice du système d’équations :
Z B 
dΨi dΨj
Aij = k dx
A dx dx

9. Coefficients du membre de droite du système d’équations :


Z B Z B
dΨi dTg
Bi = Ψi f dx − k dx
A A dx dx

3
• Exercice 1. Soit le problème de transfert de chaleur :
 
d dT
− k = f, Ω =]0, 1[
dx dx
T (0) = 0, T (1) = 0
k=1
f =x

1. Calculer la solution exacte.


2. Écrire la formulation faible – continue.
3. Écrire une approximation.
4. Écrire la formulation faible – discrète.
5. Identifier l’expression des coefficients de la matrice.
6. Identifier l’expression des coefficients du membre de droite.
7. Écrire un script matlab pour calculer la solution approchée. Afficher les solutions ap-
prochées et la solution exacte sur un même graphique.

Réponse. Réponse de l’exercice 1 :

1. Calculer la solution exacte.


T = −x ∗ (x2 − 1)/6
2. Écrire la formulation faible – continue.
On cherche T = T0 + Tg telle que T0 ∈ H01 (]0, 1[), satisfaisant la formulation faible suivante :

Z 1 Z 1 Z 1
dϕ dT0 dϕ dTg
k dx = ϕf dx − k dx
0 dx dx 0 0 dx dx

∀ϕ ∈ H01 (]0, 1[)


3. Écrire une approximation.
— Tg = 0
— Ψi (x) = (x)i ∗ (x − 1) de i = 1..N
4. Écrire la formulation faible – discrète.
On cherche T N = T0N + Tg telle que T0N ∈ V N ⊆ H01 (Ω), satisfaisant la formulation faible
suivante
N Z 1  Z 1 Z 1
X dΨi dΨj dΨi dTg
k dx aj = Ψi f dx − k dx
j=1 0 dx dx 0 0 dx dx

pour Ψi de i = 1..N
5. Identifier l’expression des coefficients de la matrice.
Z 1
dΨi dΨj
Aij = k dx
0 dx dx

4
6. Identifier l’expression des coefficients du membre de droite.
Z 1 Z 1
dΨi dTg
Bi = Ψi f dx − k dx
0 0 dx dx

7. Écrire un script matlab pour calculer la solution approchée. Afficher les solutions ap-
prochées et la solution exacte sur un même graphique.
(Voir fichier exo1.m)
clear all
close all
syms x real
syms Texact ( x ) % solution exacte
syms Tg ( x ) % relevement
syms f ( x ) % terme source
f(x)=x;
a =0; % limite gauche
b =1; % limite droite
L =1; % coefficient de conduction
Tg ( x ) =0; % relevement
Texact ( x ) = - x * ( x *x -1) /6; % solution exacte
for N =1:3 , % boucle sur les approximations
% construction des approximations
for i =1: N ,
PSI ( i ) =( x - a ) ^ i * (x - b ) ;
end
dPSIdx = diff ( PSI , x ) ;
% construction de la matrice et du memnre de droite
for i =1: N ,
for j =1: N ,
g = dPSIdx ( i ) * L * dPSIdx ( j ) ;
A (i , j ) = int (g ,x ,a , b ) ;
end
h = PSI ( i ) * f ;
B (i ,1) = int (h ,x ,a , b ) ;
end
X = A \ B ; % calcul des coefficients
T0 = PSI * X ;
T = T0 + Tg ;
fplot (T ,[ a b ]) ; % affichage d e la solution approche
hold on
% pause , vous devez toucher une touche pour pousuivre
end
handle = fplot ( Texact ,[ a b ]) ; % affichage de la solution exacte
en rouge
set ( handle , ' linestyle ' , ' -- ' , ' color ' , ' red ' , ' LineWidth ' ,2)
xlabel ( ' x ' )
ylabel ( ' T ' )

5
legend ( ' N =1 ' , ' N =2 ' , ' N =3 ' , ' TEXACT ' , ' location ' , ' bestoutside ' )
title ( ' exo1 . m ' )
% figure
% spy ( double ( A ) )

6
3 Exemple 2 – Conditions de Dirichlet et de Neumann
1. Problème fort :

 
d dT
− k = f, Ω =]A, B[
dx dx
dT
T (A) = TA , k (B) = FB
dx
2. Problème faible :
On multiplie par une fonction test et on intègre par partie :

Z B     Z B
dϕ dT dT dT
k dx = ϕ(B) k + ϕ(A) −k + ϕf dx
A dx dx dx B dx A A

3. Espace Solution :
On cherche T = T0 + Tg telle que T0 ∈ HΓ10 (Ω) (Γ0 = {A}), car nous avons des conditions
de Dirichlet sur une partie du bord du domaine de calcul.
Selon l’approche de Galerkin, on choisit ϕ ∈ HΓ10 ((Ω).
4. Imposer les conditions de Neumann ou de Robin :
On remplace la variable secondaire k∇T · ~n par l’expression du flux.

On cherche T = T0 + Tg telle que T0 ∈ HΓ10 (Ω), satisfaisant la formulation faible sui-


vante :

Z B Z B
dϕ dT
k dx = ϕ(B)FB + ϕf dx
A dx dx A

∀ϕ ∈ HΓ10 (Ω)
5. Formulation faible continue – Imposer les conditions de Dirichlet :
On cherche T = T0 + Tg telle que T0 ∈ HΓ10 (Ω), satisfaisant la formulation faible suivante :

Z B Z B Z B
dϕ dT0 dϕ dTg
k dx = ϕ(B)FB + ϕf dx − k dx
A dx dx A A dx dx

∀ϕ ∈ HΓ10 (Ω)
6. Approximation - polynomiale :

— T ≈ T N = T0N + Tg .
T0N = N
P
— j=1 Ψj (x)aj .
— ϕ = Ψi (x) de i = 1..N
— Ψi (x) = (x − A)i de i = 1..N

7
7. Formulation faible discrète :
On cherche T N = T0N + Tg telle que T0N ∈ V N ⊆ HΓ10 (Ω), satisfaisant la formulation faible
suivante
N Z B  Z B Z B
X dΨi dΨj dΨi dTg
k dx aj = Ψi (B)FB + Ψi f dx − k dx
j=1 A dx dx A A dx dx

pour Ψi de i = 1..N
8. Coefficients de la matrice du système d’équations :
Z B 
dΨi dΨj
Aij = k dx
A dx dx

9. Coefficients du membre de droite du système d’équations :


Z B Z B
dΨi dTg
Bi = Ψi (B)FB + Ψi f dx − k dx
A A dx dx

8
• Exercice 2. Soit le problème de transfert de chaleur :
 
d dT
− k = f, Ω =]0, 1[
dx dx
dT
T (0) = 1, k (1) = 1/2
dx
k=1
f =x

1. Calculer la solution exacte.


2. Écrire la formulation faible – continue.
3. Écrire une approximation.
4. Écrire la formulation faible – discrète.
5. Identifier l’expression des coefficients de la matrice.
6. Identifier l’expression des coefficients du membre de droite.
7. Écrire un script matlab pour calculer la solution approchée. Afficher les solutions ap-
prochées et la solution exacte sur un même graphique.
Réponse. Réponse de l’exercice 2 :

1. Calculer la solution exacte.


T = −x3 /6 + x + 1
2. Écrire la formulation faible – continue.
On cherche T = T0 +Tg telle que T0 ∈ HΓ10 (]0, 1[), satisfaisant la formulation faible suivante :

Z 1 Z 1 Z 1
dϕ dT0 1 dϕ dTg
k dx = ϕ(1) + ϕf dx − k dx
0 dx dx 2 0 0 dx dx

∀ϕ ∈ HΓ10 (]0, 1[)


3. Écrire une approximation.
— Tg = 1
— Ψi (x) = (x)i de i = 1..N
4. Écrire la formulation faible – discrète.
On cherche T N = T0N + Tg telle que T0N ∈ V N ⊆ H01 (Ω), satisfaisant la formulation faible
suivante
N Z 1  Z 1 Z 1
X dΨi dΨj 1 dΨi dTg
k dx aj = Ψi (1) + Ψi f dx − k dx
j=1 0 dx dx 2 0 0 dx dx

pour Ψi de i = 1..N
5. Identifier l’expression des coefficients de la matrice.
Z 1
dΨi dΨj
Aij = k dx
0 dx dx

9
6. Identifier l’expression des coefficients du membre de droite.
Z 1 Z 1
1 dΨi dTg
Bi = Ψi (1) + Ψi f dx − k dx
2 0 0 dx dx

7. Écrire un script matlab pour calculer la solution approchée. Afficher les solutions ap-
prochées et la solution exacte sur un même graphique.
(Voir fichier exo2.m)
clear all
close all
syms x real
syms Texact ( x ) % solution exacte
syms Tg ( x ) % relevement
syms f ( x ) % terme source
f=x;
a =0; % limite gauche
b =1; % limite droite
L =1; % coefficient de conduction
Tg =1; % relevement
FB =0.5; % flux en B
Texact ( x ) = - x ^3/6+ x +1; % solution exacte
for N =1:3 , % boucle sur les approximations
% construction des approximations
for i =1: N ,
PSI ( i ) =( x - a ) ^ i ;
end
dPSIdx = diff ( PSI , x ) ;
% construction de la matrice et du memnre de droite
for i =1: N ,
for j =1: N ,
g = dPSIdx ( i ) * L * dPSIdx ( j ) ;
A (i , j ) = int (g ,x ,a , b ) ;
end
h = PSI ( i ) * f ;
B (i ,1) = subs ( PSI ( i ) ,x , b ) * FB + int (h ,x ,a , b ) ;
end
X = A \ B ; % calcul des coefficients
T0 = PSI * X ;
T = T0 + Tg ;
fplot (T ,[ a b ]) ; % affichage de la solution approche
hold on
% pause , vous devez toucher une touche pour pousuivre
end
handle = fplot ( Texact ,[ a b ]) ; % affichage de la solution exacte en
rouge
set ( handle , ' linestyle ' , ' -- ' , ' color ' , ' red ' , ' LineWidth ' ,2)
xlabel ( ' x ' )

10
ylabel ( ' T ' )
legend ( ' N =1 ' , ' N =2 ' , ' N =3 ' , ' TEXACT ' , ' location ' , ' bestoutside ' )
title ( ' exo2 . m ' )
% figure
% spy ( double ( A ) )

11
4 Exemple 3 – Conditions de Robin et de Dirichlet
1. Problème fort :

 
d dT
− k = f, Ω =]A, B[
dx dx
dT
−k (A) = hA (TA∞ − T (A)), T (B) = TB
dx
2. Problème faible :
On multiplie par une fonction test et on intègre par partie :

Z B     Z B
dϕ dT dT dT
k dx = ϕ(B) k + ϕ(A) −k + ϕf dx
A dx dx dx B dx A A

3. Espace Solution :
On cherche T = T0 + Tg telle que T0 ∈ HΓ10 (Ω) (Γ0 = {B}), car nous avons des conditions
de Dirichlet sur une partie du bord du domaine de calcul.
Selon l’approche de Galerkin, on choisit ϕ ∈ HΓ10 ((Ω).
4. Imposer les conditions de Neumann ou de Robin :
On remplace la variable secondaire k∇T · ~n par l’expression du flux.

On cherche T = T0 + Tg telle que T0 ∈ HΓ10 (Ω), satisfaisant la formulation faible sui-


vante :

Z B Z B
dϕ dT
k dx = ϕ(A)(hA (TA∞ − T (A))) + ϕf dx
A dx dx A

∀ϕ ∈ HΓ10 (Ω)
5. Formulation faible continue – Imposer les conditions de Dirichlet :
On cherche T = T0 + Tg telle que T0 ∈ HΓ10 (Ω), satisfaisant la formulation faible suivante :

Z B Z B Z B
dϕ dT0 dϕ dTg
k dx + ϕ(A)hA T0 (A) = ϕ(A)hA (TA∞ − Tg (A)) + ϕf dx − k dx
A dx dx A A dx dx

∀ϕ ∈ HΓ10 (Ω)
6. Approximation - polynomiale :

— T ≈ T N = T0N + Tg .
T0N = N
P
— j=1 Ψj (x)aj .
— ϕ = Ψi (x) de i = 1..N
— Ψi (x) = (x − B)i de i = 1..N

12
7. Formulation faible discrète :
On cherche T N = T0N + Tg telle que T0N ∈ V N ⊆ H01 (Ω), satisfaisant la formulation faible
suivante
N Z B 
X dΨi dΨj
k dx + Ψi (A)hA Ψj (A) aj = Ψi (A)hA (TA∞ − Tg (A)) +
j=1 A dx dx
Z B Z B
dΨi dTg
Ψi f dx − k dx
A A dx dx

pour Ψi de i = 1..N
8. Coefficients de la matrice du système d’équations :
Z B 
dΨi dΨj
Aij = k dx + Ψi (A)hA Ψj (A)
A dx dx

9. Coefficients du membre de droite du système d’équations :


Z B Z B
∞ dΨi dTg
Bi = Ψi (A)hA (TA − Tg (A)) + Ψi f dx − k dx
A A dx dx

13
• Exercice 3. Soit le problème de transfert de chaleur :
 
d dT
− k = f, Ω =]0, 1[
dx dx
dT
−k (0) = hA (T0∞ − T (0)), T (1) = 5
dx
k=1
f =x

T0 = 1
hA = 1

1. Calculer la solution exacte.


2. Écrire la formulation faible – continue.
3. Écrire une approximation.
4. Écrire la formulation faible – discrète.
5. Identifier l’expression des coefficients de la matrice.
6. Identifier l’expression des coefficients du membre de droite.
7. Écrire un script matlab pour calculer la solution approchée. Afficher les solutions ap-
prochées et la solution exacte sur un même graphique.

Réponse. Réponse de l’exercice 3 :

1. Calculer la solution exacte.


T = −x3 /6 + 25/12x + 37/12
2. Écrire la formulation faible – continue.
On cherche T = T0 +Tg telle que T0 ∈ HΓ10 (]0, 1[), satisfaisant la formulation faible suivante :

Z 1 Z 1 Z 1
dϕ dT0 dϕ dTg
k dx + ϕ(0)hA T0 = ϕ(0)hA (TA∞ − Tg (0)) + ϕf dx − k dx
0 dx dx 0 0 dx dx

∀ϕ ∈ HΓ10 (]0, 1[)


3. Écrire une approximation.
— Tg = 5
— Ψi (x) = (x − 1)i de i = 1..N
4. Écrire la formulation faible – discrète.
On cherche T N = T0N + Tg telle que T0N ∈ V N ⊆ H01 (Ω), satisfaisant la formulation faible
suivante
N Z 1  Z 1 Z 1
X dΨi dΨj ∞ dΨi dTg
k dx + Ψi (0)hA Ψj (0) aj = Ψi (0)hA (TA − Tg (0)) + Ψi f dx − k dx
j=1 0 dx dx 0 0 dx dx

pour Ψi de i = 1..N

14
5. Identifier l’expression des coefficients de la matrice.
Z 1
dΨi dΨj
Aij = k dx + Ψi (0)hA Ψj (0)
0 dx dx

6. Identifier l’expression des coefficients du membre de droite.


Z 1 Z 1
∞ dΨi dTg
Bi = Ψi (0)hA (TA − Tg (0)) + Ψi f dx − k dx
0 0 dx dx

7. Écrire un script matlab pour calculer la solution approchée. Afficher les solutions ap-
prochées et la solution exacte sur un même graphique.
(Voir fichier exo3.m)
clear all
close all
syms x real
syms Texact ( x ) % solution exacte
syms Tg ( x ) % relevement
syms f ( x ) % terme source
f=x;
a =0; % limite gauche
b =1; % limite droite
L =1; % coefficient de conduction
Tg =5; % relevement
HA =1; % coefficient de convection en A
TAinf = 1; % temperature l ' infini en A
Texact ( x ) = - x ^3/6+25/12* x +37/12; % solution exacte
for N =1:3 , % boucle sur les approximations
% construction des approximations
for i =1: N ,
PSI ( i ) =( x - b ) ^ i ;
end
dPSIdx = diff ( PSI , x ) ;
% construction de la matrice et du memnre de droite
for i =1: N ,
for j =1: N ,
g = dPSIdx ( i ) * L * dPSIdx ( j ) ;
A (i , j ) = int (g ,x ,a , b ) + subs ( PSI ( i ) * HA * PSI ( j ) ,x , a ) ;
end
h = PSI ( i ) * f ;
B (i ,1) = subs ( PSI ( i ) * HA *( TAinf - Tg ) ,x , a ) + int (h ,x ,a , b ) ;
end
X = A \ B ; % calcul des coefficients
T0 = PSI * X ;
T = T0 + Tg ;
fplot (T ,[ a b ]) ; % affichage de la solution approche
hold on

15
% pause , vous devez toucher une touche pour pousuivre
end
handle = fplot ( Texact ,[ a b ]) ; % affichage de la solution exacte en
rouge
set ( handle , ' linestyle ' , ' -- ' , ' color ' , ' red ' , ' LineWidth ' ,2)
ylabel ( ' T ' )
xlabel ( ' x ' )
legend ( ' N =1 ' , ' N =2 ' , ' N =3 ' , ' TEXACT ' , ' location ' , ' bestoutside ' )
title ( ' exo3 . m ' )

16
Méthodologie
1. Problème fort :

2. Problème faible :

3. Espace Solution :

4. Imposer les conditions de Neumann ou de Robin :

5. Formulation faible continue – Imposer les conditions de Dirichlet :

6. Approximation - polynomiale :

7. Formulation faible discrète :

8. Coefficients de la matrice du système d’équations :

9. Coefficients du membre de droite du système d’équations :

17

Vous aimerez peut-être aussi