00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <metis.h>
00016
00017
00018
00019
00020
00021 void Moc_ComputePartitionBalance(GraphType *graph, int nparts, idxtype *where, floattype *ubvec)
00022 {
00023 int i, j, nvtxs, ncon;
00024 floattype *kpwgts, *nvwgt;
00025 floattype balance;
00026
00027 nvtxs = graph->nvtxs;
00028 ncon = graph->ncon;
00029 nvwgt = graph->nvwgt;
00030
00031 kpwgts = fmalloc(nparts, "ComputePartitionInfo: kpwgts");
00032
00033 for (j=0; j<ncon; j++) {
00034 sset(nparts, 0.0, kpwgts);
00035 for (i=0; i<graph->nvtxs; i++)
00036 kpwgts[where[i]] += nvwgt[i*ncon+j];
00037
00038 ubvec[j] = (floattype)nparts*kpwgts[samax(nparts, kpwgts)]/ssum(nparts, kpwgts);
00039 }
00040
00041 free(kpwgts);
00042
00043 }
00044