### 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).
* 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. Une approximation est donc nécessaire pour restaurer l'isotropie.
* Elle peut être réalisée 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.
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é.
* 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 le calcul effectué, son résultat est validé puis intégré à l'état global.
Le thread qui a achevé 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 d'un gem-graph afin de faciliter son évaluation et son optimisation (ex: pour applications de l'IA)
> addition - soustraction (les états et transitions changent; les propriétés qui définissent le graphe demeurent inchangées)
> expansion: par association / combinaison à d'autres modèles (la nature des états et des transitions change)
> réduction: par extraction d'un sous-ensemble de propriétés (ex: > graphes non géométriques)
> Y a-t-il seulement deux extractions possibles (vers l'espace ou vers le graphe) ?
> Les graphes extraits seront-ils seulement des outils d'optimisation
> ou nous guideront-ils vers une classification ou des liens vers d'autres objets mathématiques ?
> Quelles seront leurs propriétés ? Que nous apprendront-t-ils sur les modèles ?
> Comment s'assurer qu'on a bien listé, énuméré toutes les opérations possibles ?
> Addition et soustraction peuvent être effectuées sur une partie seulement des états ou des règles ex: si on cherche à maintenir une propriété biologique (qui n'apparait que sur l'ensemble du modèle) il faut opérer sur cet ensemble. Sinon, pour la biochimie, des opérations sur un espace réduit seront sûrement utiles.
> En cas d'opération de réduction du gem-graph vers l'espace (sans graphe associé), les annotations, qui ne représentent pas les objets eux-mêmes ni les situations, sont supprimées ou converties.