23 idxtype *adjwgt,
int *wgtflag,
int *numflag,
int *nparts,
24 int *options,
int *edgecut,
idxtype *part)
29 tpwgts =
fmalloc(*nparts,
"KMETIS: tpwgts");
30 for (i=0; i<*nparts; i++)
31 tpwgts[i] = 1.0/(1.0*(*nparts));
34 tpwgts, options, edgecut, part);
45 idxtype *adjwgt,
int *wgtflag,
int *numflag,
int *nparts,
46 float *tpwgts,
int *options,
int *edgecut,
idxtype *part)
57 if (options[0] == 0) {
98 int i, ii, j, l, wflag, nflag;
103 if (options[0] == 0) {
136 cptr =
idxmalloc(nvtxs+1,
"ONMETIS: cptr");
137 cind =
idxmalloc(nvtxs,
"ONMETIS: cind");
139 CompressGraph(&ctrl, &graph, nvtxs, xadj, adjncy, cptr, cind);
145 else if (2*graph.
nvtxs < nvtxs && ctrl.
nseps == 1)
159 idxset(2*npes-1, 0, sizes);
167 for (i=0; i<graph.
nvtxs; i++)
169 for (l=ii=0; ii<graph.
nvtxs; ii++) {
171 for (j=cptr[i]; j<cptr[i+1]; j++)
172 iperm[cind[j]] = l++;
180 for (i=0; i<nvtxs; i++)
196 int i, j, nvtxs, nbnd, tvwgt, tpwgts2[2];
201 nvtxs = graph->
nvtxs;
210 tpwgts2[0] = tvwgt/2;
211 tpwgts2[1] = tvwgt-tpwgts2[0];
224 sizes[2*npes-2-cpos] = graph->
pwgts[2];
225 sizes[2*npes-2-(2*cpos+1)] = graph->
pwgts[1];
226 sizes[2*npes-2-(2*cpos+2)] = graph->
pwgts[0];
232 label = graph->
label;
233 for (i=0; i<nbnd; i++)
234 order[label[bndind[i]]] = --lastvtx;
244 MMDOrder(ctrl, &rgraph, order, lastvtx);
265 int i, j, tvwgt, tpwgts[2];
272 if (options[0] == 0) {
300 tpwgts[1] = tvwgt-tpwgts[0];
304 *sepsize = graph.
pwgts[2];
323 int i, j, tvwgt, tpwgts[2];
330 if (options[0] == 0) {
358 tpwgts[1] = tvwgt-tpwgts[0];
363 *sepsize = graph.
pwgts[2];
void METIS_EdgeComputeSeparator(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *options, int *sepsize, idxtype *part)
#define COMPRESSION_FRACTION
#define ConstructMinCoverSeparator
#define MlevelNodeBisectionMultiple
void METIS_PartGraphKway2(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, int *options, int *edgecut, idxtype *part)
#define AllocateWorkSpace
#define IFSET(a, flag, cmd)
#define Change2CNumbering
void METIS_NodeComputeSeparator(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *options, int *sepsize, idxtype *part)
void GKfree(void **ptr1,...)
void METIS_WPartGraphKway2(int *nvtxs, idxtype *xadj, idxtype *adjncy, idxtype *vwgt, idxtype *adjwgt, int *wgtflag, int *numflag, int *nparts, float *tpwgts, int *options, int *edgecut, idxtype *part)
#define MlevelNestedDissectionP
#define MlevelKWayPartitioning
#define MlevelEdgeBisection
void METIS_NodeNDP(int nvtxs, idxtype *xadj, idxtype *adjncy, int npes, int *options, idxtype *perm, idxtype *iperm, idxtype *sizes)
#define Change2FNumbering
#define ORDER_UNBALANCE_FRACTION