exemple de rapport de 2005 qui a reçu la note 10/10

Transcription

exemple de rapport de 2005 qui a reçu la note 10/10
Université Pierre et Marie Curie – Paris 6
Informatique scientifique en C++
Projet 1
Soutenance : 9 Mars 2005
Nicolas Lantos
Julie Planchon.
Projet 1 : Résolution de l’équation instationnaire de la chaleur 1D
Problème physique et modélisation
Considérons le problème d’un mur d’épaisseur `, qui se trouve initialement à une température uniforme
θ0 (température de la chambre). À l’instant t = 0, la température extérieure (en x = 0) monte brusquement
à θs > θ0 , valeur maintenue constante par une source de chaleur. On suppose que la température à x = `
est gardée à sa valeur initiale θ0 . La propagation de la chaleur dans le mur (de diffusivité thermique κ) sera
décrite par l’équation de la chaleur :
∂u
∂2u
− κ 2 = 0,
(1)
∂t
∂x
avec l’inconnue u(x,t) = θ(x,t)−θ0 , la condition initiale u0 (x) = 0 et les conditions aux limites de Dirichlet :
u(0,t) = θs − θ0 = us , u(`,t) = 0, ∀t > 0.
(2)
Analyse mathématique
Q1 Cas du domaine infini : Pour un mur d’épaisseur infinie (` → ∞) on va chercher la solution sous la
forme :
x
u(x,t) = f (η), avec η = √ .
(3)
2 κt
1) Montrons que la fonction f vérifie l’EDO suivante :
x
On a : η = √
2 κt
donc
Comme
soit
df
+ 2η dη
= 0.
∂η
1
∂η
x2
x
= √
et
= −
= − √ 3/2
2
∂x
∂t
8κt η
4 κt
2 κt
On a alors
∂u
df ∂η
1 df
=
= √
∂x
dη ∂x
2 κt dη
d2 f
dη 2
donc
df
∂u
df ∂η
x
=
= − √ 3/2
∂t
dη ∂t
4 κt dη
∂2u
∂
1 df
1 ∂ df
1 d2 f
=
( √
) = √
( ) =
2
∂x
∂x 2 κt dη
4κt dη 2
2 κt ∂x dη
∂2u
∂u
− κ 2 = 0 , on a alors
∂t
∂x
d2 f
4xt df
+ √ 3/2
= 0
2
dη
4 κt dη
On obtient donc:
x
1 d2 f
df
− √ 3/2
−κ
= 0
4κt dη 2
4 κt dη
c’est-à-dire
d2 f
x df
+√
= 0
2
dη
κt dη
df
d2 f
+ 2η
= 0.
2
dη
dη
2) En introduisant la fonction suivante, appelée fonction erreur
Z z
2
2
erf(z) = √
e−ζ dζ,
π 0
(4)
qui vérifie erf(0) = 0 et erf(∞) = 1, trouver la solution de l’équation de la chaleur pour ` → ∞ :
x
u(x,t) = [1 − erf( √ )]u(0,t).
2 κt
(5)
D’après 1),
d2 f
df
df
2
+ 2η
= 0 donc
= Ae−η
2
dη
dη
dη
Z η
2
f (η) = B + A
e−s ds où A et B sont des constantes .
et donc
0
Or f (0) = B et u(l,t) = 0 pour tout t > 0, donc avec l → ∞ on obtient:
u(∞,t) = [1 − erf(∞)]u(0,t) = 0.
et on a donc f (∞) = 0.
De plus erf (∞) = 1, soit
R∞
Ainsi, f (∞) = f (0) + A
Finalement,
R0 ∞
0
√
2
π
2 .
e−s ds =
−s2
e
√
ds = f (0) + A
2
f (η) = f (0) − √ f (0)
π
Z
0
η
π
2
=0 ,
2
2
e−s ds = [1 − √
π
d’où A = − √2π f (0).
Z
η
2
e−s ds] f (0).
0
C’est-à-dire u(x,t) = [1 − erf (η)] u(0,t).
Q2 Cas du domaine fini : Pour un mur d’épaisseur finie `, on va utiliser la décomposition en ondes simples
X
u(x,t) =
ûk (t)φk (x),
φk (x) = sin(
k∈N∗
kπ
x).
`
1) Écrire et résoudre l’EDO vérifiée par chaque fonction ûk :
On a
X dûk
∂u
(x,t) =
(t)φk (x)
∂t
dt
∗
k∈N
Comme
φk (x) = sin(
Ainsi,
kπ
x) on a
`
d2 φk
kπ
(x) = −( )2 φk (x).
2
dx
l
X
X
d2 φk
kπ
∂2u
(x,t)
=
û
(t)
(x)
=
−( )2 ûk (t)φk (x)
k
2
2
∂x
dx
l
∗
∗
k∈N
k∈N
Or
∂u
∂2u
−κ 2 =0
∂t
∂x
Donc l’EDO vérifiée pour chaque ûk est :
kπ
dûk
(t)φk (x) + κ( )2 ûk (t)φk (x) = 0.
dt
l
(6)
Résolution de cette EDO:
dûk
dt (t)φk (x)
2
+ κ( kπ
l ) ûk (t)φk (x) = 0
donc
2
ûk (t) = Ak exp(−κ( kπ
l ) )t) , où κ = 1 ici.
2)Vérifier que la solution de l’équation de la chaleur avec les conditions aux limites (2) s’écrit sous la forme :
X
x
kπ 2
u(x,t) = (1 − )us +
Ak exp −
t φk (x).
(7)
`
`
∗
k∈N
On a,
Et,
∂u
∂x (x,t)
= − uls
X
∂u
kπ 2
kπ 2
(x,t) =
−Ak ( ) exp −
t φk (x).
∂t
l
`
k∈N∗
2
P
k
+ k∈N∗ Ak exp − kπ
t dφ
`
dx (x).
Donc
2
X
X
∂2u
kπ 2 d φk
kπ 2
kπ 2
(x,t) =
Ak exp −
t
(x) = −
Ak ( ) exp −
t φk (x).
2
2
∂x
`
dx
l
`
∗
∗
k∈N
k∈N
Ici κ = 1, on a:
X
∂u
∂2u X
kπ 2
kπ 2
kπ 2
kπ 2
= − 2
−Ak ( ) exp −
t φk (x) +
Ak ( ) exp −
t φk (x) = 0.
∂t
∂x
l
`
l
`
∗
∗
k∈N
k∈N
Vérifions que cette équation vérifie bien les conditions aux limites (2):
Comme φk (0) = φk (l) = 0 ,
2
P
kπ
on a u(0,t) = us +
t φk (0) = us
k∈N∗ Ak exp − `
2
P
kπ
et u(l,t) =
t φk (l) = 0
k∈N∗ Ak exp − `
3) Montrons que Ak = −
2us
.
kπ
u(x,t) = (1 −
X
x
kπ 2
)us +
Ak exp −
t φk (x).
`
`
∗
k∈N
Et,
0 = u(x,0) = (1 −
X
kπ
x
)us +
Ak sin( x)
`
l
∗
k∈N
Donc
−(1 −
X
x
kπ
)us =
Ak sin( x)
`
l
∗
k∈N
C’est une série de Fourier de coefficient Ak qui est défini par :
Ak =
=
=
=
Z l
x
kπ
1
( − 1)us sin( x) dx
l/2 0 l
l
Z
h
x
l
kπ il
2 l us
kπ
l
2
− ( − 1)us
cos( x) +
cos( x)
dx
l
l
kπ
l
l 0 l
l
kπ
0
2us h
2us h
x
kπ il
kπ il
(1 − ) cos( x) +
sin(
x)
kπ
l
l
(kπ)2
l
0
0
2us
−
kπ
(8)
Résolution numérique
Considérons la discrétisation du problème
en espace
M
−1
[
[0,`] =
[xm ,xm + h], xm = mδx, m = 0,1, . . . ,M, δx = `/M,
(9)
m=0
et en temps
[0,tmax ] =
N[
−1
[tn ,tn + δt], tn = nδt, δt = tmax /N.
(10)
n=0
On note unm = u(xm ,tn ).
Q3 Considérons le schéma explicite centré suivant :
n
unm+1 − 2unm + um
un+1
j−1
m − um
−κ
= 0.
2
δt
δx
(11)
La condition de stabilité du schéma est :
κ
δt
1
≤
2
δx
2
(12)
Écrire un programme pour la résolution du problème de la propagation de la chaleur dans un mur d’épaisseur finie.
On prendra κ = 1, ` = 1, us = 1, M = 50 points de discrétisation en espace et le pas de temps δt donné par (12).
1) Tracer la solution numérique pour différents instants de temps et comparer avec la solution exacte (8)
(une bonne approximation de cette dernière est obtenue en prenant les 20 premiers nombres d’onde k).
1
’q3stable.dat’ u 1:3
’q3stable.dat’ u 1:4
0.8
0.6
0.4
0.2
0
-0.2
0
0.2
0.4
0.6
0.8
F IG . 1 –: Résolution de la propagation de la chaleur dans un mur d’épaisseur finie.
(En vert,la solution exacte (8); en rouge, la solution approchée en fonction de x.)
2) Comparer également avec la solution (6) obtenue pour un domaine infini.
Commenter les résultats pour t petit et pour t grand.
1
1
"q3.dat" u 1:3
"q3.dat" u 1:5
0.8
0.6
0.4
0.2
0
0
0.2
0.4
0.6
0.8
1
F IG . 2 –: Résolution de la propagation de la chaleur dans un mur d’épaisseur finie.
En vert,la solution(6) obtenue pour un domaine infini; en rouge, la solution approchée en fonction de x.
L’erreur finale entre la solution numérique et la solution exacte sur le domaine infinie est de 2.52.
Nous avons ensuite afficher les erreurs:
0.18
’q3stableerr.dat’ u 1:2
’q3stableerr.dat’ u 1:3
0.4
0.16
’essaierr.dat’ u 2:6
0.14
0.3
0.12
0.1
0.2
0.08
0.1
0.06
0.04
0
0.02
0
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
-0.1
-0.2
F IG . 3 –: Erreurs entre le schéma et les solutions
-0.3
0
200
400
600
800
exactes en fonction du temps (en norme 2).
(En vert, l’erreur avec la solution (6) obtenue pour un domaine fini; en rouge,
l’erreur
avec
celle
du
domaine
infini.F IG . 4 –: Différence des erreurs. (err(finie)err(infinie))( en fonction du nombre d’itérations.)
Dans les deux cas, après 400 itérations
Pour la figure 3 on a seulement pris une petite période de temps, pour pouvoir observer l’évolution de
l’erreur pour le domaine finie qui tend très rapidement vers 0. Pour le domaine infini, cette erreur décroı̂t pour
des temps petits, et augmente ensuite fortement.
Comme le montre la figure 4, les erreurs pour des temps petits sont quasiment similaires justqu’à environ
1000
la 300ième itération, avant d’augmenter.
Q4 Reprendre le programme précédent pour us = 0 et la condition initiale
π
1
π
u0 (x) = u(x,0) = sin( x) + sin(10 x).
`
4
`
(13)
Comparer la solution numérique avec la solution analytique donnée par (7).
Décrire l’amortissement des ondes présentes dans la condition initiale.
2
’q4stablebis.dat’ u 1:3
’q4stablebis.dat’ u 1:4
1.5
1
0.5
0
-0.5
-1
0
0.2
0.4
0.6
0.8
1
F IG . 5 –: Résolution de la propagation de la chaleur dans un mur d’épaisseur finie.
graphe de la solution exacte identiquement nulle (en vert) et de la solution approchée (en rouge) avec la
condition initiale en sin et us=0 en fonction de x
8
’q4stableerr.dat’u 1:2
7
6
5
4
3
2
1
0
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
F IG . 6 –: Calcul de l’erreur en norme 2 entre la solution exacte et la solution approchée
On remarque que la solution approchée converge vers la solution exacte.
2
’q4stableerr.dat’u 3:4
1.8
1.6
1.4
1.2
1
0.8
0
20
40
60
80
100
F IG . 7 –: Amortissement d’une onde en fonction des itérations.
On a recherché l’indice de la solution du maximum et on a affiché en fonction des itérations, la valeur
du schéma numérique pour cet indice. On observe ainsi l’amortissement. qui s’estompe rapidement, en 100
itérations.
Q5 Ecrire le schéma implicite correspondant à (11) et répondre aux questions Q3 et Q4 en utilisant ce schéma.
Quel est l’avantage du schéma implicite?
On considère le shéma implicite suivant:
Donc unm
n+1
n
un+1 − 2un+1
un+1
m + um−1
m − um
− κ m+1
= 0.
δt
δx2
n+1
n+1
δt
n+1
= un+1
m − κ δx2 um+1 − 2um + um−1 .
Soit unm = −κ
δt
δt n+1
δt n+1
um+1 + (1 + 2κ) 2 un+1
u
.
m −κ
2
δx
δx
δx2 m−1
On met les conditions aux limites dans la matrice.

1
 −κ δt2
δx




0
0
0
δt
1 + 2κ δx
2
···
···
0
δt
−κ δx
2
···
···
···
···
···
···
δt
−κ δx
2
0
On résout ce système linéaire par la méthode LU.
···
···
δt
1 + 2κ δx
2
0

0

0 




0 
1
un+1
0
un+1
1
..
.
un+1
M −1
un+1
M


un0
un1
..
.






 = 

 n

 u
M −1
unM







1
"q53.dat" u 1:3
"q53.dat" u 1:4
0.8
0.6
0.4
0.2
0
-0.2
0
0.2
0.4
0.6
0.8
1
F IG . 8 –: Résolution de la propagation de la chaleur dans un mur d’épaisseur finie avec un schéma implicite.
( Cas de la question 3) (en rouge, solution approchée. En vert la solution exacte.
0.35
’q5err.dat’u 1:2
’q5err.dat’u 1:3
0.3
0.25
0.2
0.15
0.1
0.05
0
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
F IG . 9 –: graphe pour LU (de la question 3 ) des erreurs en norme 2 entre la solution numérique et les 2
solutions exactes (en fonction du temps)
2
’q54.dat’u 1:3
’q54.dat’u 1:4
1.5
1
0.5
0
-0.5
-1
0
0.2
0.4
0.6
0.8
1
F IG . 10 –: Résolution de la propagation de la chaleur dans un mur d’épaisseur finie avec le schéma implicite
en fonction de x.
Cas de la question 4
7
’q5err.dat’u 1:2
6
5
4
3
2
1
0
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
F IG . 11 –: graphe pour LU (de la question 4 ) des erreurs en norme 2 entre la solution numérique et la solution
exacte en fonction du temps.
Résolution des questions 3 et 4 avec la condition de stabilité non vérifiée ( c’est-à-dire avec cfl=1.1).
4e+302
’q3instable.dat’u 1:3
’q3instable.dat’u 1:4
3e+302
2e+302
1e+302
0
-1e+302
-2e+302
-3e+302
-4e+302
0
0.2
0.4
0.6
0.8
1
F IG . 12 –: Cas de la question 3 ( cfl=1.1) en fonction de x
1.5e+304
’q4instable.dat’u 1:3
’q4instable.dat’u 1:4
1e+304
5e+303
0
-5e+303
-1e+304
-1.5e+304
0
0.2
0.4
0.6
0.8
1
F IG . 13 –: Cas de la question 4 (avec cfl=1.1)
Dans les deux cas, question 3 ou 4, pour le schéma implicite appliquée avec un indice cfl de 1.1 (juste
au-dessus de la condition de stabilité) on observe une explosion des résultats.
1
"q53.dat" u 1:3
"q53.dat" u 1:4
0.8
0.6
0.4
0.2
0
-0.2
0
0.2
0.4
0.6
0.8
1
F IG . 14 –: A titre de comparaison, voici la solution pour 1 schéma implicite pour cfl=1.1 pour question3 en
fonction de x. Solution approchée en rouge, solution exacte en vert)
Avantage du schéma implicite: Le schema implicite, comme nous l’observons pour ce cas, n’a besoin
d’aucune condition de stabilite pour converger, contrairement au schema explicite. Ce resultat est “logique”,
dans le sens où cette méthode est plus difficile à implémenter: en effet pour la méthode directe le résultat est
immédiat.Pour le cas implicite, il faut en effet résoudre à chaque itération un système.
Cela permet donc d’augmenter le pas de discrétisation pour ainsi réduire le nombre d’itération et par là-même
le temps de calcul.
Le temps de calcul est obtenu à l’aide de la commande: “time./monprogrammecompilé”.
Par exemple, on va comparer les méthodes implicite et explicite:
Pour la méthode explicite de la question 3, avec le coefficient cfl=1 (condition de stabilité maximale), on obtient l’arret par la condition d’erreur entre deux itérations de i (¡1e-10):
nombre d’itération = 10028; temps réel correspondant = 2, 0056 s ; temps CPU = 2.09 s.
Pour la méthode implicite de la question 5, avec le coefficient cfl=100, et pour la même condition
nombre d’itération = 135; temps réel correspondant = 2, 7 s ; temps CPU = 0.26 s
On observe que pour un temps physique proche, le nombre d’itération est 100 fois moindre, et le temps de
calcul est 10 fois moins important, ce qui prouve sur un exemple l’intéret de la méthode implicite par rapport
à l’explicite.