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.