wiki:coulee_de_lave_uml

Conception de l'application

Diagramme incomplet, mais l'essentiel y est.

Description des tâches pour chaque classe

On reprend le diagramme de la première application et on adapte pour les nouvelles applications. L'animation de la sédimentation préfère au moins deux environnements différents, on modifie la structure de façon à avoir un environnement générale, et plusieurs environnements séparés si besoin.

COLUMN

La classe COLUMN permet d'avoir du coup plusieurs grilles d'environnement. Il est possible d'utiliser les deux différents moyens de recherche d'ENTITEs dans l'environnement au moyen des VOLUMEINDEX3D et POINTINDEX3D. VOLUMEINDEX3D permet de trouver à une certaine position les objets au même endroit. POINTINDEX3D permet de connaître les ENTITEs voisins de la position dans un rayon de voisinage indiqué. On a ajouté aussi les dimensions de l'ENVIRONNEMENT.

MARK

On conserve aussi le concept de MARK pour garder générique aux trois simulations même si il aurait été plus simple de demander directement à l'ENTITE de chercher ses voisins car dans ce cas ci, les MARKs auront la même position que leur possesseur. On rappelle que MARK cherche les voisins de l'ENTITE associé à un endroit donné dans un rayon spécifié.

ENTITY

La classe ENTITY spécifie une _vitesse et une _acceleration à un AROBJECT (objet AReVi) pour calculer la position suivante

GEOLOGYENTITY

La classe GEOLOGYENTITY donne les paramètres géologiques de _temperature, _viscosité, _densité. La variation de ces paramètres influe sur le déplacement de l'objet, soit la _vitesse et l'_acceleration.

Les différents entités géologiques insérées dans la coulée de lave sont les LAVALVLs (niveaux de lave) et les DIAPIRs. Une particularité, les LAVALVLs ne bougeront pas. Dans l'autre cas, on aurait un non sens du changement du niveau de chaque couche. Les DIAPIRs, eux, utilisent une activité pour se déplacer sous forme d'un flux connectés entre eux, au moment de la création, si l'un est en dessous ( dans in ) ou dessus ( dans out ) de l'autre.

Ces deux entités, représentées graphiquement, possèdent plusieurs activités : une pour se déplacer, une pour réinitialiser les INTERFACEs entre ses voisins.

INTERFACE

Il permet de créer un échange entre deux entités. Une activité est implémentée dans l'interface pour qu'il soit exécuté automatiqument par AReVi. Ainsi, un niveau de lave n'a pas besoin d'activité, il subit une modification demandée par l'interface. Toujours à l'aide de cette interface on demandera au niveau de lave de recalculer sa viscosité. On peut aussi spécialiser une interface pour un échange de matière entre deux entités.

Chaque calcul d'échange est isolé dans une fonction.

Simplification de l'évolution de l'échange thermique
Tant que le diapir est principalement dans un niveau, toute la chaleur thermique est donnée à ce niveau.
Mecanisme de création d'interface
Chaque entité va demander à sa marque de chercher ses voisins. Pour chaque voisin, on demande de créer une interface. Ces interfaces vont demander une adhésion à chaque voisin pour qu'ils soient au courant de cette attache avec l'autre. Ensuite, selon le type d'entité du voisin, l'activité peut changer.

Moteur

Le seuil de température est un paramètre donné en option. A chaque activité, chaque niveau de lave sera affecté par un nouveau pourcentage de solidification, par rapport au niveau du solidus atteint.

Positionnement de la cristallisation

La position des créations de jus de cristallisation est choisi aléatoirement sur la ligne du solidus.

Phénomène entre les diapirs connectés

Lorsqu'un diapir atteint un volume de 0 il se détruit.

Attachments