• Aucun résultat trouvé

Algorithme numérique

CHAPITRE 5. ALGORITHME NUMÉRIQUE

5.1. ALGORITHME LAGRANGIEN EN DEUX DIMENSIONS

5.1.1 Évolution du front

Le choc est assimilé à une surface de discontinuité mobile de l’espace. Il est supposé se propager dans un milieu uniforme et au repos. L’extension à un milieu hétérogène et au repos est directe en suivant [107] et est résumée en sous-section 5.3.1.

Remarque 5.1

Dans le cas d’un milieu homogène et au repos, on peut assimiler le temps t à α = c+t. Dans ce cas, c+≡1 dans toute la suite.

Soit un front de choc initial, à l’instant t0, de nombre de Mach M0, potentiellement non-uniforme le long du choc, et de coordonnées dans la base cartésienne données par ~x(t0) = (x(t0), y(t0))T. La position instantanée du front ~x = (x, y)T est déterminée au moyen de l’équation d’évolution :

d~x

dt(β, t) = c+M(β, t) ~n (β, t). (5.1) On rappelle que c+ est la célérité du son en amont du choc, β est la position des rayons sur le choc et ~n est le vecteur normal unitaire au front orienté dans le sens du mouvement. L’abscisse curviligne sur le choc, s, est reliée à la coordonnée β par la relation ds = Adβ.

Le traitement des bords du choc n’est pas présenté dans un premier temps. Il fera l’objet de la sous-section 5.1.2. Le traitement des obstacles discrets est détaillé en sous-section 5.1.3. Rappelons toutefois que lorsque le choc interagit avec un obstacle, la direction du point sur la paroi est tangente à celle-ci et est imposée par le vecteur ~N= (Ny, −Nx)T

, où ~N est le vecteur normal extérieur à l’obstacle.

Le schéma numérique est basé sur la décomposition de l’évolution du front en tubes de rayon élémentaires. L’aire de ces tubes est définie géométriquement et permet de calculer la vitesse du front (le nombre de Mach M) au travers de la relation A − M :

1 A dA dt + M λ(M) M2−1 dM dt = 0. (5.2)

La figure 5.1 présente schématiquement l’idée générale de l’évolution sur un pas de temps. Soit {βi}i=1,...,N une discrétisation de la coordonnée β le long du choc. Le front de choc est approximé à l’instant t par un ensemble fini de points de cordonnées ~x (βi, t), aussi noté ~xi(t) pour simplifier :

~

x(βi, t) = ~xi(t) = (xi(t), yi(t))T

, pour i = 1, . . . , N.

À chaque point est associé un tube de rayon d’aire locale Ai(t), calculé à partir de considérations géométriques détaillées ci-après, un nombre de Mach Mi(t) et un vecteur normal ~ni(t). On définit l’abscisse curviligne discrète le long du choc (si)i=1,...,N par

si(t) =    0 si i = 1 si−1(t) + k~xi(t) − ~xi−1(t)k si i = 2, . . . , N. (5.3) Dans le cas d’un cercle, cet abscisse discrète est une approximation à l’ordre 2 de l’abscisse curviligne. L’incrément d’abscisse curviligne est noté ∆s(t) = s(t) − s (t). L’aire locale

CHAPITRE 5. ALGORITHME NUMÉRIQUE

Figure 5.1 – Schéma de la discrétisation de l’évolution du front de choc dans l’algorithme Lagrangien. Le front de choc à l’instant t est discrétisé par un ensemble fini de points ~xi. Chaque point est associé à un tube de rayon d’aire Ai permettant de calculer le nombre de Mach local Mi. Les points sont ensuite avancés à partir de l’équation d’évolution (5.6)

En 2D axisymétrique d’axe de rotation (Oy), elle est définie par :

Ai(t) = π2ν            ∆s2(t) (x2+ x1)ν si i = 1 ∆si+1(t) (xi+1+ xi)ν + ∆si(t) (xi+ xi−1)ν si i = 2, . . . , N − 1 ∆sN(t) (xN + xN −1)ν si i = N, (5.5)

avec ν = 1. Le cas 2D plan est retrouvé en fixant ν = 0.

Le nombre de Mach dans chaque tube de rayon est calculé à l’aide de la version discrète de (5.2). L’évolution de ~xi(t) est donnée par l’équation d’évolution (5.1) semi-discrétisée :

d~xi(t)

dt = c+Mi(t) ~ni(t). (5.6) Les vecteurs normaux sont déterminés suivant la procédure explicitée à l’étape 5 ci-après.

Initialisation du schéma. Soit ∆s le pas de discrétisation initial du front de choc, en mètres. Usuellement, nous prenons ∆s = 0.01. Le nombre de point N discrétisant le front est défini par ∆s = 1 N N X i=2  si(t0) − si−1(t0)= sN(t0) N .

La position du choc (~xi(t0))i=1,...,N et le nombre de Mach (Mi(t0))i=1,...,N sont donnés par la condition initiale du problème. L’abscisse curviligne discrète, l’aire associée à chaque tube de rayon et l’interpolation spline du front initial sont ensuite calculées. Cela détermine la courbe de choc dite de référence du schéma qui intervient au cours de l’évolution du front. Lorsque des points sont ajoutés ou supprimés sur la courbe courante à l’instant t, les mêmes points sont

5.1. ALGORITHME LAGRANGIEN EN DEUX DIMENSIONS

ajoutés ou supprimés sur la courbe de référence en conservant l’abscisse curviligne initiale. Ainsi, malgré une redistribution des points initiaux, l’aire initiale est conservée assurant la conservativité du schéma. Ce point sera discuté en détail à l’étape 3 ci-après.

La courbe de choc initiale est finalement formée de la courbe de référence à laquelle est ajoutée l’ensemble des vecteurs normaux au front.

Les données liées au choc sont supposées connues à l’instant t. La propagation du choc jusqu’à l’instant t + ∆t, où ∆t est le pas de temps courant, se fait au travers des six étapes qui suivent.

Étape 1 : calcul du pas de temps ∆t. Les perturbations le long du choc voyagent à la vitesse ds dt = Adβ dt = c+ s M2−1 λ(M) ,

où s est l’abscisse curviligne le long du choc. Ces perturbations ne doivent pas se propager plus loin qu’un arc élémentaire du front (condition de Courant-Friedrichs-Lewy assurant la stabilité du schéma) : ∆t ≤ ∆ts= dmin∆s c+ min i=1,...,N s λ(Mi) M2 i −1, (5.7)

où dmin est un paramètre de tolérance inférieur à 1 précisé à l’étape 3. À cette condition est ajouté un critère évitant le croisement éventuel de pseudo points portés par les vecteurs normaux. Proposition 5.1 Si ∆t ≤ ∆tc = 1 c+min i∈I  li−1 Mi−1, ki Mi  , (5.8) avec

li−1= (−−−−→xi−1xi· ~ni) (−ni−1· ~ni) − −−−−→xi−1xi· ~ni−1

(~ni−1· ~ni)2

−1 (5.9a)

ki=−(−−−−→xi−1xi· ~ni−1) (−ni−1· ~ni) − −−−−→xi−1xi· ~ni

(~ni−1· ~ni)2

−1 , (5.9b)

et I = {i = 2, . . . , N tel que li−1>0, ki>0 et |~ni−1· ~ni| 6= 1}, alors les rayons ne se croisent pas.

Cette condition est particulièrement nécessaire lorsque le choc interagit avec un obstacle ou tend à se pincer.

Preuve 5.1

Pour démontrer la condition (5.8), considérons deux points voisins distincts sur le choc

(res-CHAPITRE 5. ALGORITHME NUMÉRIQUE

S’il y a intersection, alors li−1>0 et ki>0. Le vecteur−−−−−→Xi−1Xi vérifie : −−−−−→

Xi−1Xi=−−−−→Xi−1Q −−−→

XiQ= li−1~ni−1− ki~ni.

En contractant cette relation avec ~ni−1d’une part et ~ni d’autre part, (li−1, ki) est solution du système linéaire :      −−−−−→

Xi−1Xi· ~ni−1 = li−1− ki(~ni−1· ~ni) −−−−−→

Xi−1Xi· ~ni = −ki+ li−1(~ni−1· ~ni) .

Ce système est inversible sous la condition ~ni−1· ~ni 6= ±1, et les relations (5.9a)-(5.9b) suivent.

Par la méthode d’intégration d’Euler, on considère une étape de propagation de Xi qui amènerait au point Q :

Q= Xi+ ∆t × c+Min~i.

Cela aboutit alors à ki= c+Mi∆t. De même, il vient li−1= c+Mi−1∆t. Par conséquent, si le pas de temps vérifie

∆t ≤ 1 c+ min li−1 Mi−1, ki Mi  ,

alors les incréments sur les droites (Di−1) et (Di) ne se croisent pas. Finalement, en appli-quant cette condition à l’ensemble des points du choc, la condition (5.8) est trouvée.

 Le pas de temps ∆t nécessaire à la propagation du front de choc est finalement donné par ∆t = β min (∆ts,∆tc) , (5.11) où β ∈]0, 1[ est un coefficient de sécurité choisi à β = 0.5 ici.

Étape 2 : évolution du front de choc. La propagation du front de choc de l’instant tm= t à l’instant tm+1 = t + ∆t s’effectue en intégrant (5.6) à l’aide d’un schéma en temps de type Runge-Kutta TVD d’ordre 3 [47] (RK3-TVD). On note ~xm

i , ~nm i et Mm

i les approximations des vecteurs ~xi et ~ni et du nombre de Mach Mi à l’instant tm. De la même manière, ~xm+1

i , ~nm+1 i

et Mm+1

i désignent les approximations de ces quantités à l’instant tm+1. Le schéma RK3-TVD est défini par :

~ xm1 i = ~xm i + c+∆tMm i ~nmi (5.12a) ~ xm2 i =3 4~x m i +1 4(~x m1 i + c+∆tMm1 i ~nm1 i ) (5.12b) ~xm+1i =13x~mi +23(~xm2 i + c+∆tMm2 i ~nm2 i ) , (5.12c)

pour i = 1, . . . , N. Pour chaque étape intermédiaire, les conditions aux limites (cf. sous-section 5.1.3), les vecteurs normaux et le nombre de Mach sont évalués (cf. étapes 5 et 6) dans le but d’effectuer l’étape suivante.

À l’origine, les points étaient avancés à l’aide d’un schéma Leap-Frog initialisé par un pas d’Euler explicite. Cela provoquait alors la réinitialisation de l’algorithme après chaque régularisation et/ou filtrage du front (cf. étapes 3 et 4). Contrairement à Henshaw, nous avons choisi un schéma de type Runge-Kutta du fait qu’il ne provoque pas de rupture du schéma. La zone de stabilité absolue du schéma RK3-TVD contient une partie de l’axe des imaginaires purs, évitant l’amplification des oscillations au cours de l’évolution du front de choc.

5.1. ALGORITHME LAGRANGIEN EN DEUX DIMENSIONS

Étape 3 : régularisation du front de choc. Une fois le front de choc propagé, l’espacement des points est vérifié. Des points sont insérés dans les régions expansives du choc pour maintenir une résolution acceptable, et d’autres sont supprimés dans les régions compressives dans le but d’éviter l’accumulation au niveau des choc-chocs. Cette suppression ne s’applique pas sur les points extrêmes du choc.

Pour i = 2, . . . , N, l’espacement des points doit vérifier :

dmin∆s ≤ ∆si(t + ∆t) ≤ dmax∆s, (5.13) où dmin = 1

2 et dmax = 3

2 usuellement. Si ∆si(t + ∆t) ≤ dmin∆s, le point i est supprimé. Si ∆si(t + ∆t) ≥ dmax∆s, un point intermédiaire noté ~xi−1

2 est ajouté en évaluant la spline en l’abscisse curviligne moyenne 1

2(si−1(t + ∆t) + si(t + ∆t)). Dans ce cas, les mêmes points sont ajoutés ou supprimés sur la courbe de référence afin de préserver le ratio d’aire Ai(t+∆t)

Ai(t0) .

(a) (b)

Figure 5.2 – Schéma de la courbe de choc de référence avant et après régularisation. Une redistribution de l’aire est nécessaire. Fig. (a) : Ajout d’un point intermédiaire entre ~xi−1 et

~xi. Fig. (b) : Suppression du point ~xj.

Proposition 5.2

L’aire est conservée sur la courbe de référence.

Preuve 5.2

Supposons que l’on ajoute un point entre les indices i-1 et i (cf. Fig. 5.2(a)). On note ˜Ai−1(t0) et ˜Ai(t0) les anciennes aires associées à ces points sur la courbe de référence, si−1/2(t0) =

1

2(si−1(t0) + si(t0)) l’abscisse curviligne du nouveau point, et Ai−1(t0), Ai−1/2(t0) et Ai(t0) les nouvelles aires associées. Par la définition de l’aire plane, (5.4), ces dernières sont données par

CHAPITRE 5. ALGORITHME NUMÉRIQUE

Documents relatifs