Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef PARMA_H
00009 #define PARMA_H
00010
00011 #include "apf.h"
00012 #include "apfMesh.h"
00013 #include "apfPartition.h"
00014
00021 int Parma_Run(apf::Mesh* mesh, apf::MeshTag* weight, const double maxImb);
00022
00037 int Parma_RunPtnImprovement(apf::Mesh* mesh, int (*priority)[4],
00038 const double maxImb=1.05, const int verbosity=0, const int maxItr=20);
00039
00051 int Parma_RunGhostPtnImprovement(apf::Mesh* mesh, apf::MeshTag* weight,
00052 const double maxImb, const int numlayers, const int bridgeDim,
00053 const int verbosity=0);
00054
00059 int Parma_RunWeightedPtnImprovement(apf::Mesh* mesh, apf::MeshTag* weight,
00060 int (*priority)[4], const double maxImb=1.05, const int dbgLvl=0,
00061 const int maxItr=20);
00062
00072 int Parma_RunSelp(apf::Mesh* mesh, apf::MeshTag* weight, const int factor,
00073 const int verbosity=0);
00074
00080 void Parma_GetEntImbalance(apf::Mesh* mesh, double (*entImb)[4]);
00081
00088 void Parma_GetWeightedEntImbalance(apf::Mesh* mesh, apf::MeshTag* weight,
00089 double (*entImb)[4]);
00090
00101 void Parma_GetNeighborStats(apf::Mesh* m, int& max, double& avg, int& loc);
00102
00108 long Parma_GetNumBdryVtx(apf::Mesh* m);
00109
00118 void Parma_GetDisconnectedStats(apf::Mesh* m, int& max, double& avg, int& loc);
00119
00128 void Parma_PrintPtnStats(apf::Mesh* m, std::string key);
00129
00134 void Parma_ProcessDisconnectedParts(apf::Mesh* m);
00135
00142 apf::Balancer* Parma_MakeCentroidDiffuser(apf::Mesh* m, double stepFactor = 0.1);
00143
00153 apf::Balancer* Parma_MakeGhostDiffuser(apf::Mesh* m, int layers, int bridge,
00154 double stepFactor = 0.1, int verbosity=0);
00155
00162 apf::Balancer* Parma_MakeHpsBalancer(apf::Mesh* m, int verbosity=0);
00163
00170 apf::Splitter* Parma_MakeRibSplitter(apf::Mesh* m, bool sync = true);
00171
00177 apf::MeshTag* Parma_WeighByMemory(apf::Mesh* m);
00178
00179 #endif