Mesh geometric partitioning service. More...
Public Member Functions | |
| ArcaneGeometricMeshPartitionerService (const ServiceBuildInfo &sbi) | |
| IMesh * | mesh () const override |
| Mesh associated with the partitioner. | |
| void | build () override |
| Build-level construction of the service. | |
| void | partitionMesh (bool initial_partition) override |
| void | partitionMesh (bool initial_partition, Int32 nb_part) override |
| void | notifyEndPartition () override |
| Notification when a re-partitioning finishes (after entity exchange). | |
| void | setMaximumComputationTime (Real v) override |
| Sets the proportion of computation time. | |
| Real | maximumComputationTime () const override |
| void | setComputationTimes (RealConstArrayView v) override |
| Computation time of this subdomain. The first element indicates the computation time of the subdomain corresponding to calculations whose cost is proportional to the cells. The following must be associated with a variable (to be done). | |
| RealConstArrayView | computationTimes () const override |
| void | setImbalance (Real v) override |
| Sets the computation time imbalance. | |
| Real | imbalance () const override |
| Computation time imbalance. | |
| void | setMaxImbalance (Real v) override |
| Sets the maximum allowed imbalance. | |
| Real | maxImbalance () const override |
| Maximum allowed imbalance. | |
| ArrayView< float > | cellsWeight () const override |
| void | setCellsWeight (ArrayView< float > weights, Integer nb_weight) override |
| Allows defining the weights of objects to be partitioned: ILoadBalanceMng must now be used. | |
| void | setILoadBalanceMng (ILoadBalanceMng *) override |
| Changes the ILoadBalanceMng to use. | |
| ILoadBalanceMng * | loadBalanceMng () const override |
| Public Member Functions inherited from Arcane::ArcaneArcaneGeometricMeshPartitionerServiceObject | |
| ArcaneArcaneGeometricMeshPartitionerServiceObject (const Arcane::ServiceBuildInfo &sbi) | |
| Constructeur. | |
| virtual | ~ArcaneArcaneGeometricMeshPartitionerServiceObject () |
| Destructeur. | |
| CaseOptionsArcaneGeometricMeshPartitionerService * | options () const |
| Options du jeu de données du service. | |
| Public Member Functions inherited from Arcane::BasicService | |
| ~BasicService () override | |
| Releases resources. | |
| virtual ISubDomain * | subDomain () |
| Public Member Functions inherited from Arcane::AbstractService | |
| ~AbstractService () override | |
| Destructor. | |
| IServiceInfo * | serviceInfo () const override |
| Access to service information. See IServiceInfo for details. | |
| IBase * | serviceParent () const override |
| Access to the base interface of main Arcane objects. | |
| IService * | serviceInterface () override |
| Returns the low-level IService interface of the service. | |
| Public Member Functions inherited from Arcane::TraceAccessor | |
| TraceAccessor (ITraceMng *m) | |
| Constructs an accessor via the trace manager m. | |
| TraceAccessor (const TraceAccessor &rhs) | |
| Copy constructor. | |
| TraceAccessor & | operator= (const TraceAccessor &rhs) |
| Copy assignment operator. | |
| virtual | ~TraceAccessor () |
| Frees resources. | |
| ITraceMng * | traceMng () const |
| Trace manager. | |
| TraceMessage | info () const |
| Flow for an information message. | |
| TraceMessage | pinfo () const |
| Flow for a parallel information message. | |
| TraceMessage | info (char category) const |
| Flow for an information message of a given category. | |
| TraceMessage | pinfo (char category) const |
| Flow for a parallel information message of a given category. | |
| TraceMessage | info (bool v) const |
| Flow for an information message. | |
| TraceMessage | warning () const |
| Flow for a warning message. | |
| TraceMessage | pwarning () const |
| TraceMessage | error () const |
| Flow for an error message. | |
| TraceMessage | perror () const |
| TraceMessage | log () const |
| Flow for a log message. | |
| TraceMessage | plog () const |
| Flow for a log message. | |
| TraceMessage | logdate () const |
| Flow for a log message preceded by the date. | |
| TraceMessage | fatal () const |
| Flow for a fatal error message. | |
| TraceMessage | pfatal () const |
| Flow for a parallel fatal error message. | |
| TraceMessageDbg | debug (Trace::eDebugLevel=Trace::Medium) const |
| Flow for a debug message. | |
| Trace::eDebugLevel | configDbgLevel () const |
| Debug level of the configuration file. | |
| TraceMessage | info (Int32 verbose_level) const |
| Flow for an information message of a given level. | |
| TraceMessage | linfo () const |
| Flow for an information message with the local information level of this instance. | |
| TraceMessage | linfo (Int32 relative_level) const |
| Flow for an information message with the local information level of this instance. | |
| void | fatalMessage (const StandaloneTraceMessage &o) const |
| Public Member Functions inherited from Arcane::IService | |
| virtual | ~IService () |
| Releases resources. | |
| Public Member Functions inherited from Arcane::MeshAccessor | |
| MeshAccessor (ISubDomain *sd) | |
| MeshAccessor (IMesh *mesh) | |
| MeshAccessor (const MeshHandle &mesh_handle) | |
| Integer | nbCell () const |
| Returns the number of cells in the mesh. | |
| Integer | nbFace () const |
| Returns the number of faces in the mesh. | |
| Integer | nbEdge () const |
| Returns the number of edges in the mesh. | |
| Integer | nbNode () const |
| Returns the number of nodes in the mesh. | |
| VariableNodeReal3 & | nodesCoordinates () const |
| Returns the coordinates of the mesh nodes. | |
| NodeGroup | allNodes () const |
| Returns the group containing all nodes. | |
| EdgeGroup | allEdges () const |
| Returns the group containing all edges. | |
| FaceGroup | allFaces () const |
| Returns the group containing all faces. | |
| CellGroup | allCells () const |
| Returns the group containing all cells. | |
| FaceGroup | outerFaces () const |
| Returns the group containing all boundary faces. | |
| NodeGroup | ownNodes () const |
| Returns the group containing all nodes specific to this domain. | |
| CellGroup | ownCells () const |
| Returns the group containing all cells specific to this domain. | |
| FaceGroup | ownFaces () const |
| Group containing all faces specific to this domain. | |
| EdgeGroup | ownEdges () const |
| Group containing all edges specific to this domain. | |
| IMesh * | mesh () const |
| const MeshHandle & | meshHandle () const |
| Public Member Functions inherited from Arcane::CommonVariables | |
| CommonVariables (IModule *c) | |
| Constructs the references of the common variables for the module c. | |
| CommonVariables (IVariableMng *variable_mng) | |
| Constructs the references of the common variables for the manager variable_mng. | |
| CommonVariables (ISubDomain *sd) | |
| Constructs the references of the common variables for the subdomain sd. | |
| virtual | ~CommonVariables () |
| Releases resources. | |
| Int32 | globalIteration () const |
| Current iteration number. | |
| Real | globalTime () const |
| Current time. | |
| Real | globalOldTime () const |
| Previous current time. | |
| Real | globalFinalTime () const |
| Final time of the simulation. | |
| Real | globalDeltaT () const |
| Current Delta T. | |
| Real | globalCPUTime () const |
| CPU time used (in seconds). | |
| Real | globalOldCPUTime () const |
| Previous CPU time used (in seconds). | |
| Real | globalElapsedTime () const |
| Clock time (elapsed) used (in seconds). | |
| Real | globalOldElapsedTime () const |
| Previous clock time (elapsed) used (in seconds). | |
| Public Member Functions inherited from Arcane::IMeshPartitioner | |
| virtual IPrimaryMesh * | primaryMesh () override |
| Associated mesh. | |
| virtual void | partitionMesh (bool initial_partition)=0 |
| Public Member Functions inherited from Arcane::IMeshPartitionerBase | |
| virtual | ~IMeshPartitionerBase ()=default |
| Releases resources. | |
Private Member Functions | |
| 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 | _partitionMeshRecursive2 (ConstArrayView< BinaryTree::TreeNode > tree_nodes, const VariableCellReal3 &cells_center, CellVectorView cells, Int32 partition_index) |
| void | _printOwners () |
| Real3 | _computeEigenValuesAndVectors (ITraceMng *tm, Real3x3 tensor, Real3x3 &eigen_vectors, Real3 &eigen_values) |
Private Attributes | |
| 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 |
Additional Inherited Members | |
| Static Public Member Functions inherited from Arcane::ArcaneArcaneGeometricMeshPartitionerServiceObject | |
| template<typename ServiceClassType> | |
| static void | fillServiceInfo (Arcane::ServiceInfo *si) |
| Public Attributes inherited from Arcane::CommonVariables | |
| VariableScalarInt32 | m_global_iteration |
| Current iteration. | |
| VariableScalarReal | m_global_time |
| Current time. | |
| VariableScalarReal | m_global_deltat |
| Global Delta T. | |
| VariableScalarReal | m_global_old_time |
| Time previous to the current time. | |
| VariableScalarReal | m_global_old_deltat |
| Delta T at the time previous to the global time. | |
| VariableScalarReal | m_global_final_time |
| Final time of the case. | |
| VariableScalarReal | m_global_old_cpu_time |
| Previous CPU time used (in seconds). | |
| VariableScalarReal | m_global_cpu_time |
| CPU time used (in seconds). | |
| VariableScalarReal | m_global_old_elapsed_time |
| Previous clock time used (in seconds). | |
| VariableScalarReal | m_global_elapsed_time |
| Clock time used (in seconds). | |
| Protected Member Functions inherited from Arcane::BasicService | |
| BasicService (const ServiceBuildInfo &) | |
| Protected Member Functions inherited from Arcane::AbstractService | |
| AbstractService (const ServiceBuildInfo &) | |
| Constructor from a ServiceBuildInfo. | |
| Protected Member Functions inherited from Arcane::TraceAccessor | |
| void | _setLocalVerboseLevel (Int32 v) |
| Int32 | _localVerboseLevel () const |
| Protected Member Functions inherited from Arcane::IService | |
| IService () | |
| Constructor. | |
Mesh geometric partitioning service.
This service allows performing a geometric partitioning. Its primary goal is to allow parallel tests even if no specific partitioning service (like ParMetis) is available.
The algorithm is as follows:
The current algorithm and implementation are very simple and have the following limitations:
Currently, the algorithm used applies to cells, but only coordinates are used, which would allow it to be applied without mesh elements. This could be useful for an initial partitioning such as the one used in the parallel MSH reader.
Definition at line 332 of file ArcaneGeometricMeshPartitionerService.cc.
|
explicit |
Definition at line 410 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 420 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 443 of file ArcaneGeometricMeshPartitionerService.cc.
Definition at line 479 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 820 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 506 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 548 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 627 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 849 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Build-level construction of the service.
This method is called right after the constructor.
Reimplemented from Arcane::AbstractService.
Definition at line 343 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implements Arcane::IMeshPartitioner.
Definition at line 363 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implements Arcane::IMeshPartitioner.
Definition at line 357 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Computation time imbalance.
Implements Arcane::IMeshPartitioner.
Definition at line 359 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implements Arcane::IMeshPartitioner.
Definition at line 376 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Maximum allowed imbalance.
Implements Arcane::IMeshPartitioner.
Definition at line 361 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Implements Arcane::IMeshPartitioner.
Definition at line 355 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Mesh associated with the partitioner.
Implements Arcane::IMeshPartitioner.
Definition at line 342 of file ArcaneGeometricMeshPartitionerService.cc.
Referenced by partitionMesh().
|
inlineoverridevirtual |
Notification when a re-partitioning finishes (after entity exchange).
Implements Arcane::IMeshPartitionerBase.
Definition at line 350 of file ArcaneGeometricMeshPartitionerService.cc.
|
overridevirtual |
Re-partitions the mesh mesh
This method changes the owners of the entities and fills the IItemFamily::itemsNewOwner() variable of each entity family of the mesh mesh with the number of the new owning subdomain.
Implements Arcane::IMeshPartitionerBase.
Definition at line 867 of file ArcaneGeometricMeshPartitionerService.cc.
References mesh().
|
inlineoverridevirtual |
Implements Arcane::IMeshPartitioner.
Definition at line 345 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Allows defining the weights of objects to be partitioned: ILoadBalanceMng must now be used.
Implements Arcane::IMeshPartitioner.
Definition at line 365 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Computation time of this subdomain. The first element indicates the computation time of the subdomain corresponding to calculations whose cost is proportional to the cells. The following must be associated with a variable (to be done).
Implements Arcane::IMeshPartitioner.
Definition at line 356 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Changes the ILoadBalanceMng to use.
Implements Arcane::IMeshPartitioner.
Definition at line 371 of file ArcaneGeometricMeshPartitionerService.cc.
References ARCANE_THROW.
|
inlineoverridevirtual |
Sets the computation time imbalance.
Implements Arcane::IMeshPartitioner.
Definition at line 358 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Sets the maximum allowed imbalance.
Implements Arcane::IMeshPartitioner.
Definition at line 360 of file ArcaneGeometricMeshPartitionerService.cc.
|
inlineoverridevirtual |
Sets the proportion of computation time.
Proportion of computation time Computation time of the most heavily loaded subdomain
Implements Arcane::IMeshPartitioner.
Definition at line 354 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 387 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 388 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 383 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 385 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 384 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 389 of file ArcaneGeometricMeshPartitionerService.cc.
|
private |
Definition at line 386 of file ArcaneGeometricMeshPartitionerService.cc.