5 #ifndef _MESHPARTITIONX_H
6 #define _MESHPARTITIONX_H
8 #include "../../shared/shared.h"
11 template <
class doubletype>
12 int MeshPartitionx(
int** pepart,
int** pnpart,
int numberofelements,
int numberofnodes,
int* elements,
13 int numberofelements2d,
int numberofnodes2d,doubletype* elements2d,
int* vweights,
int numlayers,
int elements_width,
int meshelementtype,
int num_procs){
29 switch(meshelementtype){
32 epart=xNew<int>(numberofelements);
33 npart=xNew<int>(numberofnodes);
34 index=xNew<int>(elements_width*numberofelements);
35 for (i=0;i<numberofelements;i++){
36 for (j=0;j<elements_width;j++){
37 *(index+elements_width*i+j)=(*(elements+elements_width*i+j))-1;
46 _error_(
"metis has not beed installed. Cannot run with more than 1 cpu");
49 else if (num_procs==1){
51 for (i=0;i<numberofelements;i++) epart[i]=0;
52 for (i=0;i<numberofnodes;i++) npart[i]=0;
54 else _error_(
"At least one processor is required");
60 epart2d=xNew<int>(numberofelements2d);
61 npart2d=xNew<int>(numberofnodes2d);
62 index2d=xNew<int>(3*numberofelements2d);
64 for (i=0;i<numberofelements2d;i++){
66 *(index2d+3*i+j)=reCast<int>(*(elements2d+3*i+j))-1;
75 _error_(
"metis has not beed installed. Cannot run with more than 1 cpu");
78 else if (num_procs==1){
80 for (i=0;i<numberofelements2d;i++) epart2d[i]=0;
81 for (i=0;i<numberofnodes2d;i++) npart2d[i]=0;
83 else _error_(
"At least one processor is required");
86 epart=xNew<int>(numberofelements);
89 for(i=0;i<(numlayers-1);i++){
90 for(j=0;j<numberofelements2d;j++){
91 epart[count]=epart2d[j];
97 npart=xNew<int>(numberofnodes);
100 for(i=0;i<(numlayers);i++){
101 for(j=0;j<numberofnodes2d;j++){
102 npart[count]=npart2d[j];
117 xDelete<int>(epart2d);
118 xDelete<int>(npart2d);
119 xDelete<int>(index2d);