Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::SplitSDMeshPartitioner

Partitioneur de maillage inspiré de la bibliothèque SplitSD, développé initialement à l'ONERA pour Dassault Aviation. Plus de détails...

#include <arcane/cea/SplitSDMeshPartitioner.h>

+ Graphe d'héritage de Arcane::SplitSDMeshPartitioner:
+ Graphe de collaboration de Arcane::SplitSDMeshPartitioner:

Fonctions membres publiques

 SplitSDMeshPartitioner (const ServiceBuildInfo &sbi)
 
virtual void build ()
 Construction de niveau build du service.
 
virtual void partitionMesh (bool initial_partition)
 
virtual void partitionMesh (bool initial_partition, Int32 nb_part)
 
- Fonctions membres publiques hérités de Arcane::ArcaneSplitSDMeshPartitionerObject
 ArcaneSplitSDMeshPartitionerObject (const Arcane::ServiceBuildInfo &sbi)
 Constructeur.
 
virtual ~ArcaneSplitSDMeshPartitionerObject ()
 Destructeur.
 
CaseOptionsSplitSDMeshPartitioneroptions () const
 Options du jeu de données du service.
 
- Fonctions membres publiques hérités de Arcane::MeshPartitionerBase
 MeshPartitionerBase (const ServiceBuildInfo &sbi)
 
ISubDomainsubDomain () const
 
IMeshmesh () const
 Maillage associé au partitionneur.
 
void setMaximumComputationTime (Real v) override
 Positionne la proportion du temps de calcul.
 
virtual Real maximumComputationTime () const
 
virtual void setImbalance (Real v)
 Positionne le déséquilibre de temps de calcul.
 
virtual Real imbalance () const
 Déséquilibre de temps de calcul.
 
virtual void setMaxImbalance (Real v)
 Positionne le déséquilibre maximal autorisé
 
virtual Real maxImbalance () const
 Déséquilibre maximal autorisé
 
virtual void setComputationTimes (RealConstArrayView v)
 Temps de calcul de se sous-domaine. Le premier élément indique le temps de calcul du sous-domaine correspondante aux calcul dont le cout est proportionnel aux mailles. Les suivants doivent être associées à une variable (à faire).
 
virtual RealConstArrayView computationTimes () const
 
virtual void setCellsWeight (ArrayView< float > weights, Integer nb_weight)
 Permet de définir les poids des objets à partitionner : on doit utiliser le ILoadBalanceMng maintenant.
 
virtual ArrayView< floatcellsWeight () const
 
virtual Integer nbCellWeight () const
 
virtual void setILoadBalanceMng (ILoadBalanceMng *mng)
 Change le ILoadBalanceMng à utiliser.
 
virtual ILoadBalanceMngloadBalanceMng () const
 
virtual void notifyEndPartition ()
 Notification lors de la fin d'un repartionnement (après échange des entités)
 
virtual void changeOwnersFromCells ()
 Positionne les nouveaux propriétaires des noeuds, arêtes et faces à partir des mailles.
 
virtual void initConstraints (bool uidref=true)
 
virtual void freeConstraints ()
 
virtual Int32 nbOwnCellsWithConstraints () const
 
virtual Real getNeighbourCellsUidWithConstraints (Cell cell, Int64Array &neighbourcells, Array< float > *commWeights=NULL, bool noCellContrib=false)
 
virtual Integer nbNeighbourCellsWithConstraints (Cell cell)
 
virtual void getNeighbourNodesUidWithConstraints (Cell cell, Int64UniqueArray neighbournodes)
 
virtual Int32 localIdWithConstraints (Cell cell)
 
virtual Int32 localIdWithConstraints (Int32 cell_lid)
 
virtual void invertArrayLid2LidCompacted ()
 
virtual SharedArray< floatcellsWeightsWithConstraints (Int32 max_nb_weight=0, bool ask_lb_cells=false)
 
virtual SharedArray< floatcellsSizeWithConstraints ()
 
virtual bool cellUsedWithConstraints (Cell cell)
 
virtual bool cellUsedWithWeakConstraints (std::pair< Int64, Int64 > &paired_item)
 
virtual void changeCellOwner (Item cell, VariableItemInt32 &cells_new_owner, Int32 new_owner)
 
virtual bool haveConstraints ()
 
virtual bool haveWeakConstraints ()
 
- Fonctions membres publiques hérités de Arcane::AbstractService
virtual ~AbstractService ()
 Destructeur.
 
virtual IServiceInfoserviceInfo () const
 Accès aux informations du service.
 
virtual IBaseserviceParent () const
 Accès à l'interface de base des principaux objets Arcane.
 
virtual IServiceserviceInterface ()
 Retourne l'interface bas niveau IService du service.
 
- 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.
 
TraceAccessoroperator= (const TraceAccessor &rhs)
 Opérateur de recopie.
 
virtual ~TraceAccessor ()
 Libère les ressources.
 
ITraceMngtraceMng () 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 publiques hérités de Arcane::IService
virtual ~IService ()
 Libère les ressources.
 
- Fonctions membres publiques hérités de Arcane::IMeshPartitioner
virtual ~IMeshPartitioner ()
 Libère les ressources.
 
virtual IPrimaryMeshprimaryMesh () override
 Maillage associé
 
- Fonctions membres publiques hérités de Arcane::IMeshPartitionerBase
virtual ~IMeshPartitionerBase ()=default
 Libère les ressources.
 

Fonctions membres privées

void init (bool initial_partition, StrucInfoProc *&InfoProc, StructureBlocEtendu *&Domaine, StrucMaillage *&Maillage)
 initialisation des structures
 
void initPoids (bool initial_partition)
 initialisation des poids (m_cells_weight => m_poids_aux_mailles)
 
void fin (StrucInfoProc *&InfoProc, StructureBlocEtendu *&Domaine, StrucMaillage *&Maillage)
 libération mémoire des structures
 
void MAJDomaine (StructureBlocEtendu *Domaine)
 mise à jour de la structure locale (noeuds sur les interfaces avec sous-domaines voisins)
 
void MAJMaillageMaitre (StrucInfoProc *InfoProc, StructureBlocEtendu *Domaine, StrucMaillage *Maillage)
 mise à jour de la structure sur le processeur 0
 
void verifMaillageMaitre (StrucMaillage *Maillage)
 fonction de vérification de la cohérence (réciprocité) des interfaces
 
void MAJDeltaGlobal (StrucInfoProc *InfoProc, StrucMaillage *Maillage, double tolerance)
 On utilise une méthode de parcours frontal pour aller d'un noeud surchargé vers les autres noeuds en mémorisant le chemin pour mettre à jour les Delta sur les interfaces.
 
void MAJDelta (double don, int iDOmTmpPrec, int iDomTmp, StrucListeDomMail *ListeDomaines)
 fonction de décalage du Delta associé à une interface recherchée pour un couple, domaine et numéro de voisin, spécifié
 
double CalculDeltaMin (StrucMaillage *Maillage, double deltaMin, int iterEquilibrage, int NbMaxIterEquil)
 calcul un deltaMin en fonction des transferts locaux
 
void Equilibrage (StrucInfoProc *InfoProc, StructureBlocEtendu *Domaine, StrucMaillage *Maillage)
 phase itérative pour équilibrer la charge
 
void Equil2Dom (int *MasqueDesNoeuds, int *MasqueDesElements, int marqueVu, int marqueNonVu, StrucInfoProc *InfoProc, StructureBlocEtendu *Domaine, StrucMaillage *Maillage, int indDomCharge, int indDomVois, double Delta)
 phase de transfert entre 2 domaines, MAJ des domaines
 
void SelectElements (int *MasqueDesNoeuds, int *MasqueDesElements, int marqueVu, int marqueNonVu, StrucInfoProc *InfoProc, StructureBlocEtendu *Domaine, double Delta, int indDomVois, Arcane::Array< Arcane::Cell > &ListeElements)
 sélection d'éléments dans un domaine pour équilibrage entre 2 dom, en faisant un parcour frontal depuis l'interface
 
int ParcoursFrontalDelta (int *MasqueDesNoeuds, int *MasqueDesElements, int marqueVu, int marqueNonVu, double Delta, int *pNbFronts, int NbFrontsMax, Arcane::Array< Arcane::Node > &FrontsNoeuds, int *IndFrontsNoeuds, Arcane::Array< Arcane::Cell > &FrontsElements, int *IndFrontsElements)
 parcours frontal limité suivant le Delta (poids cumulés des éléments pris dans les fronts), retourne un en cas de blocage
 
void LissageDuFront (int *MasqueDesNoeuds, int *MasqueDesElements, int marqueVu, int marqueNonVu, int NbFronts, Arcane::Array< Arcane::Node > &FrontsNoeuds, int *IndFrontsNoeuds, Arcane::Array< Arcane::Cell > &FrontsElements, int *IndFrontsElements)
 
void ConnexifieDomaine (StrucInfoProc *InfoProc, StructureBlocEtendu *Domaine, StrucMaillage *Maillage, double tolConnexite)
 déplace des parties du sous-domaine lorsqu'elles sont trop petites et non connexes
 
int getDomVoisMaxFace (Arcane::Array< Arcane::Cell > &ListeElements, int me)
 recherche le domaine voisin ayant le max de Faces en commun avec le groupe de mailles
 
intGetMasqueDesNoeuds (StrucInfoProc *InfoProc)
 création d'un tableau qui sert de masque sur les LocalId des noeuds
 
intGetMasqueDesElements (StrucInfoProc *InfoProc)
 création d'un tableau qui sert de masque sur les LocalId des éléments
 
void LibereInfoProc (StrucInfoProc *&InfoProc)
 
void LibereDomaine (StructureBlocEtendu *&Domaine)
 
void LibereMaillage (StrucMaillage *&Maillage)
 
void AfficheDomaine (int NbDom, StructureBlocEtendu *Domaine)
 
void AfficheMaillage (StrucMaillage *Maillage)
 
void AfficheListeDomaines (StrucListeDomMail *ListeDomaines, int NbDomaines)
 
void AfficheEquilMaillage (StrucMaillage *Maillage)
 
voidRecoitMessage (StrucInfoProc *InfoProc, int FromProc, int Tag, int *pTailleTMP)
 
void EnvoieMessage (StrucInfoProc *InfoProc, int ToProc, int Tag, void *TabTMP, int TailleTMP)
 
voidDiffuseMessage (StrucInfoProc *InfoProc, int FromProc, void *TabTMP, int TailleTMP)
 
int TailleDom (StructureBlocEtendu *Domaine)
 Donne la taille en octets nécessaire pour le stockage mémoire d'un domaine (sans la liste des noeuds sur l'interface) en vue d'une communication.
 
void PackDom (StrucInfoProc *InfoProc, StructureBlocEtendu *Domaine, void *TabTMP, int TailleTMP, MPI_Comm comm)
 
void UnpackDom (void *TabTMP, int TailleTMP, MPI_Comm comm, StrucListeDomMail *DomMail)
 
int TailleEquil ()
 
void PackEquil (StrucInfoProc *InfoProc, int indDomCharge, int indDomVois, double Delta, void *TabTMP, int TailleTMP, MPI_Comm comm)
 
void UnpackEquil (void *TabTMP, int TailleTMP, MPI_Comm comm, int *indDomCharge, int *indDomVois, double *Delta)
 

Attributs privés

VariableCellReal m_poids_aux_mailles
 

Membres hérités additionnels

- Types publics hérités de Arcane::MeshPartitionerBase
enum  eMarkCellWithConstraint {
  eCellClassical , eCellReference , eCellGrouped , eCellGhost ,
  eCellInAConstraint
}
 
- Fonctions membres publiques statiques hérités de Arcane::ArcaneSplitSDMeshPartitionerObject
template<typename ServiceClassType >
static void fillServiceInfo (Arcane::ServiceInfo *si)
 
- Fonctions membres protégées hérités de Arcane::MeshPartitionerBase
virtual void dumpObject (String filename="toto")
 Dump les informations de repartitionnement sur le disque.
 
virtual voidgetCommunicator () const
 
virtual Parallel::Communicator communicator () const
 
virtual bool cellComm ()
 
virtual void _initArrayCellsWithConstraints ()
 
virtual void _initFilterLidCells ()
 
virtual void _initUidRef ()
 
virtual void _initUidRef (VariableCellInteger &cell_renum_uid)
 
virtual void _initLid2LidCompacted ()
 
virtual void _initNbCellsWithConstraints ()
 
virtual void _clearCellWgt ()
 
- Fonctions membres protégées hérités de Arcane::AbstractService
 AbstractService (const ServiceBuildInfo &)
 Constructeur à partir d'un ServiceBuildInfo.
 
- Fonctions membres protégées hérités de Arccore::TraceAccessor
void _setLocalVerboseLevel (Int32 v)
 
Int32 _localVerboseLevel () const
 
- Fonctions membres protégées hérités de Arcane::IService
 IService ()
 Constructeur.
 
- Attributs protégés hérités de Arcane::MeshPartitionerBase
IItemFamilym_cell_family = nullptr
 

Description détaillée

Partitioneur de maillage inspiré de la bibliothèque SplitSD, développé initialement à l'ONERA pour Dassault Aviation.

Définition à la ligne 223 du fichier SplitSDMeshPartitioner.h.

Documentation des constructeurs et destructeur

◆ SplitSDMeshPartitioner()

Arcane::SplitSDMeshPartitioner::SplitSDMeshPartitioner ( const ServiceBuildInfo sbi)

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

Documentation des fonctions membres

◆ AfficheDomaine()

void Arcane::SplitSDMeshPartitioner::AfficheDomaine ( int  NbDom,
StructureBlocEtendu Domaine 
)
private

Définition à la ligne 1727 du fichier SplitSDMeshPartitioner.cc.

◆ AfficheEquilMaillage()

void Arcane::SplitSDMeshPartitioner::AfficheEquilMaillage ( StrucMaillage Maillage)
private

Définition à la ligne 1801 du fichier SplitSDMeshPartitioner.cc.

◆ AfficheListeDomaines()

void Arcane::SplitSDMeshPartitioner::AfficheListeDomaines ( StrucListeDomMail ListeDomaines,
int  NbDomaines 
)
private

Définition à la ligne 1785 du fichier SplitSDMeshPartitioner.cc.

◆ AfficheMaillage()

void Arcane::SplitSDMeshPartitioner::AfficheMaillage ( StrucMaillage Maillage)
private

Définition à la ligne 1758 du fichier SplitSDMeshPartitioner.cc.

◆ build()

virtual void Arcane::SplitSDMeshPartitioner::build ( void  )
inlinevirtual

Construction de niveau build du service.

L'appel à build est effectué au moment de sa construction, usuellement au niveau de sa lecture dans les options en phase1.

Réimplémentée à partir de Arcane::AbstractService.

Définition à la ligne 233 du fichier SplitSDMeshPartitioner.h.

◆ CalculDeltaMin()

double Arcane::SplitSDMeshPartitioner::CalculDeltaMin ( StrucMaillage Maillage,
double  deltaMin,
int  iterEquilibrage,
int  NbMaxIterEquil 
)
private

calcul un deltaMin en fonction des transferts locaux

Définition à la ligne 708 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::arcaneIsDebug(), StrucListeVoisMail::Delta, StrucListeDomMail::ListeVoisins, StrucListeDomMail::NbVoisins, et StrucListeDomMail::Poids.

◆ ConnexifieDomaine()

void Arcane::SplitSDMeshPartitioner::ConnexifieDomaine ( StrucInfoProc InfoProc,
StructureBlocEtendu Domaine,
StrucMaillage Maillage,
double  tolConnexite 
)
private

◆ DiffuseMessage()

void * Arcane::SplitSDMeshPartitioner::DiffuseMessage ( StrucInfoProc InfoProc,
int  FromProc,
void TabTMP,
int  TailleTMP 
)
private

Fonction qui se charge de diffuser un tableau (envois et réception). Il est fait un MPI_Bcast mais il faut que la taille du tableau soit connue sur tous les processeurs.

{Remarque:} La taille du tableau est en octets.

@memo Diffusion d'un message.

Paramètres
InfoProc(I) structure décrivant le processeur sur lequel tourne l'application.
FromProc(I) noeud de calcul depuis lequel on diffuse le tableau.
TabTMP(I) tableau qui est envoyé.
TailleTMP(I) taille de TabTMP (en octets).
Renvoie
(void *) TabTMP : tableau qui est reçu.
Voir également
Equilibrage
Auteur
Eric Brière de l'Isle, ONERA, DRIS/SRL
Version
Création Octobre 1998

Définition à la ligne 2009 du fichier SplitSDMeshPartitioner.cc.

Références Arccore::TraceAccessor::pfatal().

◆ EnvoieMessage()

void Arcane::SplitSDMeshPartitioner::EnvoieMessage ( StrucInfoProc InfoProc,
int  ToProc,
int  Tag,
void TabTMP,
int  TailleTMP 
)
private

Fonction qui se charge d'envoyer un tableau.

{Remarque:} La taille du tableau est en octets.

@memo Envoi d'un message.

Paramètres
InfoProc(I) structure décrivant le processeur sur lequel tourne l'application.
ToProc(I) noeud de calcul de destination.
Tag(I) marque pour différencier les messages.
TabTMP(I) tableau qui est envoyé.
TailleTMP(I) taille de TabTMP (en octets).
Renvoie
void
Voir également
Equilibrage,MAJMaillageMaitre
Auteur
Eric Brière de l'Isle, ONERA, DRIS/SRL
Version
Création Janvier 1997 - 26/08/98

Définition à la ligne 1929 du fichier SplitSDMeshPartitioner.cc.

Références Arccore::TraceAccessor::pfatal().

◆ Equil2Dom()

void Arcane::SplitSDMeshPartitioner::Equil2Dom ( int MasqueDesNoeuds,
int MasqueDesElements,
int  marqueVu,
int  marqueNonVu,
StrucInfoProc InfoProc,
StructureBlocEtendu Domaine,
StrucMaillage Maillage,
int  indDomCharge,
int  indDomVois,
double  Delta 
)
private

phase de transfert entre 2 domaines, MAJ des domaines

Définition à la ligne 986 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::IK_Cell, Arcane::IPrimaryMesh::itemsNewOwner(), et Arcane::IMesh::toPrimaryMesh().

◆ Equilibrage()

void Arcane::SplitSDMeshPartitioner::Equilibrage ( StrucInfoProc InfoProc,
StructureBlocEtendu Domaine,
StrucMaillage Maillage 
)
private

◆ fin()

void Arcane::SplitSDMeshPartitioner::fin ( StrucInfoProc *&  InfoProc,
StructureBlocEtendu *&  Domaine,
StrucMaillage *&  Maillage 
)
private

libération mémoire des structures

Définition à la ligne 174 du fichier SplitSDMeshPartitioner.cc.

◆ getDomVoisMaxFace()

int Arcane::SplitSDMeshPartitioner::getDomVoisMaxFace ( Arcane::Array< Arcane::Cell > &  ListeElements,
int  me 
)
private

recherche le domaine voisin ayant le max de Faces en commun avec le groupe de mailles

Définition à la ligne 1566 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::Face::backCell(), Arcane::Cell::face(), Arcane::Face::frontCell(), Arcane::Face::isSubDomainBoundary(), Arcane::Cell::nbFace(), et Arcane::Item::owner().

◆ GetMasqueDesElements()

int * Arcane::SplitSDMeshPartitioner::GetMasqueDesElements ( StrucInfoProc InfoProc)
private

création d'un tableau qui sert de masque sur les LocalId des éléments

Définition à la ligne 1642 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::IMeshBase::allCells(), ENUMERATE_CELL, et Arcane::Item::localId().

◆ GetMasqueDesNoeuds()

int * Arcane::SplitSDMeshPartitioner::GetMasqueDesNoeuds ( StrucInfoProc InfoProc)
private

création d'un tableau qui sert de masque sur les LocalId des noeuds

Définition à la ligne 1616 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::IMeshBase::allNodes(), ENUMERATE_NODE, et Arcane::Item::localId().

◆ init()

void Arcane::SplitSDMeshPartitioner::init ( bool  initial_partition,
StrucInfoProc *&  InfoProc,
StructureBlocEtendu *&  Domaine,
StrucMaillage *&  Maillage 
)
private

initialisation des structures

Définition à la ligne 92 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::IParallelMng::commSize(), ENUMERATE_CELL, Arcane::IK_Cell, Arcane::IMeshBase::ownCells(), et Arcane::Item::owner().

◆ initPoids()

void Arcane::SplitSDMeshPartitioner::initPoids ( bool  initial_partition)
private

initialisation des poids (m_cells_weight => m_poids_aux_mailles)

Définition à la ligne 152 du fichier SplitSDMeshPartitioner.cc.

Références ENUMERATE_CELL, et Arcane::IMeshBase::ownCells().

◆ LibereDomaine()

void Arcane::SplitSDMeshPartitioner::LibereDomaine ( StructureBlocEtendu *&  Domaine)
private

Définition à la ligne 1679 du fichier SplitSDMeshPartitioner.cc.

◆ LibereInfoProc()

void Arcane::SplitSDMeshPartitioner::LibereInfoProc ( StrucInfoProc *&  InfoProc)
private

Définition à la ligne 1670 du fichier SplitSDMeshPartitioner.cc.

◆ LibereMaillage()

void Arcane::SplitSDMeshPartitioner::LibereMaillage ( StrucMaillage *&  Maillage)
private

Définition à la ligne 1701 du fichier SplitSDMeshPartitioner.cc.

◆ LissageDuFront()

void Arcane::SplitSDMeshPartitioner::LissageDuFront ( int MasqueDesNoeuds,
int MasqueDesElements,
int  marqueVu,
int  marqueNonVu,
int  NbFronts,
Arcane::Array< Arcane::Node > &  FrontsNoeuds,
int IndFrontsNoeuds,
Arcane::Array< Arcane::Cell > &  FrontsElements,
int IndFrontsElements 
)
private

lissage du dernier front obtenu par parcours frontal, de manière à intégrer dans ce front les éléments dont tous les noeuds sont déjà pris dans les fronts précédents

Définition à la ligne 1293 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::Node::cell(), Arcane::Item::localId(), Arcane::Node::nbCell(), Arcane::ItemWithNodes::nbNode(), et Arcane::ItemWithNodes::node().

◆ MAJDelta()

void Arcane::SplitSDMeshPartitioner::MAJDelta ( double  don,
int  iDOmTmpPrec,
int  iDomTmp,
StrucListeDomMail ListeDomaines 
)
private

fonction de décalage du Delta associé à une interface recherchée pour un couple, domaine et numéro de voisin, spécifié

Définition à la ligne 684 du fichier SplitSDMeshPartitioner.cc.

Références StrucListeVoisMail::Delta, StrucListeDomMail::ListeVoisins, StrucListeDomMail::NbVoisins, et StrucListeVoisMail::NoDomVois.

◆ MAJDeltaGlobal()

void Arcane::SplitSDMeshPartitioner::MAJDeltaGlobal ( StrucInfoProc InfoProc,
StrucMaillage Maillage,
double  tolerance 
)
private

On utilise une méthode de parcours frontal pour aller d'un noeud surchargé vers les autres noeuds en mémorisant le chemin pour mettre à jour les Delta sur les interfaces.

Définition à la ligne 444 du fichier SplitSDMeshPartitioner.cc.

Références StrucListeDomMail::ListeVoisins, StrucListeDomMail::NbVoisins, StrucListeVoisMail::NoDomVois, et StrucListeDomMail::Poids.

◆ MAJDomaine()

◆ MAJMaillageMaitre()

void Arcane::SplitSDMeshPartitioner::MAJMaillageMaitre ( StrucInfoProc InfoProc,
StructureBlocEtendu Domaine,
StrucMaillage Maillage 
)
private

mise à jour de la structure sur le processeur 0

Définition à la ligne 305 du fichier SplitSDMeshPartitioner.cc.

◆ PackDom()

void Arcane::SplitSDMeshPartitioner::PackDom ( StrucInfoProc InfoProc,
StructureBlocEtendu Domaine,
void TabTMP,
int  TailleTMP,
MPI_Comm  comm 
)
private

Stocke le contenu d'un Domaine dans un tableau en vue d'une communication (sans la liste des noeuds sur l'interface)

@memo Stockage d'une StructureBlocEtendu dans un tableau.

Paramètres
Domaine(I) StructureBlocEtendu
TabTMP(I/O) tableau que l'on remplit
TailleTMP(I) taille totale du tableau TabTMP
comm(I) environnement de communication
Renvoie
void
Voir également
TailleDom, UnpackDom
Auteur
Eric Brière de l'Isle, Novembre 2007

Définition à la ligne 2076 du fichier SplitSDMeshPartitioner.cc.

◆ PackEquil()

void Arcane::SplitSDMeshPartitioner::PackEquil ( StrucInfoProc InfoProc,
int  indDomCharge,
int  indDomVois,
double  Delta,
void TabTMP,
int  TailleTMP,
MPI_Comm  comm 
)
private

Stocke les 2 entiers et le double

Définition à la ligne 2147 du fichier SplitSDMeshPartitioner.cc.

◆ ParcoursFrontalDelta()

int Arcane::SplitSDMeshPartitioner::ParcoursFrontalDelta ( int MasqueDesNoeuds,
int MasqueDesElements,
int  marqueVu,
int  marqueNonVu,
double  Delta,
int pNbFronts,
int  NbFrontsMax,
Arcane::Array< Arcane::Node > &  FrontsNoeuds,
int IndFrontsNoeuds,
Arcane::Array< Arcane::Cell > &  FrontsElements,
int IndFrontsElements 
)
private

parcours frontal limité suivant le Delta (poids cumulés des éléments pris dans les fronts), retourne un en cas de blocage

Définition à la ligne 1163 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::Node::cell(), Arcane::Item::localId(), Arcane::Node::nbCell(), Arcane::ItemWithNodes::nbNode(), et Arcane::ItemWithNodes::node().

◆ partitionMesh() [1/2]

void Arcane::SplitSDMeshPartitioner::partitionMesh ( bool  initial_partition)
virtual

Repartitionne le maillage mesh

Cette méthode change les propriétaires des entités et remplit la variable IItemFamily::itemsNewOwner() de chaque famille d'entité du maillage mesh avec le numéro du nouveau sous-domaine propriétaire.

Note
Cette méthode est réservée aux développeurs Arcane. Si un module souhaite effectuer un repartitionnement, il faut appeler la méthode IMeshUtilities::partitionAndExchangeMeshWithReplication() qui gère à la fois le partitionnement et l'échange des informations et supporte la réplication de domaine.

Réimplémentée à partir de Arcane::IMeshPartitioner.

Définition à la ligne 62 du fichier SplitSDMeshPartitioner.cc.

◆ partitionMesh() [2/2]

virtual void Arcane::SplitSDMeshPartitioner::partitionMesh ( bool  initial_partition,
Int32  nb_part 
)
inlinevirtual

Implémente Arcane::IMeshPartitioner.

Définition à la ligne 238 du fichier SplitSDMeshPartitioner.h.

◆ RecoitMessage()

void * Arcane::SplitSDMeshPartitioner::RecoitMessage ( StrucInfoProc InfoProc,
int  FromProc,
int  Tag,
int pTailleTMP 
)
private

Reçoit un tableau de taille (in)connue via MPI. Alloue ce tableau et le retourne (en sortie).

{Remarque:} la taille du tableau est positive lorsqu'elle est connue sinon il est fait appel aux fonctions MPI_Probe et MPI_Get_count pour connaître la taille.

@memo Réception d'un tableau à l'aide de la libriarie de communication MPI.

Paramètres
InfoProc(I) structure décrivant le processeur sur lequel tourne l'application.
FromProc(I) numéro du processeur qui envoit.
Tag(I) marque pour distinguer les messages.
pTailleTMP(I/O) pointeur sur taille en octets du tableau TabTMP:\ <=0 si la taille du tableau est inconnue\ > 0 si la taille du tableau est connue.
Renvoie
(void*) TabTMP : tableau qui est envoyé.
Voir également
MAJMaillageMaitre
Auteur
Eric Brière de l'Isle, ONERA, DRIS/SRL
Version
Création Septembre 1996 - 26/08/98

Définition à la ligne 1852 du fichier SplitSDMeshPartitioner.cc.

Références Arccore::TraceAccessor::pfatal().

◆ SelectElements()

void Arcane::SplitSDMeshPartitioner::SelectElements ( int MasqueDesNoeuds,
int MasqueDesElements,
int  marqueVu,
int  marqueNonVu,
StrucInfoProc InfoProc,
StructureBlocEtendu Domaine,
double  Delta,
int  indDomVois,
Arcane::Array< Arcane::Cell > &  ListeElements 
)
private

sélection d'éléments dans un domaine pour équilibrage entre 2 dom, en faisant un parcour frontal depuis l'interface

Définition à la ligne 1040 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::IMeshBase::allCells(), ENUMERATE_CELL, Arcane::Item::localId(), Arcane::IMeshBase::ownCells(), et Arcane::Item::owner().

◆ TailleDom()

Integer Arcane::SplitSDMeshPartitioner::TailleDom ( StructureBlocEtendu Domaine)
private

Donne la taille en octets nécessaire pour le stockage mémoire d'un domaine (sans la liste des noeuds sur l'interface) en vue d'une communication.

@memo Donne la taille en octets d'une StructureBlocEtendu

Paramètres
Domaine(I) StructureBlocEtendu
Renvoie
(int) : la taille en octets
Voir également
PackDom, UnpackDom
Auteur
Eric Brière de l'Isle, Novembre 2007

Définition à la ligne 2055 du fichier SplitSDMeshPartitioner.cc.

Références Arcane::arcaneCheckArraySize().

◆ TailleEquil()

int Arcane::SplitSDMeshPartitioner::TailleEquil ( )
private

Donne la taille en octets nécessaire pour le stockage mémoire d'un entier pour le domaine chargé, un autre entier pour le domaine voisin, et un double pour le Delta (transfert en poids)

Définition à la ligne 2138 du fichier SplitSDMeshPartitioner.cc.

◆ UnpackDom()

void Arcane::SplitSDMeshPartitioner::UnpackDom ( void TabTMP,
int  TailleTMP,
MPI_Comm  comm,
StrucListeDomMail DomMail 
)
private

Extrait un Domaine d'un tableau en provenance d'une communication.

@memo Extraction des données pour renseigner une StrucListeDomMail

Paramètres
TabTMP(I) tableau d'où sont extraites les informations
TailleTMP(I) taille totale du tableau TabTMP
comm(I) environnement de communication pour la librairie
DomMail(I/O) StrucListeDomMail
Renvoie
void
Voir également
TailleDom, PackDom
Auteur
Eric Brière de l'Isle, Novembre 2007

Définition à la ligne 2115 du fichier SplitSDMeshPartitioner.cc.

◆ UnpackEquil()

void Arcane::SplitSDMeshPartitioner::UnpackEquil ( void TabTMP,
int  TailleTMP,
MPI_Comm  comm,
int indDomCharge,
int indDomVois,
double Delta 
)
private

Extrait les 2 entiers et le double d'un tableau en provenance d'une communication.

Définition à la ligne 2165 du fichier SplitSDMeshPartitioner.cc.

◆ verifMaillageMaitre()

void Arcane::SplitSDMeshPartitioner::verifMaillageMaitre ( StrucMaillage Maillage)
private

fonction de vérification de la cohérence (réciprocité) des interfaces

Définition à la ligne 403 du fichier SplitSDMeshPartitioner.cc.

Références StrucListeDomMail::ListeVoisins, StrucListeVoisMail::NbNoeudsInterface, StrucListeDomMail::NbVoisins, et StrucListeVoisMail::NoDomVois.

Documentation des données membres

◆ m_poids_aux_mailles

VariableCellReal Arcane::SplitSDMeshPartitioner::m_poids_aux_mailles
private

Définition à la ligne 345 du fichier SplitSDMeshPartitioner.h.


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