### Les graphes géométriques peuvent être utilisés pour représenter une grande variété d'états. Ces états sont dessinés dans l'espace au moyen de liens allant d'un point de l'espace à un autre.
### Les réécritures successives de ces états par un automate permettent de modéliser des phénomènes complexes.
### 'gem-graph' est un logiciel qui permet d'éditer ces états et ces réécritures (ou transitions) et d'exécuter l'automate ainsi créé pour l'observer.
##### Des flèches, éventuellement superposées, peuvent être utilisées comme liens. On parle alors de multigraphes dirigés.
### Les phénomènes complexes peuvent être définis comme ceux où un grand nombre d'objets de formes et de propriétés très diverses interagissent d'un grand nombre de façons différentes.
Même si les interactions particulières entre certains de ces objets ont pu être isolées, étudiées expérimentalement et décrites au moyen d'un modèle simple, le fonctionnement de l'ensemble est difficile à modéliser pour au moins deux raisons:
> * soit par des approximations qui ne permettent pas de décrire avec une précision suffisante certains phénomènes qui, bien que très rapides ou très localisés, ont des conséquences majeures sur l'évolution de l'ensemble.
> Ce problème est celui de la 'granularité' (temporelle et spatiale).
> * Il peut suffire, par exemple, d'une équation pour représenter une relation entre un petit nombre d'objets, mais le nombre d'équations nécessaires pour décrire toutes les relations en jeu dans l'ensemble du système est tel qu'il n'est plus possible de les résoudre simultanément.
> * Si l'on utilise un modèle numérique, un grand nombre de règles sera nécessaire. Il sera alors difficile de les écrire de façon homogène, de veiller à ce qu'elles ne se contredisent pas ou ne s'appliquent pas à des situations ou des objets pour lesquels elles n'avaient pas été conçues.
* Les règles de transition, ainsi écrites, peuvent ainsi être automatiquement évaluées, comparées, représentées, éditées et regroupées sous des formes diverses.
* Cette homogéneité d'écriture n'exclut cependant pas l'utilisation d'autres types de conditions et d'assignations élémentaires en cas d'association à d'autres modèles ou pour l'envoi de résultats de mesure (voir plus loin).
##### Parceque le référentiel privilégie certaines directions, la symétrie de rotation est perdue:
* L'utilisation d'un référentiel introduit nécéssairement des directions privilégiées qui brisent la symétrie de rotation. Le dessin d'un objet n'est alors conservé que lorsqu'il est tourné d'un angle égal à celui qui sépare ces directions. Des approximations sont donc nécessaires pour restaurer l'isotropie.
* Elle peuvent être réalisées en associant à chaque objet un ensemble de dessins 'ad hoc' différemment orientés et/ou en produisant ces dessins à partir de représentations vectorielles.
* Elles nécéssitent qu'il y ait autant de règles de transition qu'il y a de dessins d'un même objet.
##### Des annotations peuvent être associés aux dessins des objets ou des situations:
* Elles sont écrites dans l'espace au moyen des mêmes symboles que les dessins qu'elles commentent ou précisent.
* Leur forme, leur étendue, le nombre de liens superposées utilisées pour les dessiner sont des paramètres choisis par le concepteur du modèle.
* Ces paramètres sont indépendants et peuvent donc être combinés de diverses manières. Le nombre d'annotations possibles est ainsi théoriquement illimité.
##### Chaque réécriture est un cycle de calcul élémentaire effectué par un thread opérant indépendemment des autres dans un espace local préalablement préempté:
* Tous les espaces locaux ont la même étendue telle que toutes les règles de transition puissent y être exécutées.
* L'emplacement et l'orientation de chaque nouvel espace local sont choisis par le scheduler (au hasard ou par un autre algorithme) dans l'espace global.
- Si toutes les conditions d'une règle sont satisfaites, elle s'applique.
- Si plusieurs règles partagent le même ensemble de conditions, l'une d'entre elles est choisie (au hasard ou par un autre algorithme).
- Si les conditions d'une règle sont satisfaites mais que les conditions d'une autre règle, qui en comporte davantage, sont également satisfaites, la règle la plus complète s'applique.
- Une fois la règle choisie, ses prescriptions s'appliquent à l'état global.
- Le thread qui a achevé l'ensemble de ce calcul est alors détruit et la préemption sur cet espace local est levée.
* Après superposition des temps et espaces de ces modèles à ceux du gem-graph, leurs variables locales intensives (températures, pressions, concentrations, débits, flux, section efficace, etc ...) peuvent être lues et écrites par le gem-graph au moyen de conditions et d'actions spécifiques. Ces lectures / écritures permettent la cohérence de l'ensemble des modèles pendant la durée du calcul.
##### Plusieurs modèles de gem-graph peuvent être additionnés (états et transitions) si leurs paramètres d'espace et de temps sont compatibles:
* L'addition de leurs états et celle de leurs règles sont des processus distincts qui peuvent être assistés par des algorithmes de merging spécifiques.
---
###### Des graphes non géométriques peuvent être extraits des gem-graph afin de faciliter leurs comparaisons et optimisations.
##### Les automates spatiaux sont les automates dont les états sont des états d'un espace.
Leurs règles de transition transforment donc un état d'un espace en un autre état d'un espace.
Plusieurs types de restrictions permettent de différencier et de classer les automates spatiaux.
- L'espace de départ et celui d'arrivée peuvent être semblables (avoir des propriétés identiques) ou non.
- Les espaces peuvent être discrets ou non, finis ou non.
- Dans le cas des espaces discrets et finis, chaque transition peut concerner une ou plusieurs unités de l'espace.
- Les unités de l'espace peuvent 'contenir' un booléen, un entier ou une approximation d'un nombre réel.
NB Si elle ne contiennent rien, seule la forme de l'espace peut être modifiée.
- ... (liste non limitative)
##### Equivalence des automates cellulaires et des gem-graph.
Les règles des automates cellulaires (CA) ne modifient qu'une case à la fois et ces cases contiennent des booléens.
Les règles des gem-graph (GG) modifient l'état de plusieurs cases à la fois et ces cases contiennent des entiers.
Comme il est possible de coder n'importe quel entier par des booléens, tout GG peut être simulé par un CA.
Comme il est possible de coder n'importe quel booléen par un entier, tout CA peut être simulé par un GG.
Il est plus facile de simuler un CA par un GG que l'inverse.
---
A chaque espace peut être associé un nombre entier unique. Cet entier contient toute l'information nécéssaire et suffisante pour reconstituer cet espace.
Toutes les règles de transition d'un état d'un espace à un autre état consistent donc en l'association de deux nombres entiers codant l'un pour l'état de l'espace de départ et l'autre pour celui de l'arrivée. A chaque règle de transition peut donc être associée un entier unique codant pour cette association.