Service de partitionnement géométrique de maillage. Plus de détails...
Graphe d'héritage de Arcane::ArcaneGeometricMeshPartitionerService:
Graphe de collaboration de Arcane::ArcaneGeometricMeshPartitionerService:Fonctions membres publiques | |
| ArcaneGeometricMeshPartitionerService (const ServiceBuildInfo &sbi) | |
| IMesh * | mesh () const override |
| Maillage associé au partitionneur. | |
| void | build () override |
| Construction de niveau build du service. | |
| void | partitionMesh (bool initial_partition) override |
| void | partitionMesh (bool initial_partition, Int32 nb_part) override |
| void | notifyEndPartition () override |
| Notification lors de la fin d'un re-partitionnement (après échange des entités) | |
| void | setMaximumComputationTime (Real v) override |
| Positionne la proportion du temps de calcul. | |
| Real | maximumComputationTime () const override |
| void | setComputationTimes (RealConstArrayView v) override |
| 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). | |
| RealConstArrayView | computationTimes () const override |
| void | setImbalance (Real v) override |
| Positionne le déséquilibre de temps de calcul. | |
| Real | imbalance () const override |
| Déséquilibre de temps de calcul. | |
| void | setMaxImbalance (Real v) override |
| Positionne le déséquilibre maximal autorisé | |
| Real | maxImbalance () const override |
| Déséquilibre maximal autorisé | |
| ArrayView< float > | cellsWeight () const override |
| void | setCellsWeight (ArrayView< float > weights, Integer nb_weight) override |
| Permet de définir les poids des objets à partitionner : on doit utiliser le ILoadBalanceMng maintenant. | |
| void | setILoadBalanceMng (ILoadBalanceMng *) override |
| Change le ILoadBalanceMng à utiliser. | |
| ILoadBalanceMng * | loadBalanceMng () const override |
Fonctions membres publiques hérités de Arcane::ArcaneArcaneGeometricMeshPartitionerServiceObject | |
| ArcaneArcaneGeometricMeshPartitionerServiceObject (const Arcane::ServiceBuildInfo &sbi) | |
| Constructeur. | |
| virtual | ~ArcaneArcaneGeometricMeshPartitionerServiceObject () |
| Destructeur. | |
| CaseOptionsArcaneGeometricMeshPartitionerService * | options () const |
| Options du jeu de données du service. | |
Fonctions membres publiques hérités de Arcane::BasicService | |
| ~BasicService () override | |
| Libère les ressources. | |
| virtual ISubDomain * | subDomain () |
Fonctions membres publiques hérités de Arcane::AbstractService | |
| ~AbstractService () override | |
| Destructeur. | |
| IServiceInfo * | serviceInfo () const override |
| Accès aux informations du service. Voir IServiceInfo pour les détails. | |
| IBase * | serviceParent () const override |
| Accès à l'interface de base des principaux objets Arcane. | |
| IService * | serviceInterface () override |
| Retourne l'interface bas niveau IService du service. | |
Fonctions membres publiques hérités de Arcane::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 publiques hérités de Arcane::IService | |
| virtual | ~IService () |
| Libère les ressources. | |
Fonctions membres publiques hérités de Arcane::MeshAccessor | |
| MeshAccessor (ISubDomain *sd) | |
| MeshAccessor (IMesh *mesh) | |
| MeshAccessor (const MeshHandle &mesh_handle) | |
| Integer | nbCell () const |
| Retourne le nombre de mailles du maillage. | |
| Integer | nbFace () const |
| Retourne le nombre de faces du maillage. | |
| Integer | nbEdge () const |
| Retourne le nombre d'arêtes du maillage. | |
| Integer | nbNode () const |
| Retourne le nombre de noeuds du maillage. | |
| VariableNodeReal3 & | nodesCoordinates () const |
| Retourne les coordonnées des noeuds du maillage. | |
| NodeGroup | allNodes () const |
| Retourne le groupe contenant tous les noeuds. | |
| EdgeGroup | allEdges () const |
| Retourne le groupe contenant toutes les arêtes. | |
| FaceGroup | allFaces () const |
| Retourne le groupe contenant toutes les faces. | |
| CellGroup | allCells () const |
| Retourne le groupe contenant toutes les mailles. | |
| FaceGroup | outerFaces () const |
| Retourne le groupe contenant toutes les faces de le frontière. | |
| NodeGroup | ownNodes () const |
| Retourne le groupe contenant tous les noeuds propres à ce domaine. | |
| CellGroup | ownCells () const |
| Retourne le groupe contenant toutes les mailles propres à ce domaine. | |
| FaceGroup | ownFaces () const |
| Groupe contenant toutes les faces propres à ce domaine. | |
| EdgeGroup | ownEdges () const |
| Groupe contenant toutes les arêtes propres à ce domaine. | |
| IMesh * | mesh () const |
| const MeshHandle & | meshHandle () const |
Fonctions membres publiques hérités de Arcane::CommonVariables | |
| CommonVariables (IModule *c) | |
| Construit les références des variables communes pour le module c. | |
| CommonVariables (IVariableMng *variable_mng) | |
| Construit les références des variables communes pour le gestionnaire variable_mng. | |
| CommonVariables (ISubDomain *sd) | |
| Construit les références des variables communes pour le sous-domaine sd. | |
| virtual | ~CommonVariables () |
| Libère les ressources. | |
| Int32 | globalIteration () const |
| Numéro de l'itération courante. | |
| Real | globalTime () const |
| Temps courant. | |
| Real | globalOldTime () const |
| Temps courant précédent. | |
| Real | globalFinalTime () const |
| Temps final de la simulation. | |
| Real | globalDeltaT () const |
| Delta T courant. | |
| Real | globalCPUTime () const |
| Temps CPU utilisé (en seconde) | |
| Real | globalOldCPUTime () const |
| Temps CPU utilisé précédent (en seconde) | |
| Real | globalElapsedTime () const |
| Temps horloge (elapsed) utilisé (en seconde) | |
| Real | globalOldElapsedTime () const |
| Temps horloge (elapsed) utilisé précédent (en seconde) | |
Fonctions membres publiques hérités de Arcane::IMeshPartitioner | |
| virtual IPrimaryMesh * | primaryMesh () override |
| Maillage associé | |
| virtual void | partitionMesh (bool initial_partition)=0 |
Fonctions membres publiques hérités de Arcane::IMeshPartitionerBase | |
| virtual | ~IMeshPartitionerBase ()=default |
| Libère les ressources. | |
Fonctions membres privées | |
| Real3 | _computeBarycenter (const VariableCellReal3 &cells_center, CellVectorView cells) |
| Real3x3 | _computeInertiaTensor (Real3 center, const VariableCellReal3 &cells_center, CellVectorView cells) |
| Real3 | _findPrincipalAxis (Real3x3 tensor) |
| void | _partitionMesh2 () |
| void | _partitionMesh (bool initial_partition, Int32 nb_part) |
| bool | _partitionMeshRecursive (const VariableCellReal3 &cells_center, CellVectorView cells, Int32 partition_index, Int32 &part_id) |
| void | _printOwners () |
| Real3 | _computeEigenValuesAndVectors (ITraceMng *tm, Real3x3 tensor, Real3x3 &eigen_vectors, Real3 &eigen_values) |
Attributs privés | |
| Real | m_imbalance = 0.0 |
| Real | m_max_imbalance = 0.0 |
| Real | m_max_computation_time = 0.0 |
| Int32 | m_nb_weight = 0 |
| ArrayView< float > | m_cells_weight |
| UniqueArray< Real > | m_computation_times |
| Int32 | m_nb_part = 0 |
Membres hérités additionnels | |
Fonctions membres publiques statiques hérités de Arcane::ArcaneArcaneGeometricMeshPartitionerServiceObject | |
| template<typename ServiceClassType> | |
| static void | fillServiceInfo (Arcane::ServiceInfo *si) |
Attributs publics hérités de Arcane::CommonVariables | |
| VariableScalarInt32 | m_global_iteration |
| Itération courante. | |
| VariableScalarReal | m_global_time |
| Temps actuel. | |
| VariableScalarReal | m_global_deltat |
| Delta T global. | |
| VariableScalarReal | m_global_old_time |
| Temps précédent le temps actuel. | |
| VariableScalarReal | m_global_old_deltat |
| Delta T au temps précédent le temps global. | |
| VariableScalarReal | m_global_final_time |
| Temps final du cas. | |
| VariableScalarReal | m_global_old_cpu_time |
| Temps précédent CPU utilisé (en seconde) | |
| VariableScalarReal | m_global_cpu_time |
| Temps CPU utilisé (en seconde) | |
| VariableScalarReal | m_global_old_elapsed_time |
| Temps précédent horloge utilisé (en seconde) | |
| VariableScalarReal | m_global_elapsed_time |
| Temps horloge utilisé (en seconde) | |
Fonctions membres protégées hérités de Arcane::BasicService | |
| BasicService (const ServiceBuildInfo &) | |
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 Arcane::TraceAccessor | |
| void | _setLocalVerboseLevel (Int32 v) |
| Int32 | _localVerboseLevel () const |
Fonctions membres protégées hérités de Arcane::IService | |
| IService () | |
| Constructeur. | |
Service de partitionnement géométrique de maillage.
Ce service permet d'effectuer un partitionnement géométrique. Son but premier est de permettre de réaliser des tests parallèle même si aucune service de partitionnement spécifique (comme ParMetis) n'est disponible.
L'algorithme est le suivant:
L'algorithme et l'implémentation actuels sont très simples et ont les limitions suivantes:
Actuellement l'algorithme utilise s'applique aux mailles mais seules les coordonnées sont utilisées ce qui permettrait de l'appliquer sans élément de maillage. Cela pourrait être utile pour un premier partitionnement tel que celui utilisé dans le lecteur parallèle MSH.
Définition à la ligne 190 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
explicit |
Définition à la ligne 266 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 276 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 296 du fichier ArcaneGeometricMeshPartitionerService.cc.
Définition à la ligne 331 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 461 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 349 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 379 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 490 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Construction de niveau build du service.
Cette méthode est appelé juste après le constructeur.
Réimplémentée à partir de Arcane::AbstractService.
Définition à la ligne 201 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 221 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 215 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Déséquilibre de temps de calcul.
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 217 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 234 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Déséquilibre maximal autorisé
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 219 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 213 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Maillage associé au partitionneur.
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 200 du fichier ArcaneGeometricMeshPartitionerService.cc.
Référencé par partitionMesh().
Voici le graphe des appelants de cette fonction :
|
inlineoverridevirtual |
Notification lors de la fin d'un re-partitionnement (après échange des entités)
Implémente Arcane::IMeshPartitionerBase.
Définition à la ligne 208 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
overridevirtual |
Re-partitionne 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.
Implémente Arcane::IMeshPartitionerBase.
Définition à la ligne 508 du fichier ArcaneGeometricMeshPartitionerService.cc.
Références mesh().
Voici le graphe d'appel pour cette fonction :
|
inlineoverridevirtual |
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 203 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Permet de définir les poids des objets à partitionner : on doit utiliser le ILoadBalanceMng maintenant.
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 223 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
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).
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 214 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Change le ILoadBalanceMng à utiliser.
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 229 du fichier ArcaneGeometricMeshPartitionerService.cc.
Références ARCANE_THROW.
|
inlineoverridevirtual |
Positionne le déséquilibre de temps de calcul.
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 216 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Positionne le déséquilibre maximal autorisé
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 218 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Positionne la proportion du temps de calcul.
Proportion du temps de calcul Temps de calcul du sous-domaine le plus chargé
Implémente Arcane::IMeshPartitioner.
Définition à la ligne 212 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 245 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 246 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 241 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 243 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 242 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 247 du fichier ArcaneGeometricMeshPartitionerService.cc.
|
private |
Définition à la ligne 244 du fichier ArcaneGeometricMeshPartitionerService.cc.