60 #ifndef DomainPartitioner_h 61 #define DomainPartitioner_h 63 #include <utility/matrix/ID.h> 64 #include "xc_utils/src/kernel/CommandEntity.h" 67 class GraphPartitioner;
69 class PartitionedDomain;
72 class TaggedObjectStorage;
94 Graph *theElementGraph;
95 std::vector<Graph> theBoundaryElements;
97 TaggedObjectStorage *theNodeLocations;
103 bool usingMainDomain;
106 int inic(
const size_t &);
114 virtual int partition(
int numParts,
bool useMainDomain =
false,
int mainPartition = 0);
126 bool adjacentVertexNotInOther =
true);
130 bool adjacentVertexNotInOther =
true);
134 Graph &theWeightedPartitionGraph,
135 bool mustReleaseToLighter =
true,
136 double factorGreater = 1.0,
137 bool adjacentVertexNotInOther =
true);
140 Graph &theWeightedPartitionGraph,
141 bool mustReleaseToLighter =
true,
142 double factorGreater = 1.0,
143 bool adjacentVertexNotInOther =
true);
DomainPartitioner(GraphPartitioner &theGraphPartitioner, LoadBalancer &theLoadBalancer)
Constructor.
Definition: DomainPartitioner.cpp:111
virtual int swapVertex(int from, int to, int vertexTag, bool adjacentVertexNotInOther=true)
Moves a vertes from subdomain from to subdomain to.
Definition: DomainPartitioner.cpp:670
Object that can partition and load balance a PartitionedDomain.
Definition: DomainPartitioner.h:87
Vector of integers.
Definition: ID.h:93
virtual int swapBoundary(int from, int to, bool adjacentVertexNotInOther=true)
Method to move from from to to, all elements on the interface of from that are adjacent with to...
Definition: DomainPartitioner.cpp:1028
virtual int partition(int numParts, bool useMainDomain=false, int mainPartition=0)
Method invoked to partition the Domain.
Definition: DomainPartitioner.cpp:171
virtual int getNumPartitions(void) const
Returns the number of partitions in the PartitionedDomain.
Definition: DomainPartitioner.cpp:614
virtual Graph & getColoredGraph(void)
Return the colored graph.
Definition: DomainPartitioner.cpp:641
Base class for graph partitioners.
Definition: GraphPartitioner.h:84
The Graph class provides the abstraction of a graph.
Definition: Graph.h:93
virtual Graph & getPartitionGraph(void)
Return the partition graph.
Definition: DomainPartitioner.cpp:623
virtual int releaseBoundary(int from, Graph &theWeightedPartitionGraph, bool mustReleaseToLighter=true, double factorGreater=1.0, bool adjacentVertexNotInOther=true)
Release all the elements on the boundary of subdomain from.
Definition: DomainPartitioner.cpp:1526
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:34
Partitioned domain (aggregation of subdomains).
Definition: PartitionedDomain.h:90
virtual int releaseVertex(int from, int vertexTag, Graph &theWeightedPartitionGraph, bool mustReleaseToLighter=true, double factorGreater=1.0, bool adjacentVertexNotInOther=true)
Method which when invoked will take the element given by vertex reference of the vertex whose tag is ...
Definition: DomainPartitioner.cpp:1435
A LoadBalancer is an object used to balance a PartitionedDomain.
Definition: LoadBalancer.h:80
virtual int balance(Graph &theWeightedSubdomainGraph)
Load balance.
Definition: DomainPartitioner.cpp:581