在 GMSH 中为“I”形几何体创建适当的四边形网格

计算科学 网格生成 gmsh
2021-12-17 02:58:26

我正在尝试制作一个“I”形横截面的二维四边形网格,元素大小为 5。到目前为止,我已经设法只制作四边形,但是有些元素在他们不应该。此外,元素总数不正确。你能帮帮我吗?

这是我的 .geo 代码:

Point(1) = {0, 0, 0, 1.0};
Point(2) = {45, 0, 0, 1.0};
Point(3) = {55, 0, 0, 1.0};
Point(4) = {100, 0, 0, 1.0};
Point(5) = {100, 10, 0, 1.0};
Point(6) = {55, 10, 0, 1.0};
Point(7) = {45, 10, 0, 1.0};
Point(8) = {0, 10, 0, 1.0};
Point(9) = {0, 90, 0, 1.0};
Point(10) = {45, 90, 0, 1.0};
Point(11) = {55, 90, 0, 1.0};
Point(12) = {100, 90, 0, 1.0};
Point(13) = {100, 100, 0, 1.0};
Point(14) = {55, 100, 0, 1.0};
Point(15) = {45, 100, 0, 1.0};
Point(16) = {0, 100, 0, 1.0};

Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 5};
Line(5) = {5, 6};
Line(6) = {6, 11};
Line(7) = {11, 12};
Line(8) = {12, 13};
Line(9) = {13, 14};
Line(10) = {14, 15};
Line(11) = {15, 16};
Line(12) = {16, 9};
Line(13) = {9, 10};
Line(14) = {10, 7};
Line(15) = {7, 8};
Line(16) = {8, 1};

Line Loop(1) = {14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};

Plane Surface(1) = {1};

Recombine Surface {1};

Transfinite Line {2, 4, 16, 12, 10, 8} = 3 Using Progression 1;
Transfinite Line {14, 6} = 17 Using Progression 1;
Transfinite Line {1, 15, 3, 5, 7, 9, 13, 11} = 10 Using Progression 1;
1个回答

因此,默认情况下并且没有重组为四边形(注释掉Recombine Surface {1}),GMSH 会创建一个类似于图片左侧的网格。通过将曲面重新组合成四元元素,您将获得图片右侧的网格。自然,如果您的重组来自原始三角形网格,您会期望您提到的“扭曲”四边形元素,以及一般“不正确”的元素数量。

默认情况下,GMSH 使用Blossom重组算法,该算法无法从左侧的“杂乱”网格生成所需的网格。请注意,左侧的原始网格满足您对三角形的所有要求:它实际上在每一侧放置了所需数量的元素(由您的Transfinite Line定义指定);但是,它可以自由地在您的 I 形几何体中做任何想做的事情——而且确实如此。

在此处输入图像描述

您的选择之一是更改原始三角形网格的网格划分算法。现在,GMSH 支持(实验性)Delaunay for quads2-D 网格划分算法,该算法应该产生您想要的网格(如果我正确地理解了您的意图)。

在此处输入图像描述

您可以在 GUI 中选择此算法:Tools->Options->Mesh->General->2-D Meshing Algorithm或通过将以下行添加到 GEO 文件的开头:

Mesh.Algorithm = 8; // Delaunay for quads

要获得正确的输出网格,您还应该在文件末尾添加物理表面:

Physical Surface(1) = {1};