110{
PORD_INT *xadj, *adjncy, nvtx, u, v, len, j, i, istart, istop;
116 for (u = 0; u < nvtx; u++)
119 if ((len = istop - istart) > 1)
120 for (i = istart; i < istop; i++)
122 swap(adjncy[i], adjncy[i+j], v);
134 PORD_INT *xadj, *adjncy, *vwght, *xadjGsub, *adjncyGsub, *vwghtGsub;
135 PORD_INT nvtx, nedgesGsub, totvwght, u, v, i, j, jstart, jstop, ptr;
146 for (i = 0; i < nvint; i++)
148 if ((u < 0) || (u >= nvtx))
149 { fprintf(stderr,
"\nError in function setupSubgraph\n"
150 " node %d does not belong to graph\n", u);
155 for (j = jstart; j < jstop; j++)
156 vtxmap[adjncy[j]] = -1;
157 nedgesGsub += (jstop - jstart);
159 for (i = 0; i < nvint; i++)
165 xadjGsub = Gsub->
xadj;
166 adjncyGsub = Gsub->
adjncy;
167 vwghtGsub = Gsub->
vwght;
172 totvwght = 0; ptr = 0;
173 for (i = 0; i < nvint; i++)
176 vwghtGsub[i] = vwght[u];
177 totvwght += vwght[u];
180 for (j = jstart; j < jstop; j++)
183 adjncyGsub[ptr++] = vtxmap[v];
186 xadjGsub[nvint] = ptr;
197 PORD_INT *xnza, *nzasub, *xadj, *adjncy;
198 PORD_INT neqs, nelem, nvtx, k, h1, h2, j, i, istart, istop;
216 for (k = 0; k < neqs; k++)
217 xadj[k] = xnza[k+1] - xnza[k];
218 for (k = 0; k < nelem; k++)
226 for (k = 1; k <= nvtx; k++)
228 xadj[k] = xadj[k-1] + h1;
235 for (k = 0; k < neqs; k++)
238 for (i = istart; i < istop; i++)
240 adjncy[xadj[k]++] = j;
241 adjncy[xadj[j]++] = k;
248 for (k = nvtx-1; k > 0; k--)
260 PORD_INT *xadj, *adjncy, nvtx, nedges, knz, k;
272 if ((type ==
GRID) || (type ==
MESH))
274 + 6 * (dimX-2 + dimY-2)
275 + 4 * (dimX-2) * (dimY-2);
277 nedges += 4 * (dimX-1) * (dimY-1);
283 for (k = 0; k < nvtx; k++)
285 if ((k+1) % dimX > 0)
286 { adjncy[knz++] = k+1;
288 {
if (k+1+dimX < nvtx)
289 adjncy[knz++] = k+1+dimX;
291 adjncy[knz++] = k+1-dimX;
295 { adjncy[knz++] = k-1;
297 {
if (k-1+dimX < nvtx)
298 adjncy[knz++] = k-1+dimX;
300 adjncy[knz++] = k-1-dimX;
304 adjncy[knz++] = k+dimX;
306 adjncy[knz++] = k-dimX;
315 { nedges = 4 * dimX * dimY;
321 for (k = 0; k < nvtx; k++)
323 if (((k+1) % dimX) == 0)
324 adjncy[knz++] = k+1-dimX;
328 adjncy[knz++] = k-1+dimX;
331 adjncy[knz++] = (k+dimX) % nvtx;
332 adjncy[knz++] = (k+dimX*(dimY-1)) % nvtx;
345{
PORD_INT *xadj, *adjncy, *marker, *queue;
346 PORD_INT nvtx, u, v, w, qhead, qtail,
comp, i, istart, istop;
362 for (u = 0; u < nvtx; u++)
368 for (u = 0; u < nvtx; u++)
371 qhead = 0; qtail = 1;
372 queue[0] = u; marker[u] = 0;
374 while (qhead != qtail)
375 { v = queue[qhead++];
378 for (i = istart; i < istop; i++)
381 { queue[qtail++] = w;
391 free(marker); free(queue);
402 PORD_INT nvtx, cnvtx, u, v, i, istart, istop, j, jstart, jstop;
418 for (u = 0; u < nvtx; u++)
421 deg[u] = istop - istart;
425 for (i = istart; i < istop; i++)
433 for (u = 0; u < nvtx; u++)
438 for (i = istart; i < istop; i++)
442 for (i = istart; i < istop; i++)
448 for (j = jstart; j < jstop; j++)
449 if (tmp[adjncy[j]] != u)
goto FAILURE;
462 free(deg); free(
checksum); free(tmp);
472 PORD_INT *xadj, *adjncy, *vwght, *xadjGc, *adjncyGc, *vwghtGc, *perm;
473 PORD_INT nvtx, nvtxGc, nedgesGc, u, v, i, istart, istop;
493 for (u = 0; u < nvtx; u++)
497 for (i = istart; i < istop; i++)
499 if (vtxmap[v] == v) nedgesGc++;
511 nvtxGc = nedgesGc = 0;
512 for (u = 0; u < nvtx; u++)
516 xadjGc[nvtxGc] = nedgesGc;
519 for (i = istart; i < istop; i++)
521 if (vtxmap[v] == v) adjncyGc[nedgesGc++] = v;
524 xadjGc[nvtxGc] = nedgesGc;
526 for (i = 0; i < nedgesGc; i++)
527 adjncyGc[i] = perm[adjncyGc[i]];
528 for (u = 0; u < nvtx; u++)
529 { vtxmap[u] = perm[vtxmap[u]];
530 vwghtGc[vtxmap[u]] += vwght[u];