有什么方法可以让gmsh在材质边界的两边使用相同的顶点集?

Wes*_*ger 3 numeric mesh numerical-methods finite-element-analysis

我试图对由3种材料组成的复杂几何进行网格划分,如下所示:

在此输入图像描述

几何从*.stp文件导入.

我在地理文件中定义了几个物理表面和3个物理域:

Physical Surface("air-case", 1) = {50, 42, 41, 40, 48};
Physical Surface("case-thermal", 2) = {32, 15, 22, 21, 25};
Physical Surface("thermal-grain", 3) = {2, 7, 6};
Physical Surface("thermal-fluid", 4) = {30, 27};
Physical Surface("burning", 5) = {3, 4, 5, 10, 13, 9, 11, 12};

Physical Surface("case-sym", 11) = {49, 51, 34, 43, 44, 47};
Physical Surface("thermal-sym", 12) = {24, 28, 14, 23, 29, 33};
Physical Surface("grain-sym", 13) = {8, 1};

Physical Volume("case", 1) = {6, 5, 7};
Physical Volume("thermal", 2) = {2, 3, 4};
Physical Volume("grain",3)={1};
Run Code Online (Sandbox Code Playgroud)

乍一看,图片看起来还不错.材质边界附近的顶点对齐良好,请参阅下面的放大视图:

在此输入图像描述

但是,在几何体内部(实际上,在圆柱体部分的中间附近),您可以发现顶点未对齐

在此输入图像描述

它是有线的,因为在绿色和黄色材料的边界上,所有顶点都是对齐的.即使输出网格包含重复的点,我也可以根据坐标轻松删除重复的点.我认为这意味着gmsh确实有能力确保这一点.

但是,在黄色/蓝色界面附近,顶点只是在两侧随机分布,因此在不修改坐标的情况下连接顶点是不可能的.

我认为必须有一些方法来确保gmsh在界面的两侧使用相同的顶点,但我没有在文档中找到相关信息.有什么建议?

Wes*_*ger 5

好的,我已经在其他地方找到了解决方案.我在这里发布它是为了帮助遇到同样问题的其他人.

问题是由我的建模程序造成的.我在分离的部件中使用Creo对几何体进行建模,然后导出装配体.因此,*.stp文件包含几个未拓扑连接的几何.

要解决这个问题,我们需要合并重复的表面.有两种选择:

您可以使用Gmsh中的新CAD功能删除这些重复的内部曲面.有了稳定版本,你就可以做到

SetFactory("OpenCASCADE");
v() = ShapeFromFile("file.step");
BooleanFragments{ Volume{v()}; Delete; }{}
Run Code Online (Sandbox Code Playgroud)

使用最新的开发快照,您可以使用"Coherence"快捷方式(完全相同):

SetFactory("OpenCASCADE");
Merge "file.step";
Coherence;
Run Code Online (Sandbox Code Playgroud)

Coherence对我的模型不起作用,但BooleanFragments效果很好.

感谢Geuzaine教授提供的帮助.