• Aucun résultat trouvé

Représentation du gaz

Dans le document Disponible à / Available at permalink : (Page 99-106)

1. Représentation du gaz

91

0 «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)