Arcane fournit un ensemble de types de base, correspondant soit à un type existant du C++ (comme int, double), soit à une classe (comme Real2). Ces types sont utilisés pour toutes les opérations courantes mais aussi pour les variables. Par exemple, lorsqu'on souhaite déclarer un entier, il faut utiliser Integer au lieu de int ou long. Cela permet de modifier la taille de ces types (par exemple, utiliser des entiers sur 8 octets au lieu de 4) sans modifier le code source.
Les types de bases sont :
Nom de la classe | Correspondance dans les spécifications |
Integer | entier signé sur 32 bits |
Int16 | entier signé sur 16 bits |
Int32 | entier signé sur 32 bits |
Int64 | entier signé sur 64 bits |
Byte | représente un caractère sur 8 bits |
Real | réel IEEE 754 |
Real2 | coordonnée 2D, vecteur de deux réels |
Real3 | coordonnée 3D, vecteur de trois réels |
Real2x2 | tenseur 2D, vecteur de quatre réels |
Real3x3 | tenseur 3D, vecteur de neufs réels |
String | chaîne de caractères au format UTF-8 |
Les flottants (Real, Real2, Real2x2, Real3, Real3x3) utilisent des réels double précision de la norme IEEE 754 et sont stockés sur 8 octets.
Il existe 4 types d'entités de base dans un maillage : les noeuds, les arêtes, les faces et les mailles. `A chacun de ces types correspond une classe C++ dans Arcane. Pour chaque type d'entité, il existe un type groupe qui gère un ensemble d'entités de ce type. La classe qui gère un groupe d'une entité a pour nom celui de l'entité suffixée par Group. Par exemple, pour les noeuds, il s'agit de NodeGroup.
Nom de la classe | Correspondance dans les spécifications |
Node | un noeud |
Cell | une maille |
Face | une face en 3D, une arête en 2D |
Edge | une arête en 3D |
Particle | une particule |
DoF | un degré de liberté |
NodeGroup | un groupe de noeuds |
CellGroup | un groupe de mailles |
FaceGroup | un groupe de faces |
EdgeGroup | un groupe d'arêtes |
ParticleGroup | un groupe de particules |
DoFGroup | un groupe de degrés de liberté |
Chaque entité du maillage correspond à une instance d'une classe. Par exemple, si le maillage contient 15 mailles, il y a 15 instances du type Cell. Chaque classe fournit un certain nombre d'opérations permettant de relier les instances entre elles. Par exemple, la méthode Cell::node(Int32) de la classe Cell permet de récupérer le i-ème noeud de cette maille. De même, la méthode Cell::nbNode() permet de récupérer le nombre de noeuds de la maille. Pour plus de renseignements sur les opérations supportées, il est nécessaire de se reporter à la documentation en ligne des classes correspondantes (Node, Edge, Face, Cell, Particle, DoF).