Gmsh 导出错误的网格数据

计算科学 有限元 计算几何 网格生成 gmsh
2021-12-22 16:28:14

所以希望我gmsh能用 o 厚度的二维横截面制作网格。我试图用矩形横截面的四边形元素制作结构化网格,但是当我检查 .mesh 文件以查看它是否具有正确数量的元素和节点时,它没有,我似乎无法弄清楚出为什么...

我将在此处发布 .geo 和 .mesh 文件:

.geo 文件:

`// Gmsh project created on Mon Apr 09 15:44:32 2018
Point(1) = {0, 0, 0, 1};
Point(2) = {6, 0, 0, 1};
Point(3) = {6, 2, 0, 1};
Point(4) = {0, 2, 0, 1};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Physical Line("left") = {4};
Physical Line("right") = {2};
Physical Line("top") = {3};
Physical Line("bottom") = {1};
Line Loop(1) = {4, 1, 2, 3};
Plane Surface(1) = {1};
Transfinite Surface {1} = {1, 2, 3, 4};
Transfinite Line {4, 2} = 3 Using Progression 1;
Transfinite Line {1, 3} = 7 Using Progression 1;
Recombine Surface {1};

.mesh 文件:

$MeshFormat
2.2 0 8
$EndMeshFormat
$PhysicalNames
4
1 1 "left"
1 2 "right"
1 3 "top"
1 4 "bottom"
$EndPhysicalNames
$Nodes
16
1 0 0 0
2 6 0 0
3 6 2 0
4 0 2 0
5 0.999999999995645 0 0
6 1.99999999999205 0 0
7 2.999999999988572 0 0
8 3.999999999992324 0 0
9 4.999999999996161 0 0
10 6 0.9999999999973842 0
11 5.000000000006331 2 0
12 4.000000000003875 2 0
13 3.000000000008324 2 0
14 2.000000000005607 2 0
15 1.000000000002804 2 0
16 0 1.000000000004119 0
$EndNodes
$Elements
16
1 1 2 4 1 1 5
2 1 2 4 1 5 6
3 1 2 4 1 6 7
4 1 2 4 1 7 8
5 1 2 4 1 8 9
6 1 2 4 1 9 2
7 1 2 2 2 2 10
8 1 2 2 2 10 3
9 1 2 3 3 3 11
10 1 2 3 3 11 12
11 1 2 3 3 12 13
12 1 2 3 3 13 14
13 1 2 3 3 14 15
14 1 2 3 3 15 4
15 1 2 1 4 4 16
16 1 2 1 4 16 1
$EndElements

`

我应该得到 12 个元素和 21 个节点,但我得到了 16 个元素和 16 个节点......如果有人能帮助我,我将不胜感激。提前致谢!

PS:我只需要一个四元网格生成器,如果你知道除 gmsh 之外的任何开源软件,请告诉我!

1个回答

你指定了错误的东西Physical如果您只想获得二维元素,则无需指定线是物理的。但是,您当然需要指定您的表面是物理的。

此外,您可能希望在宣布超限之前为超限线指定结构化网格中的#points Surface

请参阅所附的更正代码,该代码恰好产生 12 个二维元素和 21 个节点。

Point(1) = {0, 0, 0, 1};
Point(2) = {6, 0, 0, 1};
Point(3) = {6, 2, 0, 1};
Point(4) = {0, 2, 0, 1};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(1) = {4, 1, 2, 3};
Plane Surface(1) = {1};
Transfinite Line {4, 2} = 3 Using Progression 1;
Transfinite Line {1, 3} = 7 Using Progression 1;
Transfinite Surface {1} = {1, 2, 3, 4};
Recombine Surface {1};
Physical Surface(1) = {1};