107 for (u = 0; u < nvtx; u++)
141 { printf(
"\nWarning in constructMultisector\n"
142 " graph has less than %d nodes, skipping separator construction\n\n",
171 fprintf(stderr,
"\nError in function constructMultisector\n"
172 " unrecognized ordering type %d\n", ordtype);
185 PORD_INT *stage, *intvertex, *intcolor;
186 PORD_INT nvint, nnodes, totmswght, i;
198 nnodes = totmswght = 0;
202 if ((parent == NULL) || (parent->
childB == NULL)
203 || (parent->
childW == NULL))
204 { fprintf(stderr,
"\nError in function extractMS2stage\n"
205 " nested dissection tree corrupted\n");
216 for (i = 0; i < nvint; i++)
217 if (intcolor[i] ==
GRAY)
219 stage[intvertex[i]] = 1;
241 PORD_INT *stage, *intvertex, *intcolor;
242 PORD_INT nvtx, nvint, maxstage, istage, nnodes, totmswght, i, u;
254 maxstage = nnodes = totmswght = 0;
258 if ((parent == NULL) || (parent->
childB == NULL)
259 || (parent->
childW == NULL))
260 { fprintf(stderr,
"\nError in function extractMSmultistage\n"
261 " nested dissection tree corrupted\n");
268 istage = nd->
depth + 1;
269 maxstage =
max(maxstage, istage);
274 for (i = 0; i < nvint; i++)
275 if (intcolor[i] ==
GRAY)
277 stage[intvertex[i]] = istage;
293 nvtx = ndroot->
G->
nvtx;
294 for (u = 0; u < nvtx; u++)
296 stage[u] = maxstage - stage[u] + 1;
#define TRISTAGE_MULTISECTION
#define mymalloc(ptr, nr, type)
multisector_t * trivialMultisector(graph_t *G)
void freeMultisector(multisector_t *ms)
multisector_t * extractMSmultistage(nestdiss_t *ndroot)
multisector_t * extractMS2stage(nestdiss_t *ndroot)
multisector_t * newMultisector(graph_t *G)
multisector_t * constructMultisector(graph_t *G, options_t *options, timings_t *cpus)
nestdiss_t * setupNDroot(graph_t *, PORD_INT *)
void freeNDtree(nestdiss_t *)
void buildNDtree(nestdiss_t *, options_t *, timings_t *)
void freeNDnode(nestdiss_t *)
struct _nestdiss * parent
struct _nestdiss * childB
struct _nestdiss * childW
struct _nestdiss nestdiss_t
struct _multisector multisector_t