使用 20 个节点六面体元素划分网格

计算科学 有限元 并行计算
2021-12-16 16:48:37

有没有办法分割由 20 个节点六面体元素组成的网格以进行并行处理?我使用 METIS 对具有 8 个节点的六面体元素的网格进行分区,效果很好,但我不知道如何将其扩展到 20 个节点的元素网格。

我的 Fortran 代码如下,它适用于 4 节点四边形和 8 节点六边形网格,但是当我使用 20 节点元素时它会出错

分段故障

代码

子程序 split_domain(细胞、节点、拓扑、nprocs、epart)

隐式无

!=================================================== ======= 整数,intent(in)::cells,nodes,topol(cells,20),nprocs

整数,意图(出)::epart(细胞)

整数::ne, nn

整数::eptr(细胞+1),eind(20 *细胞),npart(节点)

整数::ncommon,nparts,objval

整数、指针 ::vwgt、vsize、tpwgts、选项

整数::j

!=================================================== =======

ne=细胞;nn=节点;eptr(1)=1

做 j=1,ne

eind(20*j-19:20*j)=topol(j,:)

eptr(j+1)=eptr(j)+20

结束

ncommon=1;nparts=nprocs

调用 METIS_PartMeshDual (ne,nn,eptr,eind,vwgt,vsize,ncommon,nparts,tpwgts,options,objval,epart,npart)

结束子程序 split_domain

1个回答

METIS 支持对由任意数量的节点组成的网格进行划分。每个元素的节点数也可以在网格内变化。您只需以适当的方式创建相应的eptr数组eind查看手册第 5.6 节和第 4.1.2 节的详细说明和一些小示例。