52 m_phase( noMaterials ),
123 weights.push_back(*begin);
144 unsigned int mat_index;
152 vector<unsigned int> vnodeIndirect(
m_vnodes);
157 for (mat_index=0; mat_index<
m_materials; ++mat_index)
162 for (mat_index=0; mat_index<
m_materials; ++mat_index)
168 for (
unsigned int i=
m_vnodes; i-->0;)
171 int vnode = vnodeIndirect[i];
184 for (mat_index=0; mat_index<
m_materials; ++mat_index)
210 double minWeight = 1e30;
213 unsigned int minProc =
m_procs;
216 for (
unsigned int proc_index = 0; proc_index<
m_procs; ++proc_index)
219 double totalWeight = 0.0;
220 for (
unsigned int mat_index=0; mat_index<
m_materials; ++mat_index)
237 if ( totalWeight < minWeight )
239 minWeight = totalWeight;
240 minProc = proc_index;
268 for (
unsigned int i = 0; i<
m_vnodes; ++i)
269 vnodeTotalWeights[i] += (**matp)[i];
284 for (
unsigned int i=0; i<
m_vnodes; ++i)
285 vnodeIndirect[i] = i;
290 vnodeIndirect.begin(),
ProcWeights_t m_procWeights
MultiBalancer(int procs, int vnodes)
unsigned int findProcForVnode(unsigned int vnode)
void appendWeights(double *begin, double *end)
MaterialVnodeWeights_t m_inputWeights
std::vector< double > VnodeWeights_t
MaterialWeights_t m_materialMaxWeights
MaterialProcWeights_t m_materialProcWeights
VnodeDestProcs_t m_vnodeProcs
void calcIndirectSort(std::vector< unsigned int > &vnodeIndirect, const VnodeWeights_t &vnodeTotalWeights)
std::string::iterator iterator
void calcTotalWeights(VnodeWeights_t &vnodeTotalWeights)