TP 2 du cours “Transport de particules : modèles, simulation, et applications “ (3eme année école ENSEIRB-MATMECA et master MIMSE) Luc Mieussens Équipe Calcul Scientifique et Modélisation Institut de Mathématiques de Bordeaux, Université de Bordeaux, 351, cours de la Libération, 33405 Talence cedex, France ([email protected]) 1 Équation du transport linéaire On considère ici l’équation du transport linéaire stationnaire en géométrie 1D, dans un milieu qui n’intéragit avec les particules que par diffraction. Le modèle (adimensionné) est le suivant : σ (ρ − f ) + εG, x ∈ [a, b], µ ∈ [−1, 1], ε f (x = a, µ > 0) = fG , f (x = b, µ < 0) = fD , µ∂x f (x, µ) = où ρ(x) = 1 2 R1 1 (1) f (x, µ) dµ. Le but de ce TP est d’étudier la solution de cette équation et les solutions numériques obtenues par une méthode volume finis, en particulier dans le régime de diffusion (ε petit), et en présence de couche limite. 2 Schéma numérique 1. Télécharger le programme transport_lineaire.f90 sur cette page : http://www.math.u-bordeaux1.fr/~lmieusse/PAGE_WEB/enseignement.html C’est dans ce programme qu’il vous faudra écrire les algorithmes permettant de résoudre le problème (1). 2. Éditer le fichier transport_lineaire.f90 et étudier le programme principal. 3. Le schéma numérique à utiliser est le suivant : µ+ k fi,k − fi−1,k fi+1,k − fi,k σ + µ− = (ρi − fi,k ) + εG, k ∆x ∆x ε pour i = 1 à imax et k = 1 à kmax = 16.PLa moyenne ρi est calculée par la formule de quadrature de Gauss à 16 points ρi = 12 16 k=1 fi,k ωk , et les points de la grille en µ sont donc les 16 points de Gauss de la formule. Pour i = 1 et i = imax , le schéma fait intervenir 1 les valeurs de f dans les mailles fictives f0,k et fimax+1,k qui sont définies au moyen des conditions aux limites : f0,k = fg (µk ) et fimax+1,k = fd (µk ). Ce schéma se présente donc comme un système linéaire qu’il faut résoudre. 4. On résoud ce système par la méthode de point fixe suivante : f n+1 + i,k µk n+1 n+1 f n+1 − fi,k − fi−1,k σ − i+1,k n+1 + µk = (ρni − fi,k ) + εG, ∆x ∆x ε n+1 n+1 n+1 avec f0,k = fg (µk ) et fimax+1,k = fd (µk ). Écrire l’algorithme qui permet de calculer fi,k pour tout i et tout k (aide : pour µk > 0 fixé, on a un système triangulaire inférieur, et pour µk < 0 fixé, on a un système triangulaire supérieur). 5. Programmer ce schéma dans le code, compiler, tester, jusqu’à ce que le code donne un résultat (stocké dans le fichier rho.dat) qui ait l’air raisonnable. 3 Donnée au bord isotrope Le code contient les données aux bords suivantes, fG (µ) = 1 fD (µ) = 0. avec une opacité constante σ = 1, le nombre de “Knudsen” ε = 0.1, et une source constante G = 1. Dans cette section, on détermine la solution asymptotique exacte, et on la compare à la solution numérique pour différents paramètres. 1. À l’aide de la méthode du développement de Hilbert vue en cours, déterminer l’équation vérifiée par ρ (la moyenne de f ) dans la limite ε → 0. 2. Résoudre cette équation, et tracer la solution (on conseille de la stocker dans un fichier pour les comparaisons suivantes). 3. Lancer le code avec ε = 0.1 et imax = 40, puis ε = 0.05 et imax = 80, et enfin ε = 0.01 et imax = 400. Observer l’influence de ε et imax sur la vitesse de convergence du schéma. Comparer la solution numérique avec la limite asymptotique. 4. À présent, lancer le code avec ε = 0.1 puis ε = 0.05, ε = 0.01, et même ε = 0.001, mais en gardant imax constant (prendre 40 cellules). Comparer à nouveau la solution numérique avec la limite asymptotique. Vers quelle solution semble converger la solution numérique quand on raffine le maillage ? 5. NB : le comportement du schéma numérique dans la limite ε → 0 peut s’analyser en appliquant le développement de Hilbert au schéma lui-même. Il est alors possible de montrer que le schéma ne peut préserver la limite asympotique si ∆x ne tend pas vers 0 comme ε. 2 4 Donnée au bord non isotrope : couche limite À présent, la donnée à gauche est remplacée par fG (µ) = µ. Cette nouvelle donnée change complètement l’allure de la solution et fait apparaître une couche limite. Ce phénomène est étudié ici, de façon analytique et numérique. 1. La donnée au bord gauche n’étant pas indépendante de µ, il n’est plus possible que f tende vers sa moyenne (qui ne dépend pas de µ) près de ce bord quand ε tend vers 0. Utiliser l’équation (1) pour en déduire l’ordre de grandeur de ∂x f au bord gauche pour ε petit. Quelle doit alors être l’allure de f au voisinage du bord pour ε petit ? Voyez-vous ce qu’est le phénomène de couche limite ? Quelle est sa largeur ? 2. On étudie maintenant ce phénomène numériquement à l’aide du code précédent. Modifier le code pour tenir compte de la nouvelle donnée au bord, puis le lancer avec ε = 0.01 et imax = 400. Quelle est la largeur de la couche limite ? Cela est-il cohérent avec l’analyse faite dans la question précédente ? Quelle doit alors être la valeur minimimum de imax pour voir la couche limite ? 3. Essayer de calculer la solution pour ε = 10−3 (cela est très long : il faut alors compiler le code en mode optimisé (option -O3)). 4. Malgré ce phénomène de couche limite, il est possible de montrer que f tend bien vers sa moyenne à l’extérieur de la couche limite. Sa moyenne tend vers la solution de la même équation asymptotique que celle obtenue section 3, mais la donnée à gauche est beaucoup plus difficile à obtenir : on peut montrer (par une analyse de couche limite due à Chandrasekhar) que cette valeur est très proche de 17/24. Comparer alors les solutions numériques obtenues avec le code à la solution exacte de l’équation asymptotique. 3