Construction des uniqueId() des faces. Plus de détails...
Classes | |
class | AnyFaceBitonicSortTraits |
Fonctor pour trier les AnyFaceInfo via le tri bitonic. Plus de détails... | |
class | AnyFaceInfo |
Infos pour gérer les faces des sous-domaines. Plus de détails... | |
class | BoundaryFaceBitonicSortTraits |
Fonctor pour trier les BoundaryFaceInfo via le tri bitonic. Plus de détails... | |
class | BoundaryFaceInfo |
Infos pour gérer les faces frontières des sous-domaines. Plus de détails... | |
class | NarrowCellFaceInfo |
Stocke les infos sur une face d'une maille. Plus de détails... | |
class | ResendCellInfo |
class | UniqueIdSorter |
class | WideCellFaceInfo |
Stocke les infos sur une face d'une maille. Plus de détails... | |
Types publics | |
typedef NarrowCellFaceInfo | CellFaceInfo |
Fonctions membres publiques | |
FaceUniqueIdBuilder2 (DynamicMesh *mesh) | |
Construit une instance pour le maillage mesh. | |
void | computeFacesUniqueIdAndOwnerVersion3 () |
Calcul les numéros uniques de chaque face en parallèle. | |
void | computeFacesUniqueIdAndOwnerVersion5 () |
Calcule les uniqueId() via un hash généré par les uniqueId() des noeuds. | |
Fonctions membres publiques hérités de Arccore::TraceAccessor | |
TraceAccessor (ITraceMng *m) | |
Construit un accesseur via le gestionnaire de trace m. | |
TraceAccessor (const TraceAccessor &rhs) | |
Constructeur par recopie. | |
TraceAccessor & | operator= (const TraceAccessor &rhs) |
Opérateur de recopie. | |
virtual | ~TraceAccessor () |
Libère les ressources. | |
ITraceMng * | traceMng () const |
Gestionnaire de trace. | |
TraceMessage | info () const |
Flot pour un message d'information. | |
TraceMessage | pinfo () const |
Flot pour un message d'information en parallèle. | |
TraceMessage | info (char category) const |
Flot pour un message d'information d'une catégorie donnée. | |
TraceMessage | pinfo (char category) const |
Flot pour un message d'information parallèle d'une catégorie donnée. | |
TraceMessage | info (bool v) const |
Flot pour un message d'information. | |
TraceMessage | warning () const |
Flot pour un message d'avertissement. | |
TraceMessage | pwarning () const |
TraceMessage | error () const |
Flot pour un message d'erreur. | |
TraceMessage | perror () const |
TraceMessage | log () const |
Flot pour un message de log. | |
TraceMessage | plog () const |
Flot pour un message de log. | |
TraceMessage | logdate () const |
Flot pour un message de log précédé de la date. | |
TraceMessage | fatal () const |
Flot pour un message d'erreur fatale. | |
TraceMessage | pfatal () const |
Flot pour un message d'erreur fatale en parallèle. | |
TraceMessageDbg | debug (Trace::eDebugLevel=Trace::Medium) const |
Flot pour un message de debug. | |
Trace::eDebugLevel | configDbgLevel () const |
Niveau debug du fichier de configuration. | |
TraceMessage | info (Int32 verbose_level) const |
Flot pour un message d'information d'un niveau donné | |
TraceMessage | linfo () const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
TraceMessage | linfo (Int32 relative_level) const |
Flot pour un message d'information avec le niveau d'information local à cette instance. | |
void | fatalMessage (const StandaloneTraceMessage &o) const |
Fonctions membres privées | |
void | _resendCellsAndComputeFacesUniqueId (ConstArrayView< AnyFaceInfo > all_csi) |
void | _checkFacesUniqueId () |
Vérifie que toutes les faces ont un uid valide. | |
void | _unsetFacesUniqueId () |
Invalide les uid pour être certain qu'ils seront tous positionnés. | |
void | _computeAndSortBoundaryFaces (Array< BoundaryFaceInfo > &boundary_faces_info) |
Détermine la liste des faces frontières de chaque sous-domaine et les trie sur tous les procs. | |
void | _computeParallel () |
Calcul les numéros uniques de chaque face en parallèle. | |
void | _computeSequential () |
Calcul les numéros uniques de chaque face en sequentiel. | |
Attributs privés | |
DynamicMesh * | m_mesh = nullptr |
IParallelMng * | m_parallel_mng = nullptr |
bool | m_is_verbose = false |
Membres hérités additionnels | |
Fonctions membres protégées hérités de Arccore::TraceAccessor | |
void | _setLocalVerboseLevel (Int32 v) |
Int32 | _localVerboseLevel () const |
Construction des uniqueId() des faces.
Cette classe permet de calculer les uniqueId() des faces. Après appel à computeFacesUniqueId(), les champs uniqueId() et owner() de chaque face sont positionnés.
Cette algorithme garanti que la numérotation est la même indépendamment du découpage et du nombre de processeurs. En séquentiel, l'algorithme peut s'écrire comme suit:
L'algorithme séquentiel suppose qu'on parcourt les mailles dans l'ordre croissant des uniqueId(). Pour une face donnée, c'est donc la maille de plus petit uniqueId() qui va donner le uniqueId() de la face et par la même le propriétaire de cette face.
Cette version utilise un tri parallèle pour garantir que le nombre de messages augmente en log2(N), avec N le nombre de processeurs. Cela évite d'avoir potentiellement un grand nombre de messages, ce qui n'est pas supporté par certaines implémentations MPI (par exemple MPC).
Définition à la ligne 69 du fichier FaceUniqueIdBuilder2.cc.
Définition à la ligne 84 du fichier FaceUniqueIdBuilder2.cc.
|
explicit |
Construit une instance pour le maillage mesh.
Définition à la ligne 470 du fichier FaceUniqueIdBuilder2.cc.
|
private |
Vérifie que toutes les faces ont un uid valide.
Définition à la ligne 1063 du fichier FaceUniqueIdBuilder2.cc.
Références ARCANE_FATAL, Arcane::Face::cell(), Arccore::TraceAccessor::info(), et Arcane::Item::uniqueId().
|
private |
Détermine la liste des faces frontières de chaque sous-domaine et les trie sur tous les procs.
Définition à la ligne 667 du fichier FaceUniqueIdBuilder2.cc.
Références Arcane::Face::cell(), Arcane::IParallelMng::commRank(), Arcane::IParallelMng::commSize(), Arcane::Cell::face(), Arccore::TraceAccessor::info(), Arcane::Face::nbCell(), Arcane::Cell::nbFace(), Arcane::IParallelMng::recv(), Arcane::CheckedConvert::toInteger(), Arcane::Item::uniqueId(), et Arcane::IParallelMng::waitAllRequests().
Référencé par _computeParallel().
|
private |
Calcul les numéros uniques de chaque face en parallèle.
Définition à la ligne 538 du fichier FaceUniqueIdBuilder2.cc.
Références _computeAndSortBoundaryFaces(), Arcane::Face::cell(), Arcane::IParallelMng::commRank(), Arcane::Cell::face(), Arccore::TraceAccessor::info(), Arcane::Face::nbCell(), Arcane::Cell::nbFace(), et Arcane::Item::uniqueId().
Référencé par computeFacesUniqueIdAndOwnerVersion3().
|
private |
Calcul les numéros uniques de chaque face en sequentiel.
Définition à la ligne 500 du fichier FaceUniqueIdBuilder2.cc.
Références _unsetFacesUniqueId(), Arcane::Cell::faces(), et Arccore::TraceAccessor::info().
Référencé par computeFacesUniqueIdAndOwnerVersion3().
|
private |
Définition à la ligne 802 du fichier FaceUniqueIdBuilder2.cc.
|
private |
Invalide les uid pour être certain qu'ils seront tous positionnés.
Définition à la ligne 1049 du fichier FaceUniqueIdBuilder2.cc.
Références Arcane::Item::mutableItemBase().
Référencé par _computeSequential().
void Arcane::mesh::FaceUniqueIdBuilder2::computeFacesUniqueIdAndOwnerVersion3 | ( | ) |
Calcul les numéros uniques de chaque face en parallèle.
Définition à la ligne 486 du fichier FaceUniqueIdBuilder2.cc.
Références _computeParallel(), _computeSequential(), et Arcane::IParallelMng::isParallel().
void Arcane::mesh::FaceUniqueIdBuilder2::computeFacesUniqueIdAndOwnerVersion5 | ( | ) |
Calcule les uniqueId() via un hash généré par les uniqueId() des noeuds.
Définition à la ligne 1012 du fichier FaceUniqueIdBuilder2.cc.
Références Arcane::IParallelMng::commRank(), Arccore::TraceAccessor::info(), Arcane::IParallelMng::isParallel(), Arcane::Item::mutableItemBase(), Arcane::Face::nbCell(), Arcane::ItemWithNodes::nbNode(), Arcane::ItemWithNodes::nodes(), et Arcane::MutableItemBase::setOwner().
Définition à la ligne 100 du fichier FaceUniqueIdBuilder2.cc.
|
private |
Définition à la ligne 98 du fichier FaceUniqueIdBuilder2.cc.
|
private |
Définition à la ligne 99 du fichier FaceUniqueIdBuilder2.cc.