From e65990f6d4d0c84054858813f6cc793c5615dc55 Mon Sep 17 00:00:00 2001 From: Bruno Seny <bruno.seny@student.uclouvain.be> Date: Thu, 3 May 2012 14:10:25 +0000 Subject: [PATCH] update multi-constraint graph partitioning --- Mesh/meshPartitionObjects.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/Mesh/meshPartitionObjects.h b/Mesh/meshPartitionObjects.h index ac3e203043..69b2986289 100644 --- a/Mesh/meshPartitionObjects.h +++ b/Mesh/meshPartitionObjects.h @@ -166,17 +166,23 @@ class Graph void fillWithMultipleWeights(int ncon, std::map<int, std::vector<int> > vWeightMap, std::map<int, int> eWeightMap) { std::vector<MElement*>::iterator eIt; - vwgts.resize(element.size()*ncon); - adjwgts.resize(adjncy.size()); + std::vector<int> local2global; + local2global.resize(element.size()); int localElNum=0; for(eIt=element.begin();eIt !=element.end();eIt++){ + local2global[localElNum]=(*eIt)->getNum(); + localElNum += 1; + } + + vwgts.resize(element.size()*ncon); + adjwgts.resize(adjncy.size()); + for(int iElem = 0; iElem < element.size(); iElem++){ for(int i=0; i<ncon; i++){ - vwgts[localElNum*ncon+i]=vWeightMap[(*eIt)->getNum()][i+1]; + vwgts[iElem*ncon+i]=vWeightMap[local2global[iElem]][i]; } - for(int j=xadj[localElNum];j<xadj[localElNum+1];j++){ - adjwgts[j]+=eWeightMap[(*eIt)->getNum()]; + for(int j=xadj[iElem];j<xadj[iElem+1];j++){ + adjwgts[j]=eWeightMap[local2global[iElem]]+eWeightMap[local2global[adjncy[j]]]; } - localElNum+=1; } } -- GitLab