Previous Up Next

Chapter 4  codits




0.1  Fonction

Ce sous-programme, appelé entre autre par preduv , turbke , covofi , resrij , reseps , ..., résout les équations de convection-diffusion d’un scalaire a avec termes sources du type : ρ u, fsexp et fsimp désignent respectivement le flux de masse, les termes sources explicites et les termes linéarisés en an+1. a est un scalaire défini sur toutes les cellules1. Par souci de clarté on suppose, en l’absence d’indication, les propriétes physiques Φ (viscosité totale µtot,...) et le flux de masse u) pris respectivement aux instants nΦ et nF, où θΦ et θF dépendent des schémas en temps spécifiquement utilisés pour ces grandeurs2.
L’écriture des termes de convection et diffusion en maillage non orthogonal engendre des difficultés (termes de reconstruction et test de pente) qui sont contournées en utilisant une méthode itérative dont la limite, si elle existe, est la solution de l’équation précédente.

0.2  Discrétisation

Afin d’expliquer la procédure utilisée pour traiter les difficultés dues aux termes de reconstruction et de test de pente dans les termes de convection-diffusion, on note, de façon analogue à ce qui est défini dans navsto mais sans discrétisation spatiale associée, En l’opérateur : L’équation (??) s’écrit donc : La quantité En(an+1) comprend donc :
fs imp an+1, contribution des termes différentiels d’ordre 0 linéaire en an+1,
θ   div((ρuan+1) − θ   div tot grad an+1), termes de convection-diffusion implicites complets (termes non reconstruits + termes de reconstruction) linéaires3 en an+1,
fs expfs imp an et (1−θ)  div((ρ uan) − (1−θ)   div tot grad an) l’ensemble des termes explicites (y compris la partie explicite provenant du schéma en temps appliqué à la convection diffusion).

De même, on introduit un opérateur
EMn approché de En, linéaire et simplement inversible, tel que son expression contient :
la prise en compte des termes linéaires en
a,
la convection intégrée par un schéma décentré amont (upwind) du premier ordre en espace,
les flux diffusifs non reconstruits.
Cet opérateur permet donc de contourner la difficulté induite par la présence d’éventuelles non linéarités introduites par l’activation du test de pente lors du schéma convectif, et par le remplissage important de la structure de la matrice découlant de la présence des gradients propres à la reconstruction.
On a la relation
4, pour toute cellule ΩI de centre I : On cherche à résoudre : Soit : On va pour cela utiliser un algorithme de type point fixe en définissant la suite (an+1, k)kIN5: δ an+1, k+1 est solution de : Soit encore, par linéarité de EMn :

Cette suite, couplée avec le choix de l’opérateur En, permet donc de lever la difficulté induite par la présence de la convection (discrétisée à l’aide de schémas numériques qui peuvent introduire des non linéarités) et les termes de reconstruction. Le schéma réellement choisi par l’utilisateur pour la convection (donc éventuellement non linéaire si le test de pente est activé) ainsi que les termes de reconstruction vont être pris à l’itération k et traités au second membre via le sous-programme bilsc2 , alors que les termes non reconstruits sont pris à l’itération k+1 et représentent donc les inconnues du système linéaire résolu par codits 6.
On suppose de plus que cette suite
(an+1, k)k converge vers la solution an+1 de l’équation (??), i.e. limk→∞ δ an+1, k = 0, ceci pour tout n donné.
(
??) correspond à l’équation résolue par codits . La matrice EM n, matrice associée à EMn est à inverser, les termes non linéaires sont mis au second membre mais sous forme explicite (indice k de an+1, k) et ne posent donc plus de problème.

Remarque 1

La viscosité µ tot prise dans EMn et dans En dépend du modèle de turbulence utilisé. Ainsi on a µ tot laminaire + µ turbulent dans EMn et dans En sauf lorsque l’on utilise un modèle Rij−ε, auquel cas on a µ tot laminaire.
Le choix de
EMn étant a priori arbitraire (EMn doit être linéaire et la suite (an+1, k)kIN doit converger pour tout n donné), une option des modèles Rij−ε (IRIJNU=1) consiste à forçer µ totn dans l’expression de EMn à la valeur µ laminairen + µ turbulentn lors de l’appel à codits dans le sous-programme navsto , pour l’étape de prédiction de la vitesse. Ceci n’a pas de sens physique (seul µ laminairen étant censé intervenir), mais cela peut dans certains cas avoir un effet stabilisateur, sans que cela modifie pour autant les valeurs de la limite de la suite (an+1, k)k.

Remarque 2

Quand codits est utilisé pour le couplage instationnaire renforcé vitesse-pression (IPUCOU=1), on fait une seule itération k en initialisant la suite (an+1, k)kIN à zéro. Les conditions de type Dirichlet sont annulées (on a INC = 0) et le second membre est égal à ρ |Ωi|. Ce qui permet d’obtenir une approximation de type diagonal de EMn nécessaire lors de l’étape de correction de la vitesse7.

0.3  Mise en œuvre

L’algorithme de ce sous-programme est le suivant :
- détermination des propriétés de la matrice
EMn (symétrique si pas de convection, non symétrique sinon)
- choix automatique de la méthode de résolution pour l’inverser si l’utilisateur ne l’a pas spécifié pour la variable traitée. La méthode de Jacobi est utilisée par défaut pour toute variable scalaire
a convectée. Les méthodes disponibles sont la méthode du gradient conjugué, celle de Jacobi, et le bi-gradient conjugué stabilisé (BICGStab) pour les matrices non symétriques. Un préconditionnement diagonal est possible et utilisé par défaut pour tous ces solveurs excepté Jacobi.
- prise en compte de la périodicité (translation ou rotation d’un scalaire, vecteur ou tenseur),
- construction de la matrice
EMn correspondant à l’opérateur linéaire EMn par appel au sous-programme matrix 8. Les termes implicites correspondant à la partie diagonale de la matrice et donc aux contributions différentielles d’ordre 0 linéaires en an+1,(i.e fsimp), sont stockés dans le tableau ROVSDT (réalisé en amont du sous-programme appelant codits ).
- création de la hiérarchie de maillage si on utilise le multigrille (
IMGRP >0 ).
- appel à
bilsc2 pour une éventuelle prise en compte de la convection-diffusion explicite lorsque θ ≠ 0.
- boucle sur le nombre d’itérations de 1 à
NSWRSM (appelé NSWRSP dans codits ). Les itérations sont représentées par k appelé ISWEEP dans le code et définissent les indices de la suite (an+1, k)k et de an+1, k)k.
Le second membre est scindé en deux parties :
    un terme, affine en
an+1, k−1, facile à mettre à jour dans le cadre de la résolution par incrément, et qui s’écrit :
    les termes issus de la convection/diffusion (avec reconstruction) calculée par
bilsc2 .

La boucle en k est alors la suivante :

Fin de la boucle.

0.4  Points à traiter


Approximation EMn de l’opérateur En
D’autres approches visant soit à modifier la définition de l’approximée, prise en compte du schéma centré sans reconstruction par exemple, soit à abandonner cette voie seraient à étudier.

Test de convergence
La quantité définissant le test de convergence est également à revoir, éventuellement à simplifier.


Prise en compte de Tsimp
Lors de la résolution de l’équation par
codits , le tableau ROVSDT a deux fonctions : il sert à calculer la diagonale de la matrice (par appel de matrix ) et il sert à mettre à jour le second membre à chaque sous-itération de la résolution en incréments. Or, dans le cas où Tsimp est positif, on ne l’intègre pas dans ROVSDT, afin de ne pas affaiblir la diagonale de la matrice. De ce fait, on ne l’utilise pas pour mettre à jour le second membre, alors que ce serait tout à fait possible. Au final, on obtient donc un terme source traité totalement en explicite (Tsexp+Tsimpan), alors que la résolution en incréments nous permettrait justement de l’impliciter quasiment totalement (Tsexp+Tsimpan+1,kfin−1, où kfin est la dernière sous-itération effectuée).
Pour ce faire, il faudrait définir deux tableaux
ROVSDT dans codits .


1
a, sous forme discrète en espace, correspond à un vecteur dimensionné à NCELET de composante aI, I décrivant l’ensemble des cellules.
2
cf. introd
3
Lors de la discrétisation en espace, le caractère linéaire de ces termes pourra cependant être perdu, notamment à cause du test de pente.
4
On pourra se reporter au sous-programme matrix pour plus de détails relativement à EMdisc, opérateur discret agissant sur un scalaire a.
5
Dans le cas ou le point fixe en vitesse-pression est utilisé (NTERUP> 1) an+1,0 est initialisé par la dernière valeur obtenue de an+1.
6
cf. le sous-programme navsto .
7
cf. le sous-programme resolp .
8
On rappelle que dans matrix , la convection est traitée, quelque soit le choix de l’utilisateur, avec un schéma décentré amont d’ordre 1 en espace et qu’il n’y a pas de reconstruction pour la diffusion. Le choix de l’utilisateur quant au schéma numérique pour la convection intervient uniquement lors de l’intégration des termes de convection de En, au second membre de (??) dans le sous-programme bilsc2 .

Previous Up Next