Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
Arcane::IMeshPartitioner Class Referenceabstract

Interface of a mesh partitioner. More...

#include <arcane/core/IMeshPartitioner.h>

Inheritance diagram for Arcane::IMeshPartitioner:
Collaboration diagram for Arcane::IMeshPartitioner:

Public Member Functions

virtual void build ()=0
virtual void partitionMesh (bool initial_partition, Int32 nb_part)=0
virtual IMeshmesh () const =0
 Mesh associated with the partitioner.
virtual IPrimaryMeshprimaryMesh () override
 Associated mesh.
virtual void partitionMesh (bool initial_partition)=0
compact

{

Proportion of computation time of this subdomain compared to that of the subdomain that has the highest computation time.

virtual ARCANE_DEPRECATED_116 void setMaximumComputationTime (Real v)=0
 Sets the proportion of computation time.
virtual ARCANE_DEPRECATED_116 Real maximumComputationTime () const =0
virtual ARCANE_DEPRECATED_116 void setComputationTimes (RealConstArrayView v)=0
 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).
virtual ARCANE_DEPRECATED_116 RealConstArrayView computationTimes () const =0
imbalance

Computation time imbalance. It is calculated as follows imbalance = (max_computation_time - min_computation_time) / min_computation_time;

virtual void setImbalance (Real v)=0
 Sets the computation time imbalance.
virtual Real imbalance () const =0
 Computation time imbalance.
virtual void setMaxImbalance (Real v)=0
 Sets the maximum allowed imbalance.
virtual Real maxImbalance () const =0
 Maximum allowed imbalance.
virtual ARCANE_DEPRECATED_116 void setCellsWeight (ArrayView< float > weights, Integer nb_weight)=0
 Allows defining the weights of objects to be partitioned: ILoadBalanceMng must now be used.
virtual ARCANE_DEPRECATED_116 ArrayView< float > cellsWeight () const =0
virtual void setILoadBalanceMng (ILoadBalanceMng *mng)=0
 Changes the ILoadBalanceMng to use.
virtual ILoadBalanceMngloadBalanceMng () const =0
Public Member Functions inherited from Arcane::IMeshPartitionerBase
virtual ~IMeshPartitionerBase ()=default
 Releases resources.
virtual void notifyEndPartition ()=0
 Notification when a re-partitioning finishes (after entity exchange).

Detailed Description

Interface of a mesh partitioner.

The partitioner reassigns entity owners. It does not directly perform entity exchange. The partitioner can use certain information such as timeRatio() or imbalance() to calculate an efficient partitioning.

Definition at line 36 of file IMeshPartitioner.h.

Member Function Documentation

◆ build()

◆ imbalance()

virtual Real Arcane::IMeshPartitioner::imbalance ( ) const
pure virtual

Computation time imbalance.

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References imbalance().

Referenced by imbalance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ maxImbalance()

virtual Real Arcane::IMeshPartitioner::maxImbalance ( ) const
pure virtual

Maximum allowed imbalance.

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References maxImbalance().

Referenced by maxImbalance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ mesh()

virtual IMesh * Arcane::IMeshPartitioner::mesh ( ) const
pure virtual

Mesh associated with the partitioner.

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References mesh(), and primaryMesh().

Referenced by mesh(), and primaryMesh().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ partitionMesh()

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

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.

Note
This method is reserved for Arcane developers. If a module wishes to perform a re-partitioning, it must call the method IMeshUtilities::partitionAndExchangeMeshWithReplication() which handles both the partitioning and the exchange of information and supports domain replication.

Implements Arcane::IMeshPartitionerBase.

Reimplemented in Arcane::MeshPartitionerTester, Arcane::MetisMeshPartitioner, Arcane::PTScotchMeshPartitioner, Arcane::SplitSDMeshPartitioner, and Arcane::ZoltanMeshPartitioner.

◆ primaryMesh()

IPrimaryMesh * Arcane::IMeshPartitioner::primaryMesh ( )
overridevirtual

Associated mesh.

Implements Arcane::IMeshPartitionerBase.

Definition at line 213 of file InterfaceImpl.cc.

References ARCANE_CHECK_POINTER, mesh(), and Arcane::IMesh::toPrimaryMesh().

Referenced by mesh().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setCellsWeight()

virtual ARCANE_DEPRECATED_116 void Arcane::IMeshPartitioner::setCellsWeight ( ArrayView< float > weights,
Integer nb_weight )
pure virtual

Allows defining the weights of objects to be partitioned: ILoadBalanceMng must now be used.

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References setCellsWeight().

Referenced by Arcane::ArcaneLoadBalanceModule::checkLoadBalance(), and setCellsWeight().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setComputationTimes()

virtual ARCANE_DEPRECATED_116 void Arcane::IMeshPartitioner::setComputationTimes ( RealConstArrayView v)
pure virtual

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).

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References setComputationTimes().

Referenced by setComputationTimes().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setILoadBalanceMng()

virtual void Arcane::IMeshPartitioner::setILoadBalanceMng ( ILoadBalanceMng * mng)
pure virtual

Changes the ILoadBalanceMng to use.

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References setILoadBalanceMng().

Referenced by setILoadBalanceMng().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setImbalance()

virtual void Arcane::IMeshPartitioner::setImbalance ( Real v)
pure virtual

Sets the computation time imbalance.

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References setImbalance().

Referenced by setImbalance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setMaxImbalance()

virtual void Arcane::IMeshPartitioner::setMaxImbalance ( Real v)
pure virtual

Sets the maximum allowed imbalance.

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References setMaxImbalance().

Referenced by setMaxImbalance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setMaximumComputationTime()

virtual ARCANE_DEPRECATED_116 void Arcane::IMeshPartitioner::setMaximumComputationTime ( Real v)
pure virtual

Sets the proportion of computation time.

Proportion of computation time Computation time of the most heavily loaded subdomain

Implemented in Arcane::ArcaneGeometricMeshPartitionerService, Arcane::MeshPartitionerBase, and Arcane::MeshPartitionerTester.

References setMaximumComputationTime().

Referenced by setMaximumComputationTime().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following files: