67 double& avg,
int& loc);
95 int& max,
double& avg);
107 int& max,
double& avg);
119 int& max,
double& avg);
194 double stepFactor = 0.1,
int verbosity=0);
206 double stepFactor = 0.1,
int verbosity=0);
222 double stepFactor = 0.1,
int verbosity=0);
227 double stepFactor = 0.1,
int verbosity=0);
261 double stepFactor=0.1,
int verbosity=0);
270 double stepFactor=0.1,
int verbosity=0);
292 std::unique_ptr<pcu::PCU> PCUObj;
304 virtual void run(
int group) = 0;
tools for changing mesh partitioning
Load balance over all mesh parts.
Extended mesh interface for modification.
Interface to a mesh part.
Splits a mesh part into many.
The Parallel Contrul Unit class encapsulates parallel communication.
void Parma_GetWeightedEntImbalance(apf::Mesh *mesh, apf::MeshTag *weight, double(*entImb)[4])
see Parma_GetEntImbalance(...)
void Parma_WriteVtxPtn(apf::Mesh *m, const char *prefix)
write the vertex based partition to file
apf::Balancer * Parma_MakeMPASDiffuser(apf::Mesh *m, int layers, int bridge, double stepFactor=0.1, int verbosity=0)
create an APF Balancer for MPAS
apf::Balancer * Parma_MakeElmBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting element imbalance
apf::MeshTag * Parma_BfsReorder(apf::Mesh *m, int verbosity=0)
reorder the mesh via a breadth first search
void Parma_PrintPtnStats(apf::Mesh *m, std::string key, bool fine=false)
prints partition stats
apf::Balancer * Parma_MakeVtxElmBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting vertex, and elm imbalance
void Parma_GetDisconnectedStats(apf::Mesh *m, int &max, double &avg, int &loc)
get the maximum, average and local number of face-disconnected components
apf::Balancer * Parma_MakeGhostDiffuser(apf::Mesh *m, int layers, double stepFactor=0.1, int verbosity=0)
create an APF Balancer using ghost element aware diffusion for a vertex-based partition
int Parma_MisNumbering(apf::Mesh *m, int d)
Compute maximal independent set numbering.
void Parma_GetEntImbalance(apf::Mesh *mesh, double(*entImb)[4])
get entity imbalance
apf::Balancer * Parma_MakeVtxEdgeElmBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting vertex, edge, and elm imbalance
apf::Balancer * Parma_MakeCentroidDiffuser(apf::Mesh *m, double stepFactor=0.1, int verbose=0)
create an APF Balancer using centroid diffusion
void Parma_GetNeighborStats(apf::Mesh *m, int &max, int &maxNumParts, double &avg, int &loc)
get the maximum and average number of vtx-connected neighboring parts
void Parma_WriteSmallNeighbors(apf::Mesh *m, int small, const char *prefix)
write the number of parts with neighbors formed by a small number of shared vtx
void Parma_GetMdlBdryVtxStats(apf::Mesh *m, int &loc, long &tot, int &min, int &max, double &avg)
get the number of vertices classified on the model boundary
apf::Splitter * Parma_MakeRibSplitter(apf::Mesh *m, bool sync=true)
create an APF Splitter using recursive inertial bisection
void Parma_SplitPartition(apf::Mesh2 *m, int factor, Parma_GroupCode &toRun, pcu::PCU *PCUObj=nullptr)
Split the processes into groups of (factor).
void Parma_ProcessDisconnectedParts(apf::Mesh *m)
re-connect disconnected parts
apf::Balancer * Parma_MakeShapeOptimizer(apf::Mesh *m, double stepFactor=0.1, int verbose=0)
create an APF Balancer to optimize part shape
apf::MeshTag * Parma_WeighByMemory(apf::Mesh *m)
create a mesh tag that weighs elements by their memory consumption
int Parma_GetSmallestSideMaxNeighborParts(apf::Mesh *m)
get the smallest number of shared vertices forming a neighbor ,a 'side', in a part with the maximum n...
void Parma_GetOwnedBdryVtxStats(apf::Mesh *m, int &loc, long &tot, int &min, int &max, double &avg)
get the number of owned vertices on inter-part boundaries
void Parma_ShrinkPartition(apf::Mesh2 *m, int factor, Parma_GroupCode &toRun, pcu::PCU *PCUObj=nullptr)
Shrink the mesh into N/factor processes.
apf::Balancer * Parma_MakeVtxBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting vertex imbalance
apf::Balancer * Parma_MakeGhostEdgeDiffuser(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an edge balancer that is ghost aware
void Parma_GetSharedBdryVtxStats(apf::Mesh *m, int &loc, long &tot, int &min, int &max, double &avg)
get the number of shared vertices on inter-part boundaries
void Parma_PrintWeightedPtnStats(apf::Mesh *m, apf::MeshTag *w, std::string key, bool fine=false)
prints partition stats using entity weights
User-defined code to run on process sub-groups.
virtual void run(int group)=0
Called withing sub-groups.