22 #if _METIS_VERSION_ == 4
27 METIS_PartMeshNodal(&numberofelements,&numberofnodes, index,&etype,&numflag,&num_procs,&edgecut, epart, npart);
29 #elif _METIS_VERSION_ == 5
32 idx_t options[METIS_NOPTIONS];
33 METIS_SetDefaultOptions(options);
35 options[METIS_OPTION_PTYPE] = METIS_PTYPE_KWAY;
36 options[METIS_OPTION_OBJTYPE] = METIS_OBJTYPE_CUT;
37 options[METIS_OPTION_CTYPE] = METIS_CTYPE_SHEM;
38 options[METIS_OPTION_IPTYPE] = METIS_IPTYPE_METISRB;
39 options[METIS_OPTION_RTYPE] = METIS_RTYPE_GREEDY;
40 options[METIS_OPTION_DBGLVL] = 0;
41 options[METIS_OPTION_UFACTOR] = 30;
42 options[METIS_OPTION_MINCONN] = 0;
43 options[METIS_OPTION_CONTIG] = 0;
44 options[METIS_OPTION_SEED] = -1;
45 options[METIS_OPTION_NITER] = 10;
46 options[METIS_OPTION_NCUTS] = 1;
50 idx_t* eptr=xNew<idx_t>(numberofelements+1);
52 for(
int i=0;i<numberofelements;i++){
58 real_t* tpwgts=xNew<real_t>(num_procs);
59 for(
int i=0;i<num_procs;i++) tpwgts[i]=1.0/(num_procs);
64 vwgts=xNew<idx_t>(numberofnodes);
65 for(
int i=0;i<numberofnodes;i++) vwgts[i]=reCast<idx_t>(vweights[i]);
70 int output = METIS_PartMeshNodal(&numberofelements,&numberofnodes,eptr,index,vwgts,NULL,&num_procs,tpwgts,options,&objval,epart,npart);
71 if(output!=METIS_OK)
_error_(
"Could not partition mesh");
74 xDelete<idx_t>(vwgts);
76 xDelete<real_t>(tpwgts);
79 _error_(
"METIS version not supported yet");