57 double& avg,
int& loc);
85 int& max,
double& avg);
97 int& max,
double& avg);
109 int& max,
double& avg);
184 double stepFactor = 0.1,
int verbosity=0);
196 double stepFactor = 0.1,
int verbosity=0);
212 double stepFactor = 0.1,
int verbosity=0);
217 double stepFactor = 0.1,
int verbosity=0);
251 double stepFactor=0.1,
int verbosity=0);
260 double stepFactor=0.1,
int verbosity=0);
293 virtual void run(
int group) = 0;
User-defined code to run on process sub-groups.
apf::Balancer * Parma_MakeCentroidDiffuser(apf::Mesh *m, double stepFactor=0.1, int verbose=0)
create an APF Balancer using centroid diffusion
int Parma_MisNumbering(apf::Mesh *m, int d)
Compute maximal independent set numbering.
Load balance over all mesh parts.
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
void Parma_SplitPartition(apf::Mesh2 *m, int factor, Parma_GroupCode &toRun)
Split the processes into groups of (factor).
void Parma_WriteVtxPtn(apf::Mesh *m, const char *prefix)
write the vertex based partition to file
apf::MeshTag * Parma_WeighByMemory(apf::Mesh *m)
create a mesh tag that weighs elements by their memory consumption
apf::Balancer * Parma_MakeVtxBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting vertex imbalance
void Parma_ShrinkPartition(apf::Mesh2 *m, int factor, Parma_GroupCode &toRun)
Shrink the mesh into N/factor processes.
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_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_GetWeightedEntImbalance(apf::Mesh *mesh, apf::MeshTag *weight, double(*entImb)[4])
see Parma_GetEntImbalance(...)
apf::Balancer * Parma_MakeElmBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting element imbalance
tools for changing mesh partitioning
void Parma_GetEntImbalance(apf::Mesh *mesh, double(*entImb)[4])
get entity 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_MakeVtxElmBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting vertex, and elm imbalance
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_MakeShapeOptimizer(apf::Mesh *m, double stepFactor=0.1, int verbose=0)
create an APF Balancer to optimize part shape
Interface to a mesh part.
apf::Balancer * Parma_MakeGhostEdgeDiffuser(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an edge balancer that is ghost aware
apf::Splitter * Parma_MakeRibSplitter(apf::Mesh *m, bool sync=true)
create an APF Splitter using recursive inertial bisection
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 ...
apf::Balancer * Parma_MakeVtxEdgeElmBalancer(apf::Mesh *m, double stepFactor=0.1, int verbosity=0)
create an APF Balancer targeting vertex, edge, and elm imbalance
void Parma_ProcessDisconnectedParts(apf::Mesh *m)
re-connect disconnected parts
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
Extended mesh interface for modification.
void Parma_PrintPtnStats(apf::Mesh *m, std::string key, bool fine=false)
prints partition stats
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
Splits a mesh part into many.
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_PrintWeightedPtnStats(apf::Mesh *m, apf::MeshTag *w, std::string key, bool fine=false)
prints partition stats using entity weights
apf::MeshTag * Parma_BfsReorder(apf::Mesh *m, int verbosity=0)
reorder the mesh via a breadth first search
virtual void run(int group)=0
Called withing sub-groups.