Arcane  v4.1.3.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::AMRPatchPosition

Classe permettant de définir la position d'un patch dans le maillage cartésien. Plus de détails...

#include <arcane/cartesianmesh/AMRPatchPosition.h>

+ Graphe de collaboration de Arcane::AMRPatchPosition:

Fonctions membres publiques

 AMRPatchPosition ()
 Constructeur pour une position nulle. Une position nulle est définie par un level = -2.
 
 AMRPatchPosition (Int32 level, CartCoord3 min_point, CartCoord3 max_point, Int32 overlap_layer_size)
 
 AMRPatchPosition (const AMRPatchPosition &src)
 Constructeur de copie.
 
AMRPatchPositionoperator= (const AMRPatchPosition &)=default
 
bool operator== (const AMRPatchPosition &other) const =default
 
Int32 level () const
 Méthode permettant de récupérer le niveau du patch.
 
void setLevel (Int32 level)
 Méthode permettant de définir le niveau du patch.
 
CartCoord3 minPoint () const
 Méthode permettant de récupérer la position min de la boite englobante.
 
void setMinPoint (CartCoord3 min_point)
 Méthode permettant de définir la position min de la boite englobante.
 
CartCoord3 maxPoint () const
 Méthode permettant de récupérer la position max de la boite englobante.
 
void setMaxPoint (CartCoord3 max_point)
 Méthode permettant de définir la position max de la boite englobante.
 
Int32 overlapLayerSize () const
 Méthode permettant de récupérer le nombre de couches de mailles de recouvrement du patch.
 
void setOverlapLayerSize (Int32 layer_size)
 Méthode permettant de définir le nombre de couches de mailles de recouvrement du patch.
 
CartCoord3 minPointWithOverlap () const
 Méthode permettant de récupérer la position min de la boite englobante en incluant la couche de mailles de recouvrement.
 
CartCoord3 maxPointWithOverlap () const
 Méthode permettant de récupérer la position max de la boite englobante en incluant la couche de mailles de recouvrement.
 
Int64 nbCells () const
 Méthode permettant de connaitre le nombre de mailles du patch selon sa position.
 
std::pair< AMRPatchPosition, AMRPatchPositioncut (CartCoord cut_point, Integer dim) const
 Méthode permettant de découper le patch en deux patchs selon un point de découpe.
 
bool canBeFusion (const AMRPatchPosition &other_patch) const
 Méthode permettant de savoir si notre patch peut être fusionné avec other_patch.
 
bool fusion (AMRPatchPosition &other_patch)
 Méthode permettant de fusionner other_patch avec le nôtre.
 
bool isNull () const
 Méthode permettant de savoir si la position du patch est nulle.
 
AMRPatchPosition patchUp (Integer dim, Int32 higher_level, Int32 overlap_layer_size_top_level) const
 Méthode permettant de créer un AMRPatchPosition pour le niveau supérieur.
 
AMRPatchPosition patchDown (Integer dim, Int32 higher_level, Int32 overlap_layer_size_top_level) const
 Méthode permettant de créer un AMRPatchPosition pour le niveau inférieur.
 
CartCoord3 length () const
 Méthode permettant de connaitre la taille du patch (en nombre de mailles par direction).
 
bool isIn (CartCoord x, CartCoord y, CartCoord z) const
 Méthode permettant de savoir si une maille de position x,y,z est incluse dans ce patch.
 
bool isIn (CartCoord3 coord) const
 Méthode permettant de savoir si une maille est incluse dans ce patch.
 
bool isInWithOverlap (CartCoord x, CartCoord y, CartCoord z) const
 Méthode permettant de savoir si une maille de position x,y,z est incluse dans ce patch avec couche de recouvrement.
 
bool isInWithOverlap (CartCoord3 coord) const
 Méthode permettant de savoir si une maille est incluse dans ce patch avec couche de recouvrement.
 
bool isInWithOverlap (CartCoord x, CartCoord y, CartCoord z, Integer overlap) const
 Méthode permettant de savoir si une maille de position x,y,z est incluse dans ce patch avec couche de recouvrement fourni en paramètre.
 
bool isInWithOverlap (CartCoord3 coord, Integer overlap) const
 Méthode permettant de savoir si une maille est incluse dans ce patch avec couche de recouvrement fourni en paramètre.
 
bool haveIntersection (const AMRPatchPosition &other) const
 Méthode permettant de savoir si notre patch est en contact avec le patch other.
 
void computeOverlapLayerSize (Int32 higher_level, Int32 overlap_layer_size_top_level)
 Méthode permettant de calculer le nombre de couches de mailles de recouvrement pour notre patch.
 

Fonctions membres publiques statiques

static Int32 computeOverlapLayerSize (Int32 level, Int32 higher_level, Int32 overlap_layer_size_top_level)
 Méthode permettant de calculer le nombre de couches de mailles de recouvrement pour un niveau donné.
 

Attributs privés

Int32 m_level
 
CartCoord3 m_min_point
 
CartCoord3 m_max_point
 
Int32 m_overlap_layer_size
 

Description détaillée

Classe permettant de définir la position d'un patch dans le maillage cartésien.

La position d'un patch est désigné par la position de deux mailles dans la grille. La position "min" et la position "max" forment une boite englobante.

Avertissement
La maille à la position "min" est incluse dans la boite, mais la maille à la position "max" est exclue.
Note
La position du patch est globale pour le maillage cartesien. Le découpage en sous-domaine n'est pas pris en compte (exemple avec la méthode nbCells() de cette classe qui donne le nombre de mailles du patch sans tenir compte des sous-domaines).

Les positions des mailles peuvent être obtenues par le CartesianMeshNumberingMng.

Avertissement
Cette classe est valide uniquement pour un pattern de raffinement de 2 (modifier ça ne devrait pas être complexe, si besoin).

Définition à la ligne 50 du fichier AMRPatchPosition.h.

Documentation des constructeurs et destructeur

◆ AMRPatchPosition() [1/3]

Arcane::AMRPatchPosition::AMRPatchPosition ( )

Constructeur pour une position nulle. Une position nulle est définie par un level = -2.

Définition à la ligne 31 du fichier AMRPatchPosition.cc.

Référencé par AMRPatchPosition(), canBeFusion(), cut(), fusion(), haveIntersection(), patchDown(), et patchUp().

+ Voici le graphe des appelants de cette fonction :

◆ AMRPatchPosition() [2/3]

Arcane::AMRPatchPosition::AMRPatchPosition ( Int32 level,
CartCoord3 min_point,
CartCoord3 max_point,
Int32 overlap_layer_size )

Définition à la ligne 40 du fichier AMRPatchPosition.cc.

◆ AMRPatchPosition() [3/3]

Arcane::AMRPatchPosition::AMRPatchPosition ( const AMRPatchPosition & src)

Constructeur de copie.

Paramètres
srcLa position à copier.

Définition à la ligne 51 du fichier AMRPatchPosition.cc.

Références AMRPatchPosition(), level(), maxPoint(), minPoint(), et overlapLayerSize().

+ Voici le graphe d'appel pour cette fonction :

Documentation des fonctions membres

◆ canBeFusion()

bool Arcane::AMRPatchPosition::canBeFusion ( const AMRPatchPosition & other_patch) const

Méthode permettant de savoir si notre patch peut être fusionné avec other_patch.

Paramètres
other_patchLe patch à verifier.
Renvoie
True si la fusion est possible.

Définition à la ligne 200 du fichier AMRPatchPosition.cc.

Références AMRPatchPosition(), level(), maxPoint(), et minPoint().

Référencé par fusion().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ computeOverlapLayerSize() [1/2]

void Arcane::AMRPatchPosition::computeOverlapLayerSize ( Int32 higher_level,
Int32 overlap_layer_size_top_level )

Méthode permettant de calculer le nombre de couches de mailles de recouvrement pour notre patch.

Paramètres
higher_levelLe plus haut niveau de raffinement.
overlap_layer_size_top_levelLe nombre de couches pour le plus haut niveau de raffinement.

Définition à la ligne 439 du fichier AMRPatchPosition.cc.

Références computeOverlapLayerSize().

+ Voici le graphe d'appel pour cette fonction :

◆ computeOverlapLayerSize() [2/2]

Int32 Arcane::AMRPatchPosition::computeOverlapLayerSize ( Int32 level,
Int32 higher_level,
Int32 overlap_layer_size_top_level )
static

Méthode permettant de calculer le nombre de couches de mailles de recouvrement pour un niveau donné.

Paramètres
levelLe niveau demandé.
higher_levelLe plus haut niveau de raffinement.
overlap_layer_size_top_levelLe nombre de couches pour le plus haut niveau de raffinement.
Renvoie
Le nombre de couches de mailles de recouvrement pour le niveau demandé.

Suite : Soit m le plus haut niveau de raffinement (higher_level), Soit C(m) le nombre de couches au niveau m (overlap_layer_size_top_level), Pour tout C(m) entier pair positif : C(m-1) = (int(C(m)/4)+1)*2

Définition à la ligne 399 du fichier AMRPatchPosition.cc.

Références ARCANE_FATAL, et level().

Référencé par computeOverlapLayerSize(), patchDown(), et patchUp().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ cut()

std::pair< AMRPatchPosition, AMRPatchPosition > Arcane::AMRPatchPosition::cut ( CartCoord cut_point,
Integer dim ) const

Méthode permettant de découper le patch en deux patchs selon un point de découpe.

Paramètres
cut_pointLe point de découpe.
dimLa dimension qui doit être découpée.
Renvoie
Les deux positions de patch résultant de la découpe.

Définition à la ligne 169 du fichier AMRPatchPosition.cc.

Références AMRPatchPosition(), Arcane::MD_DirX, Arcane::MD_DirY, setMaxPoint(), et setMinPoint().

+ Voici le graphe d'appel pour cette fonction :

◆ fusion()

bool Arcane::AMRPatchPosition::fusion ( AMRPatchPosition & other_patch)

Méthode permettant de fusionner other_patch avec le nôtre.

Une vérification de possibilité de fusion (via canBeFusion()) est réalisée avant de fusionner. Si la fusion est impossible, on retourne false. Sinon, on fusionne et on retourne true. Si fusion, other_patch devient null.

Paramètres
other_patchLe patch avec lequel fusionner.
Renvoie
true si la fusion à été réalisé, false si la fusion est impossible.

Définition à la ligne 222 du fichier AMRPatchPosition.cc.

Références AMRPatchPosition(), canBeFusion(), maxPoint(), minPoint(), et setLevel().

Référencé par Arcane::AMRPatchPositionLevelGroup::fusionPatches().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ haveIntersection()

bool Arcane::AMRPatchPosition::haveIntersection ( const AMRPatchPosition & other) const

Méthode permettant de savoir si notre patch est en contact avec le patch other.

Paramètres
otherLe patch à verifier.
Renvoie
True si les patchs sont en contact.

Définition à la ligne 379 du fichier AMRPatchPosition.cc.

Références AMRPatchPosition(), level(), maxPoint(), et minPoint().

+ Voici le graphe d'appel pour cette fonction :

◆ isIn() [1/2]

bool Arcane::AMRPatchPosition::isIn ( CartCoord x,
CartCoord y,
CartCoord z ) const

Méthode permettant de savoir si une maille de position x,y,z est incluse dans ce patch.

Pour inclure la couche de recouvrement, utiliser la méthode isInWithOverlap().

Paramètres
xPosition X de la maille.
yPosition Y de la maille.
zPosition Z de la maille.
Renvoie
True si la maille est dans le patch.

Définition à la ligne 317 du fichier AMRPatchPosition.cc.

◆ isIn() [2/2]

bool Arcane::AMRPatchPosition::isIn ( CartCoord3 coord) const

Méthode permettant de savoir si une maille est incluse dans ce patch.

Pour inclure la couche de recouvrement, utiliser la méthode isInWithOverlap().

Paramètres
coordPosition de la maille.
Renvoie
True si la maille est dans le patch.

Définition à la ligne 326 du fichier AMRPatchPosition.cc.

◆ isInWithOverlap() [1/4]

bool Arcane::AMRPatchPosition::isInWithOverlap ( CartCoord x,
CartCoord y,
CartCoord z ) const

Méthode permettant de savoir si une maille de position x,y,z est incluse dans ce patch avec couche de recouvrement.

Paramètres
xPosition X de la maille.
yPosition Y de la maille.
zPosition Z de la maille.
Renvoie
True si la maille est dans le patch.

Définition à la ligne 335 du fichier AMRPatchPosition.cc.

Références maxPointWithOverlap(), et minPointWithOverlap().

+ Voici le graphe d'appel pour cette fonction :

◆ isInWithOverlap() [2/4]

bool Arcane::AMRPatchPosition::isInWithOverlap ( CartCoord x,
CartCoord y,
CartCoord z,
Integer overlap ) const

Méthode permettant de savoir si une maille de position x,y,z est incluse dans ce patch avec couche de recouvrement fourni en paramètre.

Paramètres
xPosition X de la maille.
yPosition Y de la maille.
zPosition Z de la maille.
overlapLe nombre de mailles de recouvrement de la couche.
Renvoie
True si la maille est dans le patch.

Définition à la ligne 357 du fichier AMRPatchPosition.cc.

◆ isInWithOverlap() [3/4]

bool Arcane::AMRPatchPosition::isInWithOverlap ( CartCoord3 coord) const

Méthode permettant de savoir si une maille est incluse dans ce patch avec couche de recouvrement.

Paramètres
coordPosition de la maille.
Renvoie
True si la maille est dans le patch.

Définition à la ligne 346 du fichier AMRPatchPosition.cc.

Références maxPointWithOverlap(), et minPointWithOverlap().

+ Voici le graphe d'appel pour cette fonction :

◆ isInWithOverlap() [4/4]

bool Arcane::AMRPatchPosition::isInWithOverlap ( CartCoord3 coord,
Integer overlap ) const

Méthode permettant de savoir si une maille est incluse dans ce patch avec couche de recouvrement fourni en paramètre.

Paramètres
coordPosition de la maille.
overlapLe nombre de mailles de recouvrement de la couche.
Renvoie
True si la maille est dans le patch.

Définition à la ligne 368 du fichier AMRPatchPosition.cc.

◆ isNull()

bool Arcane::AMRPatchPosition::isNull ( ) const

Méthode permettant de savoir si la position du patch est nulle.

Avertissement
On ne vérifie pas la validité de la position.
Renvoie
True si le patch est nulle.

Définition à la ligne 261 du fichier AMRPatchPosition.cc.

Référencé par Arcane::AMRPatchPositionLevelGroup::fusionPatches().

+ Voici le graphe des appelants de cette fonction :

◆ length()

CartCoord3 Arcane::AMRPatchPosition::length ( ) const

Méthode permettant de connaitre la taille du patch (en nombre de mailles par direction).

Renvoie
La taille du patch.

Définition à la ligne 308 du fichier AMRPatchPosition.cc.

◆ level()

Int32 Arcane::AMRPatchPosition::level ( ) const

Méthode permettant de récupérer le niveau du patch.

Renvoie
Le niveau du patch.

Définition à la ligne 70 du fichier AMRPatchPosition.cc.

Référencé par AMRPatchPosition(), canBeFusion(), computeOverlapLayerSize(), haveIntersection(), et setLevel().

+ Voici le graphe des appelants de cette fonction :

◆ maxPoint()

CartCoord3 Arcane::AMRPatchPosition::maxPoint ( ) const

Méthode permettant de récupérer la position max de la boite englobante.

Renvoie
La position max.

Définition à la ligne 106 du fichier AMRPatchPosition.cc.

Référencé par AMRPatchPosition(), canBeFusion(), fusion(), et haveIntersection().

+ Voici le graphe des appelants de cette fonction :

◆ maxPointWithOverlap()

CartCoord3 Arcane::AMRPatchPosition::maxPointWithOverlap ( ) const

Méthode permettant de récupérer la position max de la boite englobante en incluant la couche de mailles de recouvrement.

Renvoie
La position max avec la couche de mailles de recouvrement.

Définition à la ligne 151 du fichier AMRPatchPosition.cc.

Référencé par isInWithOverlap(), et isInWithOverlap().

+ Voici le graphe des appelants de cette fonction :

◆ minPoint()

CartCoord3 Arcane::AMRPatchPosition::minPoint ( ) const

Méthode permettant de récupérer la position min de la boite englobante.

Renvoie
La position min.

Définition à la ligne 88 du fichier AMRPatchPosition.cc.

Référencé par AMRPatchPosition(), canBeFusion(), Arcane::AMRPatchPositionSignatureCut::cut(), fusion(), et haveIntersection().

+ Voici le graphe des appelants de cette fonction :

◆ minPointWithOverlap()

CartCoord3 Arcane::AMRPatchPosition::minPointWithOverlap ( ) const

Méthode permettant de récupérer la position min de la boite englobante en incluant la couche de mailles de recouvrement.

Renvoie
La position min avec la couche de mailles de recouvrement.

Définition à la ligne 142 du fichier AMRPatchPosition.cc.

Référencé par isInWithOverlap(), et isInWithOverlap().

+ Voici le graphe des appelants de cette fonction :

◆ nbCells()

Int64 Arcane::AMRPatchPosition::nbCells ( ) const

Méthode permettant de connaitre le nombre de mailles du patch selon sa position.

Avertissement
Le nombre de mailles est calculé avec les positions min et max (sans la couche de recouvrement). Ce nombre est donc le même pour tous les sous-domaines. Attention à ne pas comparer ce nombre avec le nombre de mailles du groupe de mailles qui peut être associé à cette classe et qui peut être différent pour chaque sous-domaine.
Renvoie
Le nombre de maille du patch.

Définition à la ligne 160 du fichier AMRPatchPosition.cc.

◆ overlapLayerSize()

Int32 Arcane::AMRPatchPosition::overlapLayerSize ( ) const

Méthode permettant de récupérer le nombre de couches de mailles de recouvrement du patch.

Renvoie
le nombre de couches de mailles de recouvrement

Définition à la ligne 124 du fichier AMRPatchPosition.cc.

Référencé par AMRPatchPosition().

+ Voici le graphe des appelants de cette fonction :

◆ patchDown()

AMRPatchPosition Arcane::AMRPatchPosition::patchDown ( Integer dim,
Int32 higher_level,
Int32 overlap_layer_size_top_level ) const

Méthode permettant de créer un AMRPatchPosition pour le niveau inférieur.

Si la position min n'est pas divisible par deux, on arrondit à l'entier inférieur.

Si la position max n'est pas divisible par deux, on arrondit à l'entier supérieur.

Pour la couche de recouvrement, cette méthode s'assure que l'on n'aura jamais plus d'un niveau de différence entre deux mailles de niveaux différents.

Avertissement
patch.patchDown(patch.patchUp(X)) != patch et patch.patchUp(patch.patchDown(X)) != patch.
Paramètres
dimLa dimension du maillage.
higher_levelLe plus haut niveau de raffinement du maillage.
overlap_layer_size_top_levelLe nombre de couches de mailles de recouvrement pour les patchs du plus haut niveau de raffinement.
Renvoie
Un AMRPatchPosition de niveau inférieur.

Définition à la ligne 289 du fichier AMRPatchPosition.cc.

Références AMRPatchPosition(), computeOverlapLayerSize(), setLevel(), setMaxPoint(), et setMinPoint().

+ Voici le graphe d'appel pour cette fonction :

◆ patchUp()

AMRPatchPosition Arcane::AMRPatchPosition::patchUp ( Integer dim,
Int32 higher_level,
Int32 overlap_layer_size_top_level ) const

Méthode permettant de créer un AMRPatchPosition pour le niveau supérieur.

Paramètres
dimLa dimension du maillage.
higher_levelLe plus haut niveau de raffinement du maillage.
overlap_layer_size_top_levelLe nombre de couches de mailles de recouvrement pour les patchs du plus haut niveau de raffinement.
Renvoie
Un AMRPatchPosition de niveau supérieur.

Définition à la ligne 270 du fichier AMRPatchPosition.cc.

Références AMRPatchPosition(), computeOverlapLayerSize(), setLevel(), setMaxPoint(), et setMinPoint().

+ Voici le graphe d'appel pour cette fonction :

◆ setLevel()

void Arcane::AMRPatchPosition::setLevel ( Int32 level)

Méthode permettant de définir le niveau du patch.

Paramètres
levelLe niveau du patch.

Définition à la ligne 79 du fichier AMRPatchPosition.cc.

Références level().

Référencé par fusion(), patchDown(), et patchUp().

+ Voici le graphe d'appel pour cette fonction :
+ Voici le graphe des appelants de cette fonction :

◆ setMaxPoint()

void Arcane::AMRPatchPosition::setMaxPoint ( CartCoord3 max_point)

Méthode permettant de définir la position max de la boite englobante.

Paramètres
max_pointla position max.

Définition à la ligne 115 du fichier AMRPatchPosition.cc.

Référencé par cut(), patchDown(), et patchUp().

+ Voici le graphe des appelants de cette fonction :

◆ setMinPoint()

void Arcane::AMRPatchPosition::setMinPoint ( CartCoord3 min_point)

Méthode permettant de définir la position min de la boite englobante.

Paramètres
min_pointla position min.

Définition à la ligne 97 du fichier AMRPatchPosition.cc.

Référencé par cut(), patchDown(), et patchUp().

+ Voici le graphe des appelants de cette fonction :

◆ setOverlapLayerSize()

void Arcane::AMRPatchPosition::setOverlapLayerSize ( Int32 layer_size)

Méthode permettant de définir le nombre de couches de mailles de recouvrement du patch.

Paramètres
layer_sizele nombre de couches de mailles de recouvrement

Définition à la ligne 133 du fichier AMRPatchPosition.cc.

Documentation des données membres

◆ m_level

Int32 Arcane::AMRPatchPosition::m_level
private

Définition à la ligne 356 du fichier AMRPatchPosition.h.

◆ m_max_point

CartCoord3 Arcane::AMRPatchPosition::m_max_point
private

Définition à la ligne 358 du fichier AMRPatchPosition.h.

◆ m_min_point

CartCoord3 Arcane::AMRPatchPosition::m_min_point
private

Définition à la ligne 357 du fichier AMRPatchPosition.h.

◆ m_overlap_layer_size

Int32 Arcane::AMRPatchPosition::m_overlap_layer_size
private

Définition à la ligne 359 du fichier AMRPatchPosition.h.


La documentation de cette classe a été générée à partir des fichiers suivants :