Classe permettant d'accéder aux méthodes spécifiques AMR du maillage cartesien. Plus de détails...
#include <arcane/cartesianmesh/CartesianMeshAMRMng.h>
Graphe de collaboration de Arcane::CartesianMeshAMRMng:Fonctions membres publiques | |
| CartesianMeshAMRMng (ICartesianMesh *cmesh) | |
| Constructeur. | |
| Int32 | nbPatch () const |
| Nombre de patchs du maillage. | |
| CartesianPatch | amrPatch (Int32 index) const |
| Retourne le index-ième patch du maillage. | |
| CartesianMeshPatchListView | patches () const |
| Vue sur la liste des patchs. | |
| void | refineZone (const AMRZonePosition &position) const |
| Raffine un bloc du maillage cartésien. | |
| void | coarseZone (const AMRZonePosition &position) const |
| Dé-raffine un bloc du maillage cartésien. | |
| void | adaptMesh () const |
| Méthode permettant d'adapter le raffinement du maillage selon les mailles à raffiner. | |
| void | clearRefineRelatedFlags () const |
| Méthode permettant de supprimer les flags liés au raffinement de toutes les mailles. | |
| void | enableOverlapLayer (bool enable) const |
| Integer | reduceNbGhostLayers (Integer level, Integer target_nb_ghost_layers) const |
| Méthode permettant de supprimer une ou plusieurs couches de mailles fantômes sur un niveau de raffinement défini. | |
| void | mergePatches () const |
| Méthode permettant de fusionner les patchs qui peuvent l'être. | |
| void | createSubLevel () const |
| Méthode permettant de créer un sous-niveau ("niveau -1"). | |
Attributs privés | |
| ICartesianMesh * | m_cmesh |
Classe permettant d'accéder aux méthodes spécifiques AMR du maillage cartesien.
Une instance de cette classe est valide tant que le ICartesianMesh passé en paramètre du constructeur est valide.
Définition à la ligne 40 du fichier CartesianMeshAMRMng.h.
|
explicit |
Constructeur.
Définition à la ligne 39 du fichier CartesianMeshAMRMng.cc.
| void Arcane::CartesianMeshAMRMng::adaptMesh | ( | ) | const |
Méthode permettant d'adapter le raffinement du maillage selon les mailles à raffiner.
Cette méthode ne peut être appelée que si le maillage est un maillage AMR (IMesh::isAmrActivated()==true) et que le type de l'AMR est 3 (PatchCartesianMeshOnly).
Avant d'appeler cette méthode, il faut ajouter le flag "II_Refine" sur les mailles qui doivent être raffinées. Il est possible de le faire niveau par niveau ou plusieurs niveaux d'un coup (si plusieurs niveaux existent déjà). Pour être sûr de n'avoir aucun flag déjà présent sur le maillage, il est possible d'appeler la méthode clearRefineRelatedFlags().
Les mailles n'ayant pas de flag "II_Refine" seront déraffinées.
Afin d'éviter les mailles orphelines, si une maille est marquée "II_Refine", alors la maille parente est marquée "II_Refine".
Exemple d'exécution :
Cette opération est collective.
Définition à la ligne 92 du fichier CartesianMeshAMRMng.cc.
Références ARCANE_FATAL, et Arcane::Cell.
| CartesianPatch Arcane::CartesianMeshAMRMng::amrPatch | ( | Int32 | index | ) | const |
Retourne le index-ième patch du maillage.
Si le maillage est cartésien, il n'y a qu'un seul patch.
L'instance retournée reste valide tant que cette instance n'est pas détruite.
Définition à la ligne 56 du fichier CartesianMeshAMRMng.cc.
| void Arcane::CartesianMeshAMRMng::clearRefineRelatedFlags | ( | ) | const |
Méthode permettant de supprimer les flags liés au raffinement de toutes les mailles.
Les flags concernés sont :
Définition à la ligne 134 du fichier CartesianMeshAMRMng.cc.
| void Arcane::CartesianMeshAMRMng::coarseZone | ( | const AMRZonePosition & | position | ) | const |
Dé-raffine un bloc du maillage cartésien.
Cette méthode ne peut être appelée que si le maillage est un maillage AMR (IMesh::isAmrActivated()==true).
Les mailles dont les positions des centres sont comprises entre position et (position+length) sont dé-raffinées et les informations de connectivité correspondantes sont mises à jour.
Toutes les mailles dans la zone de dé-raffinement doivent être du même niveau.
Les patchs ne contenant plus de mailles après l'appel à cette méthode seront supprimés.
Cette opération est collective.
Définition à la ligne 83 du fichier CartesianMeshAMRMng.cc.
| void Arcane::CartesianMeshAMRMng::createSubLevel | ( | ) | const |
Méthode permettant de créer un sous-niveau ("niveau -1").
Cette méthode ne peut être appelée que si le maillage est un maillage AMR (IMesh::isAmrActivated()==true).
Dans le cas d'utilisation de l'AMR type 3 (PatchCartesianMeshOnly), il est possible d'appeler cette méthode en cours de calcul et autant de fois que nécessaire (tant qu'il est possible de diviser la taille du niveau 0 par 2). Une fois le niveau -1 créé, tous les niveaux sont "remontés" (donc le niveau -1 devient le niveau 0 "ground").
Définition à la ligne 181 du fichier CartesianMeshAMRMng.cc.
Références ARCANE_FATAL, Arcane::Cell, Arcane::CartesianMeshUtils::createCartesianMeshCoarsening2(), Arcane::Patch, et Arcane::PatchCartesianMeshOnly.
Voici le graphe d'appel pour cette fonction :| void Arcane::CartesianMeshAMRMng::enableOverlapLayer | ( | bool | enable | ) | const |
Définition à la ligne 143 du fichier CartesianMeshAMRMng.cc.
| void Arcane::CartesianMeshAMRMng::mergePatches | ( | ) | const |
Méthode permettant de fusionner les patchs qui peuvent l'être.
Cette méthode ne peut être appelée que si le maillage est un maillage AMR (IMesh::isAmrActivated()==true). Si le type de l'AMR n'est pas 3 (PatchCartesianMeshOnly), la méthode ne fait rien.
Cette méthode peut être utile après plusieurs appels à refineZone() et à coarseZone(). En revanche, un appel à cette méthode est inutile après un appel à adaptMesh() car adaptMesh() s'en occupe.
Définition à la ligne 166 du fichier CartesianMeshAMRMng.cc.
Références Arcane::Cell.
| Int32 Arcane::CartesianMeshAMRMng::nbPatch | ( | ) | const |
Nombre de patchs du maillage.
Il y a toujours au moins un patch qui représente le maillage cartésien.
Définition à la ligne 47 du fichier CartesianMeshAMRMng.cc.
| CartesianMeshPatchListView Arcane::CartesianMeshAMRMng::patches | ( | ) | const |
Vue sur la liste des patchs.
Définition à la ligne 65 du fichier CartesianMeshAMRMng.cc.
| Integer Arcane::CartesianMeshAMRMng::reduceNbGhostLayers | ( | Integer | level, |
| Integer | target_nb_ghost_layers ) const |
Méthode permettant de supprimer une ou plusieurs couches de mailles fantômes sur un niveau de raffinement défini.
Le nombre de couches de mailles fantômes souhaité peut être augmenté par la méthode. Il est nécessaire de récupérer la valeur retournée pour avoir le nombre de couches de mailles fantômes final.
| level | Le niveau de raffinement concerné par la suppression des mailles fantômes. |
| target_nb_ghost_layers | Le nombre de couches souhaité après appel à cette méthode. ATTENTION : Il peut être ajusté par la méthode. |
Définition à la ligne 157 du fichier CartesianMeshAMRMng.cc.
| void Arcane::CartesianMeshAMRMng::refineZone | ( | const AMRZonePosition & | position | ) | const |
Raffine un bloc du maillage cartésien.
Cette méthode ne peut être appelée que si le maillage est un maillage AMR (IMesh::isAmrActivated()==true).
Les mailles dont les positions des centres sont comprises entre position et (position+length) sont raffinées et les informations de connectivité correspondantes sont mises à jour.
Cette opération est collective.
Définition à la ligne 74 du fichier CartesianMeshAMRMng.cc.
|
private |
Définition à la ligne 209 du fichier CartesianMeshAMRMng.h.