partitioning nurbs-based finite element mesh using Metis


I am using METIS_PartMeshDual to partitioning a nurbs-based finite element mesh. For the nurbs-based finite element, each element has 64 (4 by 4 by 4) nodes if we use cubic splines in 3D. And the number of common nodes that two elements must have in order to put an edge between them in the dual graph is 48. I tried to partitioning a 80 by 80 by 80 mesh into 16 parts. The total edgecuts stored in objval is 36612. And I also calculate the total number of entries that will write on the "wrong" processors is around 2281093 based on the partitioning output. Actually 2281093 is very intensive for communication, thus I am wondering whether Metis have any better options or other routines I could use to get better partitioning.


RE: Wen, The communication


The communication structure of your problem does not seem to be properly modeled by the mesh. I suggest you actually construct a graph in which there is an edge between any pair of nodes whose values need to be communicated and then partition that graph.