将非结构化网格转换为结构化网格

计算科学 非结构化网格 gmsh
2021-12-03 13:53:05

我需要帮助知道,如何将非结构化二维网格转换为结构化网格?(软件 Gmsh 版本 4.9.3)。

这是我在 Gmsh 中的脚本。

Mesh.MshFileVersion = 2.2; 

// Geometry

//Points
Point(1) = {0, 1, 0, 0.3};
Point(2) = {0, 2, 0, 0.3};
Point(3) = {7, 2, 0, 0.3};
Point(4) = {7, 0, 0, 0.3};
Point(5) = {1, 1, 0, 0.3};
Point(6) = {1, 0, 0, 0.3};

// Lines

Line(1) = {5, 1};
Line(2) = {1, 2};
Line(3) = {2, 3};
Line(4) = {3, 4};
Line(5) = {4, 6};
Line(6) = {6, 5};

Curve Loop(1) = {1, 2, 3, 4, 5, 6};
Plane Surface(1) = {1};
Transfinite Surface {1};
1个回答

只有在Gmsh具有四个角点的平面中才能使用Trasnfinite选项与结构化网格进行网格划分。在您的文件中,平面由六个点构成,Gmsh无法对其进行网格划分。在这种情况下,您应该将问题几何划分为不同的矩形(具有四个角点的平面),以便Trasnfinite可以将选项应用于它们。在以下代码中,几何图形使用三个矩形建模:

lc = 0.3;
//Points
Point(1) = {0, 1, 0, lc};
Point(2) = {0, 2, 0, lc};
Point(3) = {7, 2, 0, lc};
Point(4) = {7, 0, 0, lc};
Point(5) = {1, 1, 0, lc};
Point(6) = {1, 0, 0, lc};
Point(7) = {1, 2, 0, lc};
Point(8) = {7, 1, 0, lc};
//Lines
Line(1) = {1,5};
Line(2) = {5,6};
Line(3) = {6,4};
Line(4) = {4,8};
Line(5) = {8,3};
Line(6) = {3,7};
Line(7) = {7,2};
Line(8) = {2,1};
Line(9) = {5,7};
Line(10) = {5,8};
//Curves
Curve Loop(1) = {3,4,-10,2};
Plane Surface(1) = {1};
Curve Loop(2) = {10,5,6,-9};
Plane Surface(2) = {2};
Curve Loop(3) = {1,9,7,8};
Plane Surface(3) = {3};
//
n1 = 4;
n2 = 4;
n3 = n1*5-1;
Transfinite Curve {1,7} = n1;
Transfinite Curve {2,4,5,8,9} = n2;
Transfinite Curve {3,6,10} = n3;
Transfinite Surface {1,2,3};

这是生成的结构化三角形和矩形(使用Recombine 2D选项)网格: 在此处输入图像描述