1. Représentation du gaz
910 «6(0) «5(0) «4(0) «3(0) «2(0) «i(0) «0(0) 0
0 «6(1) «5(1) «4(1) «3(1) «2(1) «i(l) «o(l) 1
0 «6(2) «5(2) «4(2) «3(2) «2(2) «i(2) «0(2) 1 2
0 «6(3) «5(3) «4(3) «3(3) «2(3) «i(3) «o(3) 1 3
0 «6(4) «5(4) «4(4) «3(4) «2(4) «1(4) «0(4) 4
0 «6(5) «5(5) «4(5) «3(5) «2(5) «1(5) «0(5) 1 5
0 «6(6) «5(6) «4(6) «3(6) «2(6) «1(6) «0(6) 1 6
0 «6(7) «5(7) «4(7) «3(7) «2(7) «i(7) «o(7) 7
Figure 17: Le mode de représentation par nœud d’un réseau de 8 noeuds pour un
modèle à 6 = 7 vitesses deins le cas d’un processeur accédant à la mémoire par
mots de u; = 8 bits. Chaque nœud du réseau est associé à une case mémoire dont
un bit est inutilisé dans ce cas. La lecture de l’état d’un nœud ne nécessite qu’un
seul accès mémoire, mais la propagation des particules est compliquée car les
différents bits d’un même mot se déplacent différemment. Ce mode de stockage
n’impose aucune contrainte sur les tailles du réseau dans chaque direction.
«o(7)
«0(6)«0(5) «0(4) «0(3) «0(2) «0(1) «o(0)
1 «i(7)
«1(6)«1(5) «i(4) «i(3) «1(2) «l(l) «1(0)
«2(7)
«2(6)«2(5) «2(4) «2(3) «2(2) «2(1) «2(0)
1 «3(7)
«3(6)«3(5) «3(4) «3(3) «3(2) «3(1) «3(0)
1 «4(7)
«4(6)«4(5) «4(4) «4(3) «4(2) «4(1) «4(0)
1 ns(7)
«5(6)«5(5) «5(4) «5(3) «5(2) «5(1) «5(0) 1
«6(7) «6(6) «6(5) «6(4) «6(3) «6(2) «6(1) «6(0)
0
1
2
3
4
5
6
Figure 18: Le mode de représentation par vitesse d’un réseau de 8 nœuds pour
un modèle à 6 = 7 vitesses dans le cas d’un processeur accédrint à la mémoire
par mots de tü = 8 bits. Chaque case mémoire ne contient que des particules se
déplaçant toutes dans la même direction. Ceci permet de réaliser l’opération de
propagation en déplaçant des mots complets de la mémoire, mais complique la
phaise de collision puisque les différents liens d’un même nœud sont stockés dans
des cases mémoires différentes. Il est donc nécessaire, soit de réassembler ces bits
pour réaliser les collisions, soit d’utiliser des algorithmes de collisions particuliers
décrits dans la section 2.a. Il est également préférable pour utiliser ce mode de
rangement que l’une des tailles du réseau soit un multiple de la longueur du mot
machine w afin de simplifier la gestion des conditions de bords.
mot mémoire (fig. 17), l’état n, du lien i correspondant au bit i du mot. Dans le cas
de modèles à plusieurs espèces, tous les bits Si seront rangés dans un même mot.
Ceci signifie que l’état complet d’un nœud peut être obtenu en faisant un seul accès
mémoire. Comme l’état post-collisionnel d’un nœud est complètement déterminé par
la donnée de son état pré-collisionnel, l’étape de collision pourra être réalisée très
simplement dans cette représentation (nous devons essentiellement disposer d’une
“fonction” qui, à partir de l’état actuel encodé dans un mot machine, nous donne
l’état après collision ; nous verrons dans la section 2.a comment une telle fonction
peut être obtenue). Par contre, l’étape de propagation est relativement compliquée
car chacun des bits d’un même nœud se déplace de manière différente. Nous al
lons donc devoir au cours de l’étape de propagation isoler chacune des directions
d’un même mot et les déplacer indépendamment, ce qui ralentit fortement cette
opération. Les mesures de l’état du gaz sont évidemment très simples puisque toutes
les informations décrivant l’état en un point sont stockées dans un seul mot. De
plus, ce mode de stockage est très naturel, ce qui facilite l’écriture des programmes.
Si la longueur des mots machine w est nettement plus grande que le nombre de
directions 6, il est utile pour économiser la mémoire de placer l’état de plusieurs
nœuds dans un même mot machine. Ceci complique l’étape de collision puisqu’il est
alors nécessaire d’isoler chacun des nœuds par des opérations de masquage, mais
réduit également le nombre d’accès mémoire nécessaire pour traiter un réseau de
taille donnée ; cette réduction est particulièrement importante pour les processeurs
rapides où les temps d’accès mémoire sont plus longs que les temps d’exécution
d’une instruction et représentent une part importante du temps total de calcul. Si le
nombre de directions b n’est pas un diviseur exact de la longueur des mots machine,
nous allons évidemment perdre des bits dans cette représentation, mais les pertes
sont en général faibles (les cas les plus défavorables rencontrés jusqu’à présent sont
le modèle FHP-I {b = 6) simulé avec une longueur de mots de 8 bits et le modèle
FCHC à 24 vitesses simulé en plaçant deux nœuds dans un mot de 64 bits, qui
conduisent chacun à une perte de 25% d’espace mémoire).
Dans le mode de rangement par vitesse, tous les bits d’un même mot mémoire
représentent l’état de liens correspondant à la même vitesse microscopique c,. Cha^
cun des b liens d’un nœud est donc placé dans une case mémoire différente, mais
à la même position de bit dans un mot (fig. 18). Les bits représentant la présence
d’espèces différentes dans une même direction peuvent être adjacents dans un même
mot (c’est en général le système le plus efficace) ou peuvent être placés dans des mots
mémoire consécutifs ; il est également possible de les disposer dans des tableaux
complètement disjoints, mais accédés en parallèle. Le mode de représentation par
vitesse accélère énormément l’étape de propagation puisque, tous les bits d’un mot
mémoire se déplaçant de la même manière, nous pouvons réaliser le mouvement
des particules en transférant des mots entiers d’une adresse mémoire à une autre
sans aucune opération de masquage* ; non seulement ceci élimine une partie des
‘Avec une représentation optimale, une seule opération de décalage des bits dans un mot est nécessaire au cours du déplacement afin de réaliser des conditions de bords périodiques. Ce décalage peut être réalisé habituellement en une seule instruction machine (rotation circulaire des bits d’un
1. Représentation du gaz 93
opérations nécessaires au déplacement de chaque nœud, mais procure un gain en
vitesse d’un facteur w (typiquement 32 ou 64) puisque nous déplaçons tous les liens
contenus dans un mot en une seule opération. Pour faciliter la gestion des con
ditions de bord, il est cependant préférable que la taille du réseau dans une des
directions de l’espace soit toujours un multiple de la longueur des mots machines w ;
en général, ceci n’est pas une contrainte gênante (les autres directions de l’espace
peuvent avoir une taille quelconque). L’étape de collision est par contre fortement
compliquée dans cette disposition des bits puisque nous devons accéder à plusieurs
mots mémoire pour déterminer l’état d’un nœud. Une approche simple est de recon
stituer l’état de chacun des w nœuds contenus dans b mots mémoire consécutifs en
utilisant des opérations de décalage et de masques logiques, ensuite de faire appel à
la même “fonction de collision” que dans le mode de représentation par nœud. Cette
technique de “recollage des bits” (qui doit être suivie d’une reséparation des bits de
l’état post-collisionnel déterminé) doit être utilisée quand la fonction de collision
est complexe et nécessite de disposer de l’état complet d’un nœud pour déterminer
la configuration après collision. Dans le c«is des modèles bidimensionnels HPP et
FHP à une seule espèce, nous verrons dans la section 2.a qu’il est possible d’écrire
la fonction de collision uniquement à partir d’opérations logiques Booléennes en
tre les occupations des différentes directions. Nous pouvons alors éviter de séparer
les bits de nœuds différents qui apparaissent dans un mot mémoire et réaliser les
collisions sur w nœuds en parallèle puisque les opérations logiques sont toujours
effectuées indépendamment sur tous les bits d’un mot. Les opérations de mesure
locales nécessitent toujours quant à elles de reconstituer l’état en chaque nœud
en rassemblant les bits provenant de plusieurs mots mémoire, mais les opérations
de mesures ne sont effectuées que peu fréquemment et constituent une part quasi-
négligeable du temps de calcul des simulations.
Nous avons dans ce travail utilisé aussi bien la représentation par nœud que la
représentation par vitesse. Cette dernière est beaucoup plus efficace (en temps de
calcul) lorsque les règles de collision peuvent s’exprimer par des opérations logiques,
ce qui est le cas des modèles FHP à une espèce de particule. Les simulations de
modèles à deux espèces nous ont par contre obligé à utiliser la représentation par
nœud car il ne semble pas possible d’écrire les règles de collision de ces modèles sous
forme d’expressions logiques sans utiliser un nombre énorme d’opérateurs, ce qui
augmenterait fortement le temps de calcul des opérations de collisions.
Nous devons encore, pour compléter la description de la représentation mémoire,
définir la disposition des nœuds du réseau en mémoire, ce qui est équivalent à
spécifier la correspondance entre les coordonnées d’un nœud du réseau et une adresse
mémoire. Dans le cas des modèles HPP et FCHC, une telle association est aisée à
établir car la structure carrée ou cubique du réseau se projette immédiatement sur
les structures de tableau à deux ou trois indices présentes dans la plupart des lan
gages de programmation de haut niveau. Le nœud du réseau HPP de coordonnées
(Ico, Jci) sera ainsi contenu dans la case mémoire b[I] [J]. Le même arrangement
Figure 19; Domaine de simulation d’un modèle FHP sur un réseau 6x6 lorsque le
réseau est représenté en mémoire par un tableau carré dont les indices correspon
dent aux composantes de la position suivant les deux directions non-orthogonales
Co et Cl. Le domaine simulé a dans ce cas la forme d’un losange, ce qui complique
les comparaisons avec des résultats expérimentaux ou des résultats obtenus par
d’autres méthodes numériques.
peut être utilisé pour le modèle FHP, mais conduit dans ce cas à des domaines
de simulation non-rectangulaires puisque deux vitesses c,- et Cj de ce modèle ne
sont jamais orthogonales (fig. 19). Cette forme particulière des domaines de si
mulation est gênante lorsque l’on désire reproduire des situations hydrodynamiques
classiques qui sont le plus souvent définies dans un domaine rectangulaire. Nous pou
vons définir une sous-région d’un réseau triangulaire qui s’approche d’un domaine
rectangulaire en considérant que les lignes du réseau de coordonnée verticale paire
sont toutes alignées horizontalement tandis que les lignes impaires sont décalées
horizontalement d’un demi-lien (fig. 20). Cette structure permet d’obtenir des do
maines quasi-rectangulaires tout en ne compliquant que très légèrement l’étape de
propagation des simulations. Afin de réaliser la correspondance entre le réseau de la
figure 20 et un tableau à deux dimensions, il est nécessaire de “tordre” mentalement
le réseau pour aligner les lignes paires et impaires et arriver ainsi à une structure
rectangulaire (fig. 21). Dans cette représentation, les règles de propagation des lignes
paires et impaires doivent être différentes. Sur les lignes paires (nous indiçons nos
tableaux de 0 à Z — 1 de gauche à droite et de bas en haut), les vitesses C2 et C4 de
composante horizontale Cix = —112 conduisent à un changement d’indice horizontal
de 1 unité vers la gauche tandis que les vitesses ci et C5 de composante horizontale
Cix = 1/2 se se propagent sans déplacement horizontal. Cette situation est inversée
sur les lignes impaires. Nous pouvons facilement établir la correspondance entre les
1. Représentation du gaz 95
Figure 20: Domaine de simulation d’un modèle FHP correspondant à une
sous-région de 8 x 8 nœuds d’un réseau infini qui soit aussi proche que possi
ble d’un domaine rectangulaire. Les lignes du réseau de coordonnée verticale
paire et impaire sont décalées horizontalement d’une demi-longueur de lien. La
séparation verticale entre les nœuds est \/T/2 fois plus petite que la séparation
horizontale. Les liens indiqués en pointillés correspondent aux conditions de bord
que l’on peut prendre périodiques puisqu’il est possible de tesseller l’espace avec
le domaine représenté.
coordonnées physiques (rx,ry) et les indices (I, J) comme
= (1.1)
où, pour rappel, A est le ET logique dont nous nous servons ici pour extraire le
bit le moins significatif de J qui est égal à la parité de la ligne. Il est important de
remarquer que la séparation verticale entre deux lignes du réseau est de V^/2 et
qu’il est nécessaire d’utiliser ce facteur en passant des coordonnées physiques aux
indices dans le tableau. Notons pour terminer cette section qu’il est souvent plus
efficace de représenter un tableau bidimensionnel en mémoire comme un tableau à
une dimension indicé de manière composite par K = J ♦ XSIZE -h I (XSIZE représente
la taille horizontale du réseau), ce qui permet de n’utiliser qu’un seul indice de
boucle pour effectuer les collisions et l’initialisation. La représentation du réseau
Figure 21: Représentation mémoire du réseau FHP triangulaire de la figure 20.
L’état du réseau est enregistré dans un tableau rectangulaire en déformant le
réseau sur une grille carrée. Les lignes impaires sont décalées d’un demi-lien
vers la gauche pour les aligner sur les lignes pmres. La topologie triangulaire est
maintenue cair la coordination de chaque nœud est toujours 6, mads des règles
de propagation différentes doivent être utilisées sur les lignes paires et impaires
du réseau pour compenser les décalages horizontaux entre toutes les lignes du
réseau. Cette structure pairticulière du réseau n’est utilisée que pour la mise
en mémoire et il est aisé de passer des coordonnées physiques réelles à la paire
d’indices correspondaints dans le réseau.
Dans le document
Disponible à / Available at permalink :
(Page 99-106)