• Aucun résultat trouvé

5.2 Commentaires complémentaires : erratum

Nous avons réalisé après publication qu’une erreur s’était glissée dans l’équation (44). En effet, ce n’est pas cette équation qui a été utilisée dans nos calculs et qui permet d’obtenir des résultats stables. L’équation utilisée dans nos calculs de l’article est très légèrement différente dans la forme, mais ce changement a une influence notable :

b gαf(x, t) = geq,fα (x, t) + 1 − ˜ ∆t ˜ τg ! h R(gαneq,f)(x, t)i+ O(∆t3) (5.1)

La différence est que dans cette formule, qui n’est en fait autre que la formule classique de [Lag+12;TRL14], est que c’est la totalité de la fonction hors équilibre pré-collision qui est filtrée et non uniquement l’opérateur de collision. Cette situation a été entièrement traitée sur le plan analytique dans la section4.1.2.

En matière de stabilité, un filtrage de l’opérateur de collision lors de la procédure de transfert du maillage fin vers le maillage grossier (Eq. (44) de l’article) fournit un schéma instable, alors que l’équation (5.1) fournit un schéma bien plus stable, et ce avec la même limite hydrodynamique à l’ordre 1 en nombre de Knudsen et à l’ordre 2 en espace-temps. Le lecteur est renvoyé à la section4.1.2pour une comparaison entre les effets de l’équation (44) de l’article et ceux de l’équation (5.1) en matière d’ordre de précision et de viscosité effective.

La formule (41) est également erronnée, elle est à remplacer par

fα(x, t) = 2

5fα(x + ey∆x, t) + 2fα(x − 2ey∆x, t) − 2fα(x − 3ey∆x, t) +3

Chapitre 6

Étude et amélioration d’un

algorithme cell-vertex classique

6.1 Présentation et commentaires sur l’algorithme de base

utilisé

6.1.1 Introduction : configuration géométrique

Tout algorithme de raffinement basé sur la méthode de Boltzmann sur réseau au sens strict (algorithme collision-propagation sur un réseau) implique, on l’a vu, l’utilisation de grilles cartésiennes formées de cubes (carrés en 2D). Par conséquent, si on note avec l’exposant c les quantités liées au maillage grossier (coarse) et f celles liées au maillage fin, on a nécessairement ∆xc= 2n∆xf avec un entier n ≥ 1. Le cas n = 1 étant déjà très violent numériquement, on choisit toujours ∆xc= 2∆xf.

L’algorithme de raffinement sur lequel nous basons notre travail pour la suite de ce mémoire est celui utilisé par Touil et al. dans [TRL14]. Le même algorithme existe avec une fonction de transfert du maillage fin vers le maillage grossier différente dans le travail de Lagrava et al. [Lag+12].

Ces algorithmes sont basés sur une structure de données de type cell-vertex (données situées au coin des cellules), par opposition aux structures de données de type cell-centered (données situées au centre des cellules). Si la manière d’organiser les données n’affecte pas l’algorithme en maillage uniforme standard, l’impact sur la physique et l’algorithmique de la procédure de raffinement est important. Nous présentons les deux géométries sur la figure 6.1. Les géométries sont affichées en deux dimensions pour plus de clarté. La géométrie tri-dimensionnelle ne présente pas de spécificité particulière et est trouvable dans

[TRL14]. Il apparaît clairement que pour un maillage donné, la géométrie du raffinement

est très différente entre les deux architectures. On remarque en particulier que dans le cas d’une structure cell-vertex, certains nœuds du maillage fin (fine) et grossier (coarse) sont co-localisés.

Notre solveur étant basé sur une formulation cell-vertex, nous avons pour contrainte d’utiliser cette structure de donnée. Nous utilisons une formulation dite "à une maille grossière de recouvrement" (ce qui est aussi classiquement le cas dans les algorithmes cell-centered), c’est à dire que les maillages fins et grossiers se chevauchent sur une distance équivalente à ∆xc (voir figure 6.1). Notons que notre article dans Physical Review E présenté auparavant, qui repose sur une structure cell-vertex, n’est pas basé sur ce principe.

Figure 6.1 – Géométrie 2D d’un raffinement de maillage pour les structures de données

cell-vertex et cell-centered. Ces deux cas correspondent à des structures dites "à une maille grossière de recouvrement".

6.1.2 Algorithme de base cell-vertex

Nous résumerons dans cette section l’algorithme utilisé et en détaillerons les étapes dans les sections suivantes. Nous présentons sur la figure 6.2 les symboles et les codes couleur que nous utiliserons pour décrire l’algorithme

L’algorithme classique de [TRL14;Lag+12] sera résumé ici. En dehors des spécificités liées aux méthodes d’interpolation et de transfert du maillage fin vers le maillage grossier qui peuvent varier d’un modèle à l’autre, le principe de base de cet algorithme se retrouve dans tout algorithme de type cell-vertex.

Nous partons d’un état de référence t0 où les fonctions de collision sont connues en tout point du maillage. Cette situation englobe le cas particulier où t0 est le pas de temps initial. Le principe des algorithmes de raffinement est que les grilles fines et grossières ne sont synchronisées qu’un pas de temps sur deux. En effet, en vertu de la condition CFL en scaling acoustique, ∆xc = 2∆xf implique ∆tc = 2∆tf. Il faut donc deux fois plus d’itérations sur le maillage fin que sur le maillage grossier pour un même temps physique simulé. L’itération à laquelle les deux grilles sont synchronisées sera nommée itération paire et celle où le maillage grossier est en avance d’un pas de temps sur le maillage fin sera nommée itération impaire. Pour cet algorithme, nous comptons le temps à l’échelle du maillage fin, c’est à dire que pour un entier n quelconque, t + n correspond, en unités dimensionnelles, à t + n∆tf.

6.1. PRÉSENTATION ET COMMENTAIRES SUR L’ALGORITHME DE BASE

UTILISÉ 149

Figure 6.2 – Géométrie 2D d’un raffinement de maillage pour la structure cell-vertex et familles

de nœuds utiles à la description de l’algorithme.

leurs q voisins et obéissant à l’algorithme de collision-propagation LBM standard : il s’agit des nœuds , et

N

f. Bien qu’ils obéissent aussi à l’algorithme LBM standard, nous excluons les nœuds cde cette catégorie car ils font géométriquement partie de l’interface et ne sont donc pas à proprement parler internes.

Rappelons enfin que chaque étape de propagation pour un maillage donné utilise les échelles spatiales et temporelles qui lui correspondent : par exemple pour l’échelle spatiale, c1 = (0, 0, 1) correspond à (0, 0, ∆xf) pour une propagation sur un nœud fin, mais à (0, 0, ∆xc= 2∆xf) pour une propagation sur un nœud grossier. De même, pour un temps t quelconque, l’étape de propagation pour un nœud grossier utilise les fonctions de collision voisines à t pour calculer la fonction de distribution à t + 2, contre respectivement t et t + 1 pour un nœud fin.

1. État de référence −→ Grille fine : t = t0; Grille grossière : t = t0

a) Les fonctions de collision sont connues en tout point. Au cas où t0 est l’étape initiale, on initialise souvent les fonctions de collision à leur valeur à l’équilibre (éventuellement, on peut utiliser une formule régularisée [Gen+17]).

2. Itération impaire −→ Grille fine : t = t0+ 1 ; Grille grossière : t = t0+ 2

a) Propagation pour les nœuds internes (fins et grossiers) ainsi que pour les nœuds

c.

b) Calcul des fonctions de distribution à t = t0+ 1 aux nœuds f par rescaling et interpolation temporelle (Sec. 6.2.2).

c) Calcul des fonctions de distribution à t = t0+ 1 aux nœuds par interpolation spatiale à l’aide des nœuds f (Sec.6.2.2).

d) Calcul des fonctions de collision pour tous les nœuds fins.

3. Itération paire −→ Grille fine : t = t0+ 2 ; Grille grossière : t = t0+ 2 a) Propagation pour tous les nœuds fins internes.

b) Calcul des fonctions de distribution à t = t0+ 2 aux nœuds f par rescaling de l’information du nœud c(Sec.6.2.2).

c) Calcul des fonctions de distribution à t = t0+ 2 aux nœuds par interpolation spatiale à l’aide des nœuds f (Sec.6.2.2).

d) Calcul des fonctions de distribution aux nœuds

N

c par filtrage et rescaling à partir du nœud

N

f et des nœuds voisins (Sec. 6.2.3).

e) Calcul des fonctions de collision en tout point. 4. Répéter les étapes (2) et (3) jusqu’à la fin du calcul.