diff --git a/Mesh/meshPartitionObjects.h b/Mesh/meshPartitionObjects.h index ac3e203043f08d74ed99eaad5ba32013c8260f72..69b2986289c0f2a05b2f9b7d9c3264fbffc2d671 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; } }