Sous-sections

4.4 Équation de convection-diffusion

4.4.1 Problème physique: dispersion d'un polluant

On considère le problème de la dispersion d'un polluant à la surface d'un liquide en mouvement (figure 4.15). Le polluant est miscible dans le liquide, mais plus léger. On suppose que la vitesse du fluide est horizontale. On peut alors considérer que le polluant diffuse essentiellement à la surface, et négliger les variations suivant la vertical \bgroup\color{black}$ z$\egroup .

Figure 4.15: diffusion d'une tache de polluant
\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/convdif}

En notant \bgroup\color{black}$ C$\egroup la fraction massique de polluant et \bgroup\color{black}$ \rho$\egroup la densité du fluide, l'équation d'équilibre pour \bgroup\color{black}$ C$\egroup traduit que la variation temporelle de la quantité de polluant \bgroup\color{black}$ \rho Cdxdydz$\egroup dans un volume élémentaire \bgroup\color{black}$ dxdydz$\egroup est égale à un bilan de flux de \bgroup\color{black}$ C$\egroup sur les facettes du volume. A travers une facette de surface \bgroup\color{black}$ dS$\egroup et de normale sortante \bgroup\color{black}$ \vec{n}$\egroup , il existe un flux de diffusion \bgroup\color{black}$ \lambda\overrightarrow{\nabla}.\vec{n}dS$\egroup ( \bgroup\color{black}$ \lambda$\egroup est le coefficient de diffusion ) et un flux de convection \bgroup\color{black}$ -\rho C\overrightarrow{V}.\vec{n}  dS$\egroup ( \bgroup\color{black}$ \overrightarrow{V}$\egroup est la vitesse du fluide). L'équation d'équilibre s'écrit:

\bgroup\color{black}$\displaystyle \frac{\partial\rho C}{\partial t}=div(\lambda\overrightarrow{\nabla}C)-div(\rho C\overrightarrow{V})$\egroup

Compte tenu de l'équation de conservation de la masse du fluide:

\bgroup\color{black}$\displaystyle \frac{\partial\rho}{\partial t}+div(\rho\overrightarrow{V})=0$\egroup

cette équation s'écrit:

\bgroup\color{black}$\displaystyle \rho\frac{\partial C}{\partial t}+\rho\overrightarrow{V}.\overrightarrow{\nabla}C=div(\lambda\overrightarrow{\nabla}C)$\egroup

Compte tenu de l'hypothèse d'indépendance des quantités par rapport à \bgroup\color{black}$ z$\egroup , et en supposant en outre que la densité \bgroup\color{black}$ \rho$\egroup et le coefficient de diffusion \bgroup\color{black}$ \lambda$\egroup sont constants, il vient:

\bgroup\color{black}$\displaystyle \frac{\partial C}{\partial t}+V_{1}\frac{\par...
...tial^{2}C}{\partial x^{2}}+\frac{\partial^{2}C}{\partial y^{2}}\right)=0$\egroup

A cette équation il faut ajouter la condition initiale \bgroup\color{black}$ C(x,y,t=0)=w(x,y)$\egroup et des conditions aux limites sur les frontières \bgroup\color{black}$ \Gamma$\egroup du domaine \bgroup\color{black}$ \Omega$\egroup . On suppose que le polluant se trouve initialement à l'intérieur du domaine \bgroup\color{black}$ \Omega$\egroup et a pour dimension caractéristique \bgroup\color{black}$ \delta$\egroup (figure 4.15). On distingue les frontières entrantes \bgroup\color{black}$ \Gamma_{0}$\egroup , i.e. telle que \bgroup\color{black}$ \overrightarrow{V}.\overrightarrow{n}<0$\egroup et les frontières sortantes \bgroup\color{black}$ \Gamma_{1}$\egroup , i.e. telle que \bgroup\color{black}$ \overrightarrow{V}.\overrightarrow{n}>0$\egroup . Si la convection est prépondérante sur la diffusion, le flux entrant sur les frontières \bgroup\color{black}$ \Gamma_{0}$\egroup est un flux de convection qui apporte du fluide non pollué dans le domaine \bgroup\color{black}$ \Omega$\egroup . La condition sur \bgroup\color{black}$ \Gamma_{0}$\egroup est une condition de Dirichlet \bgroup\color{black}$ C_{\Gamma_{0}}=0$\egroup . Sur les frontières \bgroup\color{black}$ \Gamma_{1}$\egroup , le fluide transporte le polluant vers l'extérieur: on impose alors une condition aux limites de Neumann \bgroup\color{black}$ \frac{\partial C}{\partial n}_{\Gamma_{1}}=0$\egroup , qui autorise la sortie du polluant du domaine \bgroup\color{black}$ \Omega$\egroup .

Pour un domaine carré de dimension \bgroup\color{black}$ H$\egroup , et une vitesse \bgroup\color{black}$ \overrightarrow{V}$\egroup avec des composantes positives \bgroup\color{black}$ V_{1}>0$\egroup et \bgroup\color{black}$ V_{2}>0$\egroup , la frontière \bgroup\color{black}$ \Gamma_{0}$\egroup correspond aux deux cotés \bgroup\color{black}$ x=0$\egroup et \bgroup\color{black}$ y=0$\egroup et la frontière \bgroup\color{black}$ \Gamma_{1}$\egroup aux deux autres cotés opposés \bgroup\color{black}$ x=H$\egroup et \bgroup\color{black}$ y=H$\egroup .

En notant \bgroup\color{black}$ \kappa=\frac{\lambda}{\rho}$\egroup , le problème modèle s'écrit pour un domaine \bgroup\color{black}$ \Omega$\egroup carré de dimension caractéristique \bgroup\color{black}$ H$\egroup :

Trouver \bgroup\color{black}$ u(x,y,t)$\egroup tel que:

$\displaystyle \frac{\partial u}{\partial t}+V_{1}\frac{\partial u}{\partial x}+...
...partial^{2}u}{\partial x^{2}}+\frac{\partial^{2}u}{\partial y^{2}}\right)=0  $   sur $\displaystyle  \Omega=[0,H]*[0,H]$ (4.26)
$\displaystyle u_{\Gamma_{0}}=0  $sur $\displaystyle   \Gamma_{0}(x=0,  y=0) \„ $  et  $\displaystyle (\frac{\partial u}{\partial n})_{\Gamma_{1}}=0   $sur $\displaystyle    \Gamma_{1}(x=H,  y=H)$    
$\displaystyle u(x,y,t=0)=w(x,y)\textrm{}$    

4.4.2 Étude de la solution exacte

Le problème (4.26) est un problème d'évolution parabolique caractéristique des problèmes de mécanique des fluides, avec un terme de convection et un terme de diffusion. Nous allons tout d'abord effectuer une analyse d'ordre de grandeur de chacun de ces termes.

4.4.2.1 Analyse en ordre de grandeur

Soit \bgroup\color{black}$ \delta$\egroup la dimension caractéristique de la tache initiale, l'ordre de grandeur des différents termes de l'équation (4.26) s'écrit, en notant \bgroup\color{black}$ \tau$\egroup un temps caractéristique:

\bgroup\color{black}$\displaystyle \frac{\Delta C}{\tau}+V_{1}\frac{\Delta C}{\d...
...da\left(\frac{\Delta C}{\delta^{2}}+\frac{\Delta C}{\delta^{2}}\right)=0$\egroup

Si on considère uniquement la diffusion, le temps caractéristique vaut:

\bgroup\color{black}$\displaystyle \tau_{d}\approx\frac{\delta^{2}}{\lambda}$\egroup

On retrouve le temps caractéristique de diffusion (relation c1tdiff) calculé pour l'équation de la chaleur. Le temps caractéristique \bgroup\color{black}$ \tau_{d}$\egroup vérifie une relation du type (à rapprocher de la condition de stabilité c1eq36 pour une équation de diffusion):

$\displaystyle \frac{\lambda\tau_{d}}{\delta^{2}}\approx1$ (4.27)

C'est le temps caractéristique de décroissance exponentielle des phénomènes de diffusion.

Si on considère uniquement la convection, le temps caractéristique vaut:

\bgroup\color{black}$\displaystyle \tau_{c}\approx\frac{\delta}{V}$\egroup

Ce temps correspond au temps de transport de la tache par le champ de vitesse sur une distance égale à la dimension de la tache. Ce temps caractéristique \bgroup\color{black}$ \tau_{c}$\egroup vérifie donc une relation du type (à rapprocher de la condition de stabilité de Courant c3eq12):

$\displaystyle \frac{V \tau_{c}}{\delta}\approx1$ (4.28)

Pour notre problème, on peut définir un autre temps caractéristique de convection: le temps de sortie \bgroup\color{black}$ \tau_{s}$\egroup du polluant hors du domaine \bgroup\color{black}$ \Omega$\egroup . Il est basé sur la dimension caractéristique \bgroup\color{black}$ L$\egroup du domaine et vérifie:

$\displaystyle \frac{V \tau_{s}}{L}\approx1$ (4.29)

Enfin le rapport entre les temps caractéristiques de diffusion \bgroup\color{black}$ \tau_{d}$\egroup et de convection \bgroup\color{black}$ \tau_{c}$\egroup est le nombre de Péclet:

$\displaystyle \frac{\tau_{d}}{\tau_{c}}=\frac{V\delta}{\lambda}=P_{e}$ (4.30)

qui caractérise l'importance relative du terme de convection par rapport au terme de diffusion.

4.4.2.2 Diffusion convection d'une gaussienne

Considérons la condition initiale suivante:

$\displaystyle w(x,y)=e^{-\left(\frac{x-x_{0}}{\sigma_{0}}\right)^{2}}e^{-\left(\frac{y-y_{0}}{\sigma_{0}}\right)^{2}}$ (4.31)

qui décrit une tache gaussienne d'amplitude 1 centrée en \bgroup\color{black}$ (x_{0},y_{0})$\egroup , de rayon \bgroup\color{black}$ \sigma_{0}$\egroup .

S'il n'y a pas de convection, cette tache diffuse de façon auto-similaire , i.e. son amplitude diminue et son rayon augmente en conservant une forme gaussienne:

\bgroup\color{black}$\displaystyle u(x,y,t)=A(t)e^{-\left(\frac{x-x_{0}}{\sigma(t)}\right)^{2}}e^{-\left(\frac{y-y_{0}}{\sigma(r)}\right)^{2}}$\egroup

En utilisant la conservation globale de \bgroup\color{black}$ u$\egroup dans tout le domaine:

\bgroup\color{black}$\displaystyle \int\int u(x,y,t)  dxdy=\int\int w(x,y)  dxdy=cste    \forall t$\egroup

on en déduit la relation entre l'amplitude \bgroup\color{black}$ A(t)$\egroup et le rayon \bgroup\color{black}$ \sigma(t)$\egroup :

\bgroup\color{black}$\displaystyle \frac{\pi}{4}A(t)\sigma^{2}(t)=\frac{\pi}{4}\sigma_{0}^{2}$\egroup

(l'intégrale d'une gaussienne vaut: \bgroup\color{black}$ \int e^{-(x/\sigma)^{2}}dx=\frac{\sqrt{\pi}}{2}\sigma$\egroup ).

On cherche donc une solution de diffusion de l'équation (4.26) (avec \bgroup\color{black}$ V=0$\egroup ) sous la forme:

\bgroup\color{black}$\displaystyle u(x,y,t)=\left(\frac{\sigma_{0}}{\sigma(t)}\r...
...}}{\sigma(t)}\right)^{2}}e^{-\left(\frac{y-y_{0}}{\sigma(r)}\right)^{2}}$\egroup

En reportant cette relation dans l'équation (4.26) on obtiens l'équation d'évolution de \bgroup\color{black}$ \sigma(t)$\egroup :

\bgroup\color{black}$\displaystyle \frac{d}{dt}\sigma(t)=-2\frac{\kappa}{\sigma(t)}$\egroup

dont la solution vérifiant \bgroup\color{black}$ \sigma(0)=\sigma_{0}$\egroup est:

$\displaystyle \sigma(t)=\sqrt{4\kappa t+\sigma_{0}^{2}}$ (4.32)

La solution de diffusion de l'équation (4.26) s'écrit donc:

$\displaystyle u(x,y,t)=\left(\frac{\sigma_{0}}{\sqrt{4\kappa t+\sigma_{0}^{2}}}...
...ight)^{2}}e^{-\left(\frac{y-y_{0}}{\sqrt{4\kappa t+\sigma_{0}^{2}}}\right)^{2}}$ (4.33)

L'amplitude de cette gaussienne décroît donc suivant la loi:

$\displaystyle A(t)=\left(\frac{\sigma_{0}}{\sqrt{4\kappa t+\sigma_{0}^{2}}}\right)^{2}$ (4.34)

En prenant en compte la convection par un champ de vitesse sans cisaillement, cette tache gaussienne est transportée sans déformation et diffuse le long des trajectoires du champ de vitesse comme précédemment. Pour un champ de vitesse constant, les trajectoires sont des droites:

\bgroup\color{black}$\displaystyle x(t)=x_{0}+V_{1}t   \„      y(t)=y_{0}+V_{2}t$\egroup

la solution de convection-diffusion de l'équation (4.26) s'écrit donc:

$\displaystyle u(x,y,t)=\left(\frac{\sigma_{0}}{\sqrt{4\kappa t+\sigma_{0}^{2}}}...
...2}}e^{-\left(\frac{y-y_{0}-V_{2}t}{\sqrt{4\kappa t+\sigma_{0}^{2}}}\right)^{2}}$ (4.35)

Cette solution est une solution en milieu infini et ne tiens pas compte des conditions aux limites du problème (4.26). Elle constitue cependant une bonne approximation de la solution, si la dimension de la tache \bgroup\color{black}$ \sigma_{0}$\egroup est petite devant la dimension \bgroup\color{black}$ L$\egroup du domaine \bgroup\color{black}$ \Omega$\egroup .

Figure: convection diffusion d'une gaussienne (4.35)
[solution a t=0 et t=0.5]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solexcdif}[amplitude $ A(t)$ et taille $ \sigma (t)$ ]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solexcdif1}

On a tracé l'évolution de cette solution (4.35) sur la figure (4.16) pour \bgroup\color{black}$ \kappa=0.01$\egroup , \bgroup\color{black}$ \sigma_{0}=0.1$\egroup et \bgroup\color{black}$ \overrightarrow{V}=[1.\„ 1.]$\egroup . Pour ces valeurs des paramètres, un domaine de longueur \bgroup\color{black}$ H=1$\egroup , une position initiale \bgroup\color{black}$ x_{0}=\frac{H}{4}$\egroup et \bgroup\color{black}$ y_{0}=\frac{H}{4}$\egroup , le temps caractéristique de diffusion vaut \bgroup\color{black}$ \tau_{d}\approx1.$\egroup , celui de convection \bgroup\color{black}$ \tau_{c}\approx0.1$\egroup , et le nombre de Péclet \bgroup\color{black}$ P_{e}\approx10$\egroup . Le problème est donc à convection dominante. Au bout d'un temps \bgroup\color{black}$ T_{f}=0.5$\egroup \bgroup\color{black}$ (T_{f}<\tau_{s}=1.0)$\egroup , la tache est à la frontière du domaine avec une amplitude qui a diminuée d'un tiers: \bgroup\color{black}$ A(T_{f})\approx0.33333$\egroup .

4.4.2.3 Modes propres de diffusion

Pour rechercher des solutions vérifiant les conditions aux limites, on détermine tout d'abord les modes propres de diffusion en utilisant la méthode de séparation de variable décrite au paragraphe c1analytique. Le calcul est identique, et on montre facilement que les modes propres sont les fonctions suivantes:

$\displaystyle u_{p,q}(x,y,t)=\sin\left(\frac{(2p+1)\pi}{2}\frac{x}{L}\right)\si...
...(2p+1)\pi}{2L}\right)^{2}+\left(\frac{(2q+1)\pi}{2L}\right)^{2}\right)\kappa t}$ (4.36)

qui vérifient les conditions aux limites:

\bgroup\color{black}$\displaystyle u_{p,q}(0,y,t)=u_{p,q}(x,0,t)=0    (\Gamm...
...frac{d}{dx}u_{p,q}(H,y,t)=\frac{d}{dy}u_{p,q}(x,H,t)=0   (\Gamma_{1})$\egroup

La solution générale de diffusion est alors une combinaison linéaire de ses modes:

\bgroup\color{black}$\displaystyle u(x,y,t)=\sum_{p=0}^{\infty}\sum_{q=0}^{\infty}\alpha_{p,q}u_{p,q}(x,y,t)$\egroup

Figure 4.17: mode propre de diffusion $ p=1$ $ q=1$
[t=0]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solexdif}[Amplitude $ A(t)$ ]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solexdif1}

On a tracé sur la figure (4.17) le mode \bgroup\color{black}$ p=1$\egroup et \bgroup\color{black}$ q=1$\egroup , ainsi que l'évolution temporelle de son amplitude pour les mêmes paramètres que précédemment ( \bgroup\color{black}$ \kappa=0.01$\egroup , \bgroup\color{black}$ L=1$\egroup ). Sur un temps \bgroup\color{black}$ T_{f}=0.5$\egroup , l'amplitude de ce mode décroît de \bgroup\color{black}$ 0,8$\egroup .

Si on prend en compte la convection dans le cas d'un champ de vitesse sans cisaillement, la solution initiale est convectée sans déformation et diffusée le long des trajectoires. Par contre, il n'existe pas de solutions analytiques simples qui vérifient les conditions aux limites de (4.26).

En considérant une taille de structure \bgroup\color{black}$ \delta=\frac{2}{3\pi}L$\egroup , le temps caractéristique de diffusion vaut \bgroup\color{black}$ \tau_{d}\approx4.5$\egroup , le temps caractéristique de convection \bgroup\color{black}$ \tau_{c}\approx0,2$\egroup , et le nombre de Péclet \bgroup\color{black}$ P_{e}\approx21$\egroup .

4.4.3 Discrétisation par différences finies

Nous avons vu dans les chapitres précédents qu'une discrétisation précise de problème parabolique est le schéma de Cranck Nicholson. Appliquée à l'équation (4.26), il s'écrit pour un maillage cartésien de \bgroup\color{black}$ N_{x}$\egroup points suivant \bgroup\color{black}$ x$\egroup et \bgroup\color{black}$ N_{y}$\egroup points suivant \bgroup\color{black}$ y$\egroup , et de pas \bgroup\color{black}$ dx$\egroup et \bgroup\color{black}$ dy$\egroup :


$\displaystyle \frac{u_{i,j}^{n+1}-u_{i,j}^{n}}{dt}$ $\displaystyle =$ $\displaystyle -\frac{V_{1}}{2}\left(\frac{u_{i+1,j}^{n+1}-u_{i-1,j}^{n+1}}{2dx}+\frac{u_{i+1,j}^{n}-u_{i-1,j}^{n}}{2dx}\right)$ (4.37)
  $\displaystyle -$ $\displaystyle \frac{V_{2}}{2}\left(\frac{u_{i,j+1}^{n+1}-u_{i,j-1}^{n+1}}{2dy}+\frac{u_{i,j+1}^{n}-u_{i,j-1}^{n}}{2dy}\right)$  
  $\displaystyle +$ $\displaystyle \frac{\kappa}{2}\left(\frac{u_{i+1,j}^{n+1}-2u_{i,j}^{n+1}+u_{i-1,j}^{n+1}}{dx^{2}}+\frac{u_{i+1,j}^{n}-2u_{i,j}^{n}+u_{i-1,j}^{n}}{dx^{2}}\right)$  
  $\displaystyle +$ $\displaystyle \frac{\kappa}{2}\left(\frac{u_{i,j+1}^{n+1}-2u_{i,j}^{n+1}+u_{i,j-1}^{n+1}}{dy^{2}}+\frac{u_{i,j+1}^{n}-2u_{i,j}^{n}+u_{i,j-1}^{n}}{dy^{2}}\right)$  

C'est un schéma inconditionnellement stable d'ordre 2 en temps et en espace, i.e. en \bgroup\color{black}$ O(dt^{2},dx^{2},dy^{2})$\egroup .

A chaque itération en temps, on a à résoudre un système d'équations linéaire \bgroup\color{black}$ \mathcal{A}x=\mathcal{B}$\egroup , de \bgroup\color{black}$ N=N_{x}N_{y}$\egroup inconnues \bgroup\color{black}$ \{u_{i,j}^{n+1}\}$\egroup . La matrice \bgroup\color{black}$ \mathcal{A}$\egroup est une matrice penta-diagonale, qui a la même structure que la matrice du laplacien au paragraphe c4matlap. Pour des très gros maillages, le coût de résolution de ce système linéaire en utilisant les méthodes de résolution du paragraphe c4matlap peut devenir rapidement prohibitif.

On va donc étudier dans le paragraphe suivant une méthode alternative: la méthode des directions alternées implicites.

4.4.4 Méthode des directions alternées implicites

Le principe des méthodes des directions alternées implicites, notées ADI (ADI=Alternated Directions Implicited est le sigle classique des directions alternées en anglais), est de décomposer les opérateurs spatiaux suivant les directions d'espace \bgroup\color{black}$ x$\egroup et \bgroup\color{black}$ y$\egroup . On écrit l'équation (4.26) sous la forme symbolique suivante:

$\displaystyle \frac{\partial u}{\partial t}=L_{1}(u)+L_{2}(u)$ (4.38)

\bgroup\color{black}$ L_{1}$\egroup et \bgroup\color{black}$ L_{2}$\egroup sont les deux opérateurs suivants:

$\displaystyle L_{1}=V_{1}\frac{\partial}{\partial x}-\kappa\frac{\partial^{2}}{...
..._{2}=V_{2}\frac{\partial}{\partial y}-\kappa\frac{\partial^{2}}{\partial y^{2}}$ (4.39)

En notant \bgroup\color{black}$ u^{n}$\egroup , \bgroup\color{black}$ u^{n+1}$\egroup , \bgroup\color{black}$ u^{n+\frac{1}{2}}$\egroup les solutions au temps \bgroup\color{black}$ t^{n}=ndt$\egroup , \bgroup\color{black}$ t^{n+1}=(n+1)dt$\egroup et \bgroup\color{black}$ t^{n+\frac{1}{2}}=(n+\frac{1}{2})dt$\egroup , les développements limitées de \bgroup\color{black}$ u^{n+\frac{1}{2}}$\egroup peuvent s'écrire de façon symbolique:


$\displaystyle u^{n+\frac{1}{2}}$ $\displaystyle =$ $\displaystyle \left(e^{\frac{dt}{2}\frac{\partial}{\partial t}}\right)u^{n}=\left(e^{\frac{dt}{2}(L_{1}+L_{2})}\right)u^{n}$  
$\displaystyle u^{n+\frac{1}{2}}$ $\displaystyle =$ $\displaystyle \left(e^{-\frac{dt}{2}\frac{\partial}{\partial t}}\right)u^{n+1}=\left(e^{-\frac{dt}{2}(L_{1}+L_{2})}\right)u^{n+1}$  

On a utilisé dans ces relations le fait que \bgroup\color{black}$ u^{n}$\egroup et \bgroup\color{black}$ u^{n+1}$\egroup sont solutions de l'équation exacte (4.26) pour remplacer \bgroup\color{black}$ \frac{\partial u}{\partial t}$\egroup en fonction de \bgroup\color{black}$ L_{1}(u)$\egroup et \bgroup\color{black}$ L_{2}(u)$\egroup .

En combinant ces deux équations, il vient:

$\displaystyle \left(e^{-\frac{dt}{2}(L_{1}+L_{2})}\right)u^{n+1}=\left(e^{\frac{dt}{2}(L_{1}+L_{2})}\right)u^{n}$ (4.40)

En utilisant un développement au premier ordre des exponentielles,

\bgroup\color{black}$\displaystyle \left(1-\frac{dt}{2}(L_{1}+L_{2})\right)u^{n+1}=\left(1+\frac{dt}{2}(L_{1}+L_{2})\right)u^{n}$\egroup

on obtiens le schéma suivant, dans lequel il suffit d'inclure l'approximation spatiale des opérateurs \bgroup\color{black}$ L_{1}$\egroup et \bgroup\color{black}$ L_{2}$\egroup :

$\displaystyle \frac{u^{n+1}-u^{n}}{dt}=\frac{L_{1}(u^{n+1})+L_{1}(u^{n})}{2}+\frac{L_{2}(u^{n+1})+L_{2}(u^{n})}{2}$ (4.41)

C'est le schéam classique de Cranck Nicholson (4.37).

Pour les schémas ADI, on effectue tout d'abord une factorisation formelle dans (4.40):

\bgroup\color{black}$\displaystyle \left(e^{-\frac{dt}{2}L_{1}}e^{-\frac{dt}{2}L...
...ght)u^{n+1}=\left(e^{\frac{dt}{2}L_{1}}e^{\frac{dt}{2}L_{2}}\right)u^{n}$\egroup

avant le développement limité des exponentielles:

$\displaystyle \left(1-\frac{dt}{2}L_{1}\right)\left(1-\frac{dt}{2}L_{2}\right)u^{n+1}=\left(1+\frac{dt}{2}L_{1}\right)\left(1+\frac{dt}{2}L_{2}\right)u^{n}$ (4.42)

Formellement, on a un schéma de type Cranck Nicholson d'ordre 2 mais avec une erreur de troncature différente. Pour résoudre, on introduit la solution intermédiaire \bgroup\color{black}$ u^{*}$\egroup telle que:


$\displaystyle \left(1-\frac{dt}{2}L_{1}\right)u^{*}$ $\displaystyle =$ $\displaystyle \left(1+\frac{dt}{2}L_{2}\right)u^{n}$ (4.43)
$\displaystyle \left(1-\frac{dt}{2}L_{2}\right)u^{n+1}$ $\displaystyle =$ $\displaystyle \left(1+\frac{dt}{2}L_{1}\right)u^{*}$  

Ces deux équations sont équivalentes à l'équation (4.42). Pour s'en convaincre, il suffit de multiplier la première par \bgroup\color{black}$ 1+\frac{dt}{2}L_{1}$\egroup et la seconde par \bgroup\color{black}$ 1-\frac{dt}{2}L_{1}$\egroup et de les combiner. L'intérêt de cette procédure par rapport à Cranck Nicholson classique est que dans la première équation (4.43), on est implicite suivant \bgroup\color{black}$ L_{1}$\egroup (i.e. suivant \bgroup\color{black}$ x$\egroup ) et explicite suivant \bgroup\color{black}$ L_{2}$\egroup (i.e. suivant \bgroup\color{black}$ y$\egroup ), et vice-versa dans la seconde. La résolution de ces deux équations sera donc plus facile que la résolution du schéma de Cranck Nicholson (4.41), dans lequel on est implicite suivant les 2 directions \bgroup\color{black}$ L_{1}$\egroup et \bgroup\color{black}$ L_{2}$\egroup .

On discrétise ensuite les opérateurs \bgroup\color{black}$ L_{1}$\egroup et \bgroup\color{black}$ L_{2}$\egroup avec des différences finies centrées sur un maillage cartésien de \bgroup\color{black}$ N_{x}$\egroup points suivant \bgroup\color{black}$ x$\egroup et \bgroup\color{black}$ N_{y}$\egroup points suivant \bgroup\color{black}$ y$\egroup , et de pas \bgroup\color{black}$ dx$\egroup et \bgroup\color{black}$ dy$\egroup :


$\displaystyle L_{1}(u_{i,j})$ $\displaystyle =$ $\displaystyle -V_{1}\frac{u_{i+1,j}-u_{i-1,j}}{2dx}+\kappa\frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{dx^{2}}$  
$\displaystyle L_{2}(u_{i,j})$ $\displaystyle =$ $\displaystyle -V_{2}\frac{u_{i,j+1}-u_{i,j-1}}{2dy}+\kappa\frac{u_{i,j+1}-2u_{i,j}+u_{i,j-1}}{dy^{2}}$  

On obtiens le schéma ADI suivant pour l'équation (4.26):


$\displaystyle \frac{u_{i,j}^{*}-u_{i,j}^{n}}{dt/2}$ $\displaystyle =$ $\displaystyle -V_{1}\frac{u_{i+1,j}^{*}-u_{i-1,j}^{*}}{2dx}+\kappa\frac{u_{i+1,j}^{*}-2u_{i,j}^{*}+u_{i-1,j}^{*}}{dx^{2}}$ (4.44)
    $\displaystyle -V_{2}\frac{u_{i,j+1}^{n}-u_{i,j-1}^{n}}{2dy}+\kappa\frac{u_{i,j+1}^{n}-2u_{i,j}^{n}+u_{i,j-1}^{n}}{dy^{2}}$  


$\displaystyle \frac{u_{i,j}^{n+1}-u_{i,j}^{*}}{dt/2}$ $\displaystyle =$ $\displaystyle -V_{1}\frac{u_{i+1,j}^{*}-u_{i-1,j}^{*}}{2dx}+\kappa\frac{u_{i+1,j}^{*}-2u_{i,j}^{*}+u_{i-1,j}^{*}}{dx^{2}}$ (4.45)
    $\displaystyle -V_{2}\frac{u_{i,j+1}^{n+1}-u_{i,j-1}^{n+1}}{2dy}+\kappa\frac{u_{i,j+1}^{n+1}-2u_{i,j}^{n+1}+u_{i,j-1}^{n+1}}{dy^{2}}$  

Figure 4.18: schéma ADI4.44 et 4.45
\begin{figure}\begin{centering}
\input{schemaADI.pstex_t}
\par
\end{centering}\par\par
\end{figure}

Ces équations ADI correspondent à deux discrétisations de l'équation (4.26) à \bgroup\color{black}$ t^{n+\frac{1}{2}}$\egroup avec un pas en temps \bgroup\color{black}$ \frac{dt}{2}$\egroup . La première correspond à une discrétisation entre \bgroup\color{black}$ t^{n}$\egroup et \bgroup\color{black}$ t^{n+\frac{1}{2}}$\egroup avec une implicitation dans la direction \bgroup\color{black}$ x$\egroup et la seconde à une discrétisation entre \bgroup\color{black}$ t^{n+\frac{1}{2}}$\egroup et \bgroup\color{black}$ t^{n}$\egroup avec une implicitation dans la direction \bgroup\color{black}$ y$\egroup (figure 4.18). La variable intermédiaire \bgroup\color{black}$ u_{i,j}^{*}$\egroup corresponds donc à une approximation de \bgroup\color{black}$ u_{i,j}^{n+\frac{1}{2}}$\egroup .

La première équation (4.44) couple les valeurs inconnues \bgroup\color{black}$ u_{i,j}^{*}$\egroup par ligne (figure 4.18), i.e. les valeurs inconnues sur la ligne \bgroup\color{black}$ j$\egroup \bgroup\color{black}$ \{u_{i,j}^{*}\}_{i=1,N_{x}}$\egroup sont indépendantes des valeurs sur les autres lignes. Elles sont solutions du système linéaire tri-diagonal \bgroup\color{black}$ \mathcal{A}^{1}x=\mathcal{B}^{1}$\egroup de dimension \bgroup\color{black}$ N_{x}$\egroup suivant:

$\displaystyle \left[\begin{array}{ccccc} \ddots & \ddots & 0 & \cdots & 0 \dd...
...c_{2}^{1}u_{i,j}^{n}+c_{3}^{1}u_{i,j+1}^{n} \vdots \vdots\end{array}\right]$ (4.46)

avec \bgroup\color{black}$ a_{1}^{1}=\frac{-\kappa}{dx^{2}}-\frac{V_{1}}{2dx}$\egroup , \bgroup\color{black}$ a_{2}^{1}=\frac{2}{dt}+\frac{2\kappa}{dx^{2}}$\egroup , \bgroup\color{black}$ a_{3}^{1}=\frac{-\kappa}{dx^{2}}+\frac{V_{1}}{2dx}$\egroup , et \bgroup\color{black}$ c_{1}^{1}=\frac{\kappa}{dy^{2}}+\frac{V_{2}}{2dy}$\egroup , \bgroup\color{black}$ c_{2}^{1}=\frac{2}{dt}-\frac{2\kappa}{dy^{2}}$\egroup , \bgroup\color{black}$ c_{3}^{1}=\frac{\kappa}{dy^{2}}-\frac{V_{2}}{2dy}$\egroup .

Le second membre \bgroup\color{black}$ \mathcal{B}^{1}$\egroup peut s'écrire sous la forme d'un produit matrice vecteur \bgroup\color{black}$ \mathcal{B}^{1}=\mathcal{C}^{1}\{u_{i,j}^{n}\}$\egroup avec une matrice \bgroup\color{black}$ \mathcal{C}^{1}$\egroup tridiagonale:

\bgroup\color{black}$\displaystyle \mathcal{B}^{1}=\left[\begin{array}{ccccc}
\d...
..._{i,j-1}^{n}\\
u_{i,j}^{n}\\
u_{i,j+1}^{n}\\
\vdots\end{array}\right]$\egroup

Pour déterminer les valeurs inconnues \bgroup\color{black}$ u_{i,j}^{*}$\egroup , il faut donc résoudre \bgroup\color{black}$ N_{y}$\egroup systèmes linéaires tri-diagonaux de dimension \bgroup\color{black}$ N_{x}$\egroup .

De même la seconde équation (4.45) couple les valeurs inconnues \bgroup\color{black}$ u_{i,j}^{n+1}$\egroup par colonne (figure 4.18), i.e. les valeurs inconnues sur la colonne \bgroup\color{black}$ i$\egroup \bgroup\color{black}$ \{u_{i,j}^{n+1}\}_{j=1,N_{y}}$\egroup sont indépendantes des valeurs sur les autres colonnes. Elles sont solutions du système linéaire tri-diagonal \bgroup\color{black}$ \mathcal{A}^{2}x=\mathcal{B}^{2}$\egroup de dimension \bgroup\color{black}$ N_{y}$\egroup suivant:

$\displaystyle \left[\begin{array}{ccccc} \ddots & \ddots & 0 & \cdots & 0 \dd...
...c_{2}^{2}u_{i,j}^{*}+c_{3}^{2}u_{i+1,j}^{*} \vdots \vdots\end{array}\right]$ (4.47)

avec \bgroup\color{black}$ a_{1}^{2}=\frac{-\kappa}{dy}-\frac{V_{2}}{2dy}$\egroup , \bgroup\color{black}$ a_{2}^{2}=\frac{2}{dt}+\frac{2\kappa}{dy^{2}}$\egroup , \bgroup\color{black}$ a_{3}^{2}=\frac{-\kappa}{dy^{2}}+\frac{V_{2}}{2dy}$\egroup , et \bgroup\color{black}$ c_{1}^{1}=\frac{\kappa}{dx^{2}}+\frac{V_{1}}{2dx}$\egroup , \bgroup\color{black}$ c_{2}^{1}=\frac{2}{dt}-\frac{2\kappa}{dx^{2}}$\egroup , \bgroup\color{black}$ c_{3}^{1}=\frac{\kappa}{dx^{2}}-\frac{V_{1}}{2dx}$\egroup .

Le second membre \bgroup\color{black}$ \mathcal{B}^{2}$\egroup peut encore s'écrire sous la forme d'un produit matrice vecteur \bgroup\color{black}$ \mathcal{B}^{2}=\mathcal{C}^{2}\{u_{i,j}^{*}\}$\egroup :

\bgroup\color{black}$\displaystyle \mathcal{B}^{2}=\left[\begin{array}{ccccc}
\d...
..._{i-1,j}^{*}\\
u_{i,j}^{*}\\
u_{i+1,j}^{*}\\
\vdots\end{array}\right]$\egroup

Pour déterminer valeurs inconnues \bgroup\color{black}$ u_{i,j}^{n+1}$\egroup , il faut donc résoudre \bgroup\color{black}$ N_{x}$\egroup systèmes linéaires tri-diagonaux de dimension \bgroup\color{black}$ N_{y}$\egroup .

A chaque itération en temps, on résoud \bgroup\color{black}$ N_{y}$\egroup systèmes tri-diagonaux de rang \bgroup\color{black}$ N_{x}$\egroup et \bgroup\color{black}$ N_{x}$\egroup systèmes tri-diagonaux de rang \bgroup\color{black}$ N_{y}$\egroup , ce qui est beaucoup plus efficace que la résolution d'un seul système linéaire de rang \bgroup\color{black}$ N_{x}N_{y}$\egroup .

Pour les conditions aux limites, il faut modifier la première et la dernière ligne de ces systèmes linéaires. Pour les conditions de Dirichlet sur \bgroup\color{black}$ \Gamma_{0}$\egroup , on modifie la première ligne de \bgroup\color{black}$ \mathcal{A}^{1}$\egroup et \bgroup\color{black}$ \mathcal{A}^{2}$\egroup :

$\displaystyle \mathcal{A}_{1,j\neq1}^{1}=0 \„  \mathcal{A}_{1,1}^{1}=1\;,  \mathcal{B}_{1}^{1}=0  $   et  $\displaystyle \mathcal{A}_{1,j\neq1}^{2}=0 \„  \mathcal{A}_{1,1}^{2}=1\;,  \mathcal{B}_{1}^{2}=0$ (4.48)

Cette condition fixe la valeur de la première ligne de \bgroup\color{black}$ u^{*}$\egroup : \bgroup\color{black}$ \{u_{i,1}^{*}\}_{i=1,N_{x}}=0$\egroup et la première colonne de \bgroup\color{black}$ u^{n+1}$\egroup : \bgroup\color{black}$ \{u_{^{1,j}}^{n+1}\}_{j=1,N_{y}}=0$\egroup .

Pour les conditions de Neumann sur \bgroup\color{black}$ \Gamma_{1}$\egroup , on utilise une condition miroir, qui modifie la dernière ligne de \bgroup\color{black}$ \mathcal{A}^{1}$\egroup et \bgroup\color{black}$ \mathcal{A}^{2}$\egroup :

$\displaystyle \mathcal{A}_{N_{x},N_{x-1}}^{1}=a_{1}^{1}+a_{3}^{1}    $   et      $\displaystyle \mathcal{A}_{N_{y},N_{y-1}}^{2}=a_{1}^{2}+a_{3}^{2}$ (4.49)

De même le second membre \bgroup\color{black}$ \mathcal{B}^{1}$\egroup de l'étape 1 pour la ligne \bgroup\color{black}$ j=N_{y}$\egroup est modifié:

$\displaystyle \mathcal{B}_{i}^{1}=(c_{1}^{1}+c_{3}^{1})u_{i,N_{y}-1}^{n}+c_{2}^{1}u_{i,N_{y}}^{n}$ (4.50)

ainsi que le second membre \bgroup\color{black}$ \mathcal{B}^{2}$\egroup de l'étape 2 pour la colonne \bgroup\color{black}$ i=N_{x}$\egroup :

$\displaystyle \mathcal{B}_{j}^{2}=(c_{1}^{2}+c_{3}^{2})u_{N_{x}-1,j}^{*}+c_{2}^{2}u_{N_{x},j}^{*}$ (4.51)

4.4.4.1 Stabilité et précision du schéma ADI

4.4.4.1.1 Étude de la stabilité:

L'étude de la stabilité utilise le programme Maple 4.4.4.


programme Maple 4.4.4: Etude de la stabilité du schèma ADI (4.44)

> restart:
# Equation de convection-diffusion
> diff(U(x,y,t),t)+V1*diff(U(x,y,t),x)+V2*diff(U(x,y,t),y)=
> kappa*(diff(U(x,y,t),x$2)+diff(U(x,y,t),y$2));eq:=%:
# Schema ADI
> (U[ns,i,j]-U[n,i,j])/(dt/2)+V1*(U[ns,i+1,j]-U[ns,i-1,j])/
 (2*dx)+V2*(U[n,i,j+1]-U[n,i,j-1])/(2*dy)=kappa*((U[ns,i+1,j]
 -2*U[ns,i,j]+U[ns,i-1,j])/dx^2+(U[n,i,j+1]-2*U[n,i,j]+
 U[n,i,j-1])/dy^2);   eqh1:=%:
> (U[n+1,i,j]-U[ns,i,j])/(dt/2)+V1*(U[ns,i+1,j]-U[ns,i-1,j])/
 (2*dx)+V2*(U[n+1,i,j+1]-U[n+1,i,j-1])/(2*dy)=kappa*((U[ns,i+1,j]
 -2*U[ns,i,j]+U[ns,i-1,j])/dx^2+(U[n+1,i,j+1]-2*U[n+1,i,j]+
 U[n+1,i,j-1])/dy^2);  eqh2:=%:
# Etude de la Stabilite
> Up:=(n,i,j)->Psi[n]*exp(I*omega[1]*i*dx)*exp(I*omega[2]*j*dy);
> subs(U[ns,i,j]=Up(ns,i,j),U[n,i,j]=Up(n,i,j),
      U[ns,i+1,j]=Up(ns,i+1,j),U[ns,i-1,j]=Up(ns,i-1,j),
      U[n,i,j+1]=Up(n,i,j+1),U[n,i,j-1]=Up(n,i,j-1),eqh1):
> rel1:=simplify(%*exp(-I*omega[1]*i*dx)*exp(-I*omega[2]*j*dy)):
> Psi[ns]/Psi[n]=solve(subs(Psi[ns]=G*Psi[n],rel1),G);rel11:=%:
#
> subs(U[ns,i,j]=Up(ns,i,j),U[n+1,i,j]=Up(n+1,i,j),
    U[ns,i+1,j]=Up(ns,i+1,j),U[ns,i-1,j]=Up(ns,i-1,j),
    U[n+1,i,j+1]=Up(n+1,i,j+1),U[n+1,i,j-1]=Up(n+1,i,j-1),eqh2):
> rel2:=simplify(%*exp(-I*omega[1]*i*dx)*exp(-I*omega[2]*j*dy)):
> Psi[n+1]/Psi[ns]=solve(subs(Psi[n+1]=G*Psi[ns],rel2),G);
  rel22:=%:
# Facteur d'amplification
> G:=rhs(rel11)*rhs(rel22);
# Etude de chaque terme
> A1=r1*(1-cos(omega[1]*dx));A2=r2*(1-cos(omega[2]*dy));
> rel1:={%,%%}: rel11:={r1=kappa*dt/dx^2,r2=kappa*dt/dy^2}:
> B1=CFL1*sin(omega[1]*dx)/2;B2=CFL2*sin(omega[2]*dy)/2;
> rel2:={%,%%}: rel22:={CFL1=V1*dt/dx,CFL2=V2*dt/dy}:
> 'G'=((A1-1)+I*B1)/((A1+1)+I*B1)*((A2-1)+I*B2)/((A2+1)+I*B2);
  GG:=rhs(%):
# Verification
> G=subs(rel1,rel2,rel11,rel22,GG):simplify(%):rhs(%)-lhs(%);
# Calcul du carre du module de G
> GG;
> G1:=((A1-1)+I*B1)/((A1+1)+I*B1);
  G1M=((A1-1)^2+B1^2)/((A1+1)^2+B1^2);
> G2:=((A2-1)+I*B2)/((A2+1)+I*B2);
  G2M=((A2-1)^2+B2^2)/((A2+1)^2+B2^2);
# G1M et G2M sont donc <1 ==> donc stabilite

On définit les deux étapes (4.44 et 4.45) du schéma ADI (lignes 6 à 13), puis on introduit une perturbation \bgroup\color{black}$ U_{p}$\egroup décomposée en mode de Fourier (ligne 15), que l'on introduit dans les deux équations (lignes 16 et 22). On calcul l'amplification du mode pour chacune de ces équations: i.e. \bgroup\color{black}$ \frac{\psi^{*}}{\psi^{n}}$\egroup pour la première (ligne 20) et \bgroup\color{black}$ \frac{\psi^{n+1}}{\psi^{*}}$\egroup pour la seconde (ligne 22). D'où l'on déduit le facteur d'amplification global du schéma \bgroup\color{black}$ G=\frac{\psi^{n+1}}{\psi^{n}}$\egroup (ligne 29):

\bgroup\color{black}$\displaystyle G=\frac{a_{1}-1+Ib_{1}}{a_{1}+1+Ib_{1}} \frac{a_{2}-1+Ib_{2}}{a_{2}+1+Ib_{2}}$\egroup

avec \bgroup\color{black}$ a_{1}=\frac{\kappa dt}{dx^{2}}(1-\cos\omega_{1}dx)$\egroup , \bgroup\color{black}$ a_{2}=\frac{\kappa dt}{dy^{2}}(1-\cos\omega_{2}dy)$\egroup , \bgroup\color{black}$ b_{1}=\frac{V_{1}dt}{dx}$\egroup , \bgroup\color{black}$ b_{2}=\frac{V_{2}dt}{dx}$\egroup .

Le carré du module de \bgroup\color{black}$ G$\egroup vaut:

\bgroup\color{black}$\displaystyle G^{2}=\frac{(a_{1}-1)^{2}+b_{1}^{2}}{(a_{1}+1...
...{2}}{(a_{2}+1)^{2}+b_{2}^{2}}\leq1     \forall\omega_{1},\omega_{2}$\egroup

Il est plus petit que 1 puisque \bgroup\color{black}$ a_{1}$\egroup et \bgroup\color{black}$ a_{2}$\egroup sont positifs.

Le schéma ADI (4.44 et 4.45) est donc inconditionnellement stable.

4.4.4.1.2 Étude de la consistance:

Pour étudier la consistance, on utilise le programme Maple 4.4.4, qui est la suite du programme précédent 4.4.4.


programme Maple 4.4.4: Etude de la consitance du schèma ADI (4.44)

# Erreur de troncature dvt de taylor autour de t=n+1/2
# Equation equivalente
> 1/2*eqh1+1/2*eqh2:eqh12:=lhs(%)-rhs(%):
# subsitution de la solution exacte dans cette equation
> Uex:=(r,p,q)->U(x+(p-i)*dx,y+(q-j)*dy,t+(r-n-1/2)*dt);
> subs(U[n,i,j]=Uex(n,i,j),
     U[n,i+1,j]=Uex(n,i+1,j),U[n,i-1,j]=Uex(n,i-1,j),
     U[n,i,j+1]=Uex(n,i,j+1),U[n,i,j-1]=Uex(n,i,j-1),
     U[n+1,i,j]=Uex(n+1,i,j),
     U[n+1,i+1,j]=Uex(n+1,i+1,j),U[n+1,i-1,j]=Uex(n+1,i-1,j),
     U[n+1,i,j+1]=Uex(n+1,i,j+1),U[n+1,i,j-1]=Uex(n+1,i,j-1),
     U[ns,i,j]=Uex(n+1/2,i,j),
     U[ns,i+1,j]=Uex(n+1/2,i+1,j),U[ns,i-1,j]=Uex(n+1/2,i-1,j),
     U[ns,i,j+1]=Uex(n+1/2,i,j+1),U[ns,i,j-1]=Uex(n+1/2,i,j-1),
     eqh12);   eqh3:=%:
# Developpement de Taylor autour de t=n+1/2
> k:=6:
> U(x,y,t-dt/2)=convert(mtaylor(U(x,y,t-dt/2),[dt],k),diff):
  S1:=%:
> U(x,y+dy,t-dt/2)=convert(mtaylor(U(x,y+dy,t-dt/2),[dy,dt],
  k),diff): S2:=%:
> U(x,y-dy,t-dt/2)=convert(mtaylor(U(x,y-dy,t-dt/2),[dy,dt],
  k),diff):S3:=%:
> U(x+dx,y,t-dt/2)=convert(mtaylor(U(x+dx,y,t-dt/2),[dx,dt],
  k),diff):S4:=%:
> U(x-dx,y,t-dt/2)=convert(mtaylor(U(x-dx,y,t-dt/2),[dx,dt],
  k),diff):S5:=%:
> U(x,y+dy,t)=convert(mtaylor(U(x,y+dy,t),[dy],k),diff):
  S6:=%:
> U(x,y-dy,t)=convert(mtaylor(U(x,y-dy,t),[dy],k),diff):
  S7:=%:
> U(x+dx,y,t)=convert(mtaylor(U(x+dx,y,t),[dx],k),diff):
  S8:=%:
> U(x-dx,y,t)=convert(mtaylor(U(x-dx,y,t),[dx],k),diff):
  S9:=%:
> U(x,y,t+dt/2)=convert(mtaylor(U(x,y,t+dt/2),[dt],k),diff):
  S10:=%:
> U(x,y+dy,t+dt/2)=convert(mtaylor(U(x,y+dy,t+dt/2),[dy,dt],
  k),diff):S11:=%:
> U(x,y-dy,t+dt/2)=convert(mtaylor(U(x,y-dy,t+dt/2),[dy,dt],
  k),diff):S12:=%:
> U(x+dx,y,t+dt/2)=convert(mtaylor(U(x+dx,y,t+dt/2),[dx,dt],
  k),diff):S13:=%:
> U(x-dx,y,t+dt/2)=convert(mtaylor(U(x-dx,y,t+dt/2),[dx,dt],
  k),diff): S14:=%:
# substitution dans l'équation discrete - equation exacte
> subs(S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,eqh3)-
  (lhs(eq)-rhs(eq)):
> simplify(%):collect(%,{dt,dx,dy});
# Schema d'ordre 2 en dt,dx et dy

Pour cela on fait la demi somme des deux équations (4.44 et 4.45) pour obtenir une équation discrète équivalente à l'équation exacte (4.26) (ligne 3):


$\displaystyle \frac{u_{i,j}^{n+1}-u_{i,j}^{n}}{dt}$ $\displaystyle =$ $\displaystyle -V_{1}\left(\frac{u_{i+1,j}^{*}-u_{i-1,j}^{*}}{2dx}\right)$ (4.52)
  $\displaystyle -$ $\displaystyle \frac{V_{2}}{2}\left(\frac{u_{i,j+1}^{n}-u_{i,j-1}^{n}}{2dy}+\frac{u_{i,j+1}^{n+1}-u_{i,j-1}^{n+1}}{2dy}\right)$  
  $\displaystyle +$ $\displaystyle \kappa\left(\frac{u_{i+1,j}^{*}-2u_{i,j}^{*}+u_{i-1,j}^{*}}{dx^{2}}\right)$  
  $\displaystyle +$ $\displaystyle \frac{\kappa}{2}\left(\frac{u_{i,j+1}^{n}-2u_{i,j}^{n}+u_{i,j-1}^{n}}{dy^{2}}+\frac{u_{i,j+1}^{n+1}-2u_{i,j}^{n+1}+u_{i,j-1}^{n+1}}{dy^{2}}\right)$  

En comparant cette équation (4.52) au schéma de Cranck Nicholson (4.37), on peut retrouver ce dernier en remplaçant simplement dans (4.52) les valeurs de \bgroup\color{black}$ u_{i,j}^{*}$\egroup par la moyenne \bgroup\color{black}$ \frac{1}{2}(u_{i„j}^{n}+u_{i,j}^{n+1})$\egroup . Ce schéma ADI est donc bien équivalent au schèma de Cranck Nicolson. Les valeurs intermédiaires \bgroup\color{black}$ u_{i,j}^{*}$\egroup sont des approximations de la solution à \bgroup\color{black}$ t=(n+\frac{1}{2})dt$\egroup .

Dans l'équation équivalente (4.52), on substitue la solution approchée par la solution exacte (lignes 6 à 15), et on effectue des développements limités autour de \bgroup\color{black}$ u_{i,j}^{*}=u(idx,jdy,(n+\frac{1}{2}))$\egroup (lignes 18 à 45). Après soustraction de l'équation exacte, on obtient l'erreur de troncature \bgroup\color{black}$ E_{t}$\egroup , qui est en \bgroup\color{black}$ O(dt^{2},dx^{2},dy^{2})$\egroup .

Le schéma ADI (4.44 et 4.45) est donc consistant avec l'équation exacte (4.26), et est d'ordre 2 en temps et en espace, i.e. en \bgroup\color{black}$ O(dt^{2},dx^{2},dy^{2})$\egroup .

4.4.5 Expérimentation numérique avec Matlab

Le programme Matlab (4.4.5) implémente le schéma ADI en utilisant une programmation matricielle.


programme Matlab 4.4.5: Résolution numérique de l'équation (4.27)

% resolution ADI
clear
% maillage
L=1; H=1;
Nx=51; dx=L/(Nx-1); X=[0:dx:L];
Ny=51; dy=H/(Ny-1); Y=[0:dy:H];
% champ vitesse
v1=1; v2=1;
% parametres
kappa=0.01; dt=0.001; Tf=0.5; nit=round(Tf/dt)
% champ initial
delta=(0.1)^2; x0=L/4; y0=H/4;
Ui=exp(-(X-x0).^2/delta)'*exp(-(Y-y0).^2/delta);
Un=Ui; Us=Ui; Un1=Ui;
% matrices 3D
I1=ones(1,Nx); I2=ones(1,Ny);
A1 =[-kappa/dx^2-v1/(2*dx);  2/dt+2*kappa/dx^2; ...
     -kappa/dx^2+v1/(2*dx)]*I1;
C1=[  kappa/dy^2+v2/(2*dy);  2/dt-2*kappa/dy^2; ...
      kappa/dy^2-v2/(2*dy)]*I1;
A2 =[-kappa/dy^2-v2/(2*dy);  2/dt+2*kappa/dy^2; ...
     -kappa/dy^2+v2/(2*dy)]*I2;
C2=[  kappa/dx^2+v1/(2*dx);  2/dt-2*kappa/dx^2; ...
      kappa/dx^2-v1/(2*dx)]*I2;
% C.L de Dirichlet en i=1 j=1
A1(:,1)=0; A1(2,1)=1; C1(:,1)=0;
A2(:,1)=0; A2(2,1)=1; C2(:,1)=0;
% C.L de Neumann sur les frontieres i=Nx j=Ny
A1(1,Nx)=A1(1,Nx)+A1(3,Nx);  A1(3,Nx)=0;
A2(1,Ny)=A2(1,Ny)+A2(3,Ny);  A2(3,Ny)=0;
% iterations en temps
for it=1:nit
    % 1ere etape ADI
    Us(1:Nx,1)=0;
    for j=2:Ny-1
      B1=C1(1,1:Nx)'.*Un(1:Nx,j-1)+C1(2,1:Nx)'.*Un(1:Nx,j)+...
         C1(3,1:Nx)'.*Un(1:Nx,j+1);
      Us(1:Nx,j)=tridiag(A1,B1);
    end;
    B1=C1(2,1:Nx)'.*Un(1:Nx,Ny)+(C1(1,1:Nx)+...
       C1(3,1:Nx))'.*Un(1:Nx,Ny-1);
    Us(1:Nx,Ny)=tridiag(A1,B1);
    % 2nd etape ADI
    Un1(1,1:Ny)=0;
    for i=2:Nx-1
      B2=C2(1,1:Ny)'.*Us(i-1,1:Ny)'+C2(2,1:Ny)'.*Us(i,1:Ny)'+...
         C2(3,1:Ny)'.*Us(i+1,1:Ny)';
      Un1(i,1:Ny)=tridiag(A2,B2)';
    end;
    B2=C2(2,1:Ny)'.*Us(Nx,1:Ny)'+...
       (C2(1,1:Ny)+C2(3,1:Ny))'.*Us(Nx-1,1:Ny)';
    Un1(Nx,1:Ny)=tridiag(A2,B2)';
    % iteration suivante
    Un=Un1;
end;

Les paramètres du calcul sont définis aux lignes 4 à 10. Les matrices tridiagonales sont construites sur les lignes 17 à 24, puis on applique les conditions aux limites (lignes 26 à 30).

La boucle en temps (lignes 32 à 55) inclus les deux étapes ADI et utilise la fonction tridiag (lin3D) pour la résolution des systèmes linéaires tri-diagonaux.

4.4.5.0.1 Mode propre de diffusion:

Pour valider ce programme, nous avons tout d'abord simuler la diffusion du mode propre (4.36) \bgroup\color{black}$ p=1$\egroup et \bgroup\color{black}$ q=1$\egroup avec un maillage de \bgroup\color{black}$ N_{x}=N_{y}=51$\egroup points dans chaque direction et un paramètre \bgroup\color{black}$ \kappa=0.01$\egroup . La solution calculée au bout d'un temps \bgroup\color{black}$ T_{f}=0.5$\egroup avec \bgroup\color{black}$ dt=0.01$\egroup est tracée sur la figure (4.19). L'allure de la solution (figure 4.19a) coïncide bien avec la solution exacte (figure 4.17a) , ce que confirme le tracé de l'évolution temporelle de la solution au point \bgroup\color{black}$ x=1$\egroup , \bgroup\color{black}$ y=1$\egroup comparée à la solution exacte (figure 4.19b).

Figure 4.19: solution de diffusion avec le schéma ADI (mode propre $ p=1$ , $ q=1$ )
[$ t=0.5$ ]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solhdif}[Amplitude en x=1 et y=1]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solhdif1}

Pour tester la précision d'intégration en temps du schéma, nous avons calculer l'erreur au point ( \bgroup\color{black}$ x=1$\egroup , \bgroup\color{black}$ y=1$\egroup ) au bout du temps \bgroup\color{black}$ T_{f}=4$\egroup (de l'ordre du temps caractéristique de diffusion), en fonction du pas d'intégration en temps \bgroup\color{black}$ dt$\egroup . Le résultat de la figure (4.20a) montre que pour les pas en temps choisis l'erreur est quasiment indépendante du pas en temps \bgroup\color{black}$ dt$\egroup , et est donc essentiellement une erreur de discrétisation spatiale. On note que les pas en temps choisis sont tels que le pas en temps est beaucoup plus faible que le temps caractéristique de diffusion: \bgroup\color{black}$ dt\ll\tau_{d}\approx4.5$\egroup

Figure 4.20: Erreur numérique du schéma ADI (cas de diffusion)
[Erreur temporelle $ N=51$ ]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/errhdif}[erreur spatiale $ dt=0.1$ ]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/errhdif1}

Nous l'avons vérifié en faisant varier le nombre de points du maillage de \bgroup\color{black}$ N_{x}=N_{y}=11$\egroup à \bgroup\color{black}$ N_{x}=N_{y}=101$\egroup avec un pas en temps \bgroup\color{black}$ dt=0.1$\egroup fixé. L'évolution de l'erreur en fonction du pas de discrétisation spatiale \bgroup\color{black}$ h=dx=dy$\egroup est tracée sur la figure (4.20b), et on constate que l'erreur décroît en \bgroup\color{black}$  O(h^{2})$\egroup .

Pour cette condition initiale, nous avons aussi fait une simulation avec une vitesse de convection non nulle \bgroup\color{black}$ (V_{1}=V_{2}=1)$\egroup . Ce cas correspond à un nombre de Péclet \bgroup\color{black}$ P_{e}=200$\egroup . Les iso-valeurs de la solution sont tracées sur la figure (4.21).

Figure 4.21: Iso-valeurs de la solution (cas de convection-diffusion)
[$ t=0$ ]\includegraphics[width=0.2\paperwidth,keepaspectratio]{CHAP4/solhconv0}[$ t=0.25$ ]\includegraphics[width=0.2\paperwidth,keepaspectratio]{CHAP4/solhconv1}[$ t=0.5$ ]\includegraphics[width=0.2\paperwidth,keepaspectratio]{CHAP4/solhconv2}

On note la convection sans déformation de la solution initiale, ce qui confirme que la condition aux limites sur \bgroup\color{black}$ \Gamma_{1}$\egroup autorise la sortie des structures hors du domaine. On a aussi comparé l'évolution temporelle du maximum de la solution exacte de diffusion et du maximum de la solution calculée, que l'on a tracé sur la figure (4.22a). On vérifie ainsi que la décroissance de la solution est une décroissance visqueuse.

Figure 4.22: Erreur numérique du schéma ADI
[Evolution temporelle]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solhconv3}[Erreur fonction de $ dt$ ]\includegraphics[width=0.2\paperwidth,keepaspectratio]{CHAP4/solhconv4}

Nous avons ensuite étudié l'influence du pas d'intégration en temps \bgroup\color{black}$ dt$\egroup , en traçant sur la figure (4.22b) l'écart en fonction de \bgroup\color{black}$ dt$\egroup entre le maximum de la solution exacte de diffusion et le maximum de la solution calculée. On constate que cet écart croît rapidement en dessus d'une valeur \bgroup\color{black}$ dt=0.1$\egroup . Cette valeur est justement de l'ordre de grandeur du temps caractéristique de convection \bgroup\color{black}$ \tau_{c}\approx0.2$\egroup .

En conclusion sur cette simulation, on note que le choix des paramètres numériques a été fixé par la physique du problème, et non par des conditions numériques de stabilité:

  1. la maillage $ N_{x}=N_{y}=51$ permet de décrire finement la condition initiale
  2. le pas en temps $ dt=0.01$ vérifie $ dt\ll\tau_{d}$ et $ dt\ll\tau_{c}$ .

4.4.5.0.2 Convection d'une gaussienne:

Le second cas de calcul correspond à la condition initiale gaussienne (4.31), avec les mêmes paramètres qu'au paragraphe c4gpar.

Figure 4.23: Convection d'une gaussienne
[solution numérique à $ t=0$ et $ t=0.5$ ]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solhcdif}[Amplitude]\includegraphics[width=0.25\paperwidth,keepaspectratio]{CHAP4/solhcdif1}

Pour un maillage \bgroup\color{black}$ N_{x}=N_{y}=51$\egroup et un pas en temps \bgroup\color{black}$ dt=0.01$\egroup , on a tracé sur la figure (4.23a) la solution à \bgroup\color{black}$ t=0$\egroup et à \bgroup\color{black}$ t=0.5$\egroup . Cette solution se compare très bien avec la solution exacte tracée sur la figure (4.16). On a aussi comparé l'évolution temporelle de l'amplitude de la tache gaussienne calculée avec le schéma ADI avec l'expression analytique (4.34). Ces deux courbes coïncident, ainsi que le montre la figure (4.23b).

Figure 4.24: Convection d'une gaussienne $ (P_{e}^{h}=20)$
[isovaleurs à $ P_e^h=20$ ]\includegraphics[width=0.2\paperwidth]{CHAP4/solhcdif2}[isovaleurs à $ P_e^h=2$ ]\includegraphics[width=0.2\paperwidth,keepaspectratio]{CHAP4/solhcdif2a}[profil à $ x=0.75$ ]\includegraphics[width=0.2\paperwidth,keepaspectratio]{CHAP4/solhcdif3}

Nous avons effectué une seconde simulation avec un coefficient de diffusion plus petit \bgroup\color{black}$ \kappa=0.001$\egroup . Dans ce cas, la solution numérique présente des oscillations (figure 4.24). Pour cette valeur de \bgroup\color{black}$ \kappa$\egroup , le nombre de Péclet de maille:

\bgroup\color{black}$\displaystyle P_{e}^{h}=\frac{V  h}{\kappa}$\egroup

vaut \bgroup\color{black}$ P_{e}^{h}=20$\egroup au lieu de \bgroup\color{black}$ P_{e}^{h}=2$\egroup avec la valeur de \bgroup\color{black}$ \kappa$\egroup précédente. Sur le tracé des iso-valeurs (4.24a), on constate l'apparition de légères oscillations, caractérisées par la présence de nombreuses lignes iso-valeurs \bgroup\color{black}$ u=0$\egroup , qui n'existent pas à \bgroup\color{black}$ P_{e}^{h}=2$\egroup (figure 4.24b). Le tracé d'un profil à \bgroup\color{black}$ x=0.75$\egroup (figure 4.24c) montre bien l'apparition d'une oscillation numérique au pied de la tache gaussienne. Ces oscillations numériques sont de même nature que celles étudiées au paragraphe c3centre du chapitre précédent. Elles apparaissent dès que le Péclet de maille \bgroup\color{black}$ P_{e}^{h}$\egroup devient plus grand que 2 et indiquent que le maillage n'est plus suffisamment fin pour capter la solution de convection avec ce schéma centré.


Pr. Marc BUFFAT
marc.buffat@univ-lyon1.fr
2008-04-07