Cette page décrit la gestion des maillages cartésiens dans Arcane.
Pour avoir les infos sur un maillage cartésien, il est nécessaire d'avoir une instance de la classe Arcane::ICartesianMesh. Pour récupérer une telle instance, il faut utiliser la méthode Arcane::ICartsianMesh::getReference():
Une fois ceci fait, il est possible d'avoir des infos sur les entités pour une direction donnée. Les directions possibles sont données par le type #eMeshDirection. Il est aussi possible d'utiliser un entier pour spécifier la direction, 0 correspondant à la direction X, 1 à la direction Y et 2 à la direction Z. Pour des raisons de lisibilité, il est conseillé d'utiliser le type énuméré si possible. Par exemple, pour récupérer les infos sur les mailles de la direction Y :
Une fois une direction récupérée, il est possible d'itérer sur toutes les entités de la direction et pour les mailles par exemple d'avoir la maille avant et après :
Pour les mailles de bord, il est possible que prev_cell ou next_cell soit nulle. Cela peut se tester via la méthode Arcane::Cell::null().
La récupération des noeuds d'une direction se fait de la même manière.
Pour les faces, l'écriture est similaire mais au lieu de récupérer la face avant et après la face courante, on peut récupérer la maille avant et après :
Enfin, pour les mailles, il est possible de récupérer des infos directionnelles sur les noeuds d'une maille suivant une direction, via la classe Arcane::DirCellNode.
De la même manière, il est aussi possible de connaitre la face devant et derrière la maille dans une direction donnée (cela fonctionne aussi en 3D) :
Pour itérer sur toutes les directions d'un maillage, il est possible de boucler comme suit :
Il est possible de connaître le nombre global de maille dans une direction donnée via Arcane::CellDirectionMng::globalNbCell(). De même, il est possible, en supposant que le découpage en sous-domaine peut se représenter sous forme d'une grille, de connaître la numérotation dans cette grille via Arcane::CellDirectionMng::subDomainOffset(). Cette numérotation commence à 0.
Il est aussi possible de connaître le nombre de mailles propre du sous-domaine dans une direction donnée via Arcane::CellDirectionMng::ownNbCell(). Il est aussi possible de connaître l'offset dans la grile de la première maille propre via Arcane::CellDirectionMng::ownCellOffset().
Il est possible en 2D d'avoir accès aux mailles autour d'un noeud et aux noeuds de la maille sans passer par les connectivités directionnelles. Cela se fait via l'objet Arcane::CartesianConnectivity qui est retourné par l'appel à Arcane::ICartesianMesh::connectivity(). Par exemple :
Et de la même manière pour les mailles :
Ces connectivités sont aussi accessibles en 3D. La nomemclature est la même que pour les connectivités 2D. Le préfixe topZ est utilisé pour les noeuds du dessus de la même suivant la direction Z. Pour ceux du dessous, il n'y a pas de préfixe et donc le nom de la méthode est le même qu'en 2D. Cela permet éventuellement d'utiliser le même code en 2D et en 3D.