是否可以使用 gmsh 重新网格化?

计算科学 网格生成 gmsh
2021-12-07 07:46:07

我目前正在为我的模拟(学术目的)研究重新网格化,我尝试找到一种使用 Gmsh 重新划分先前网格的方法。第一个网格 (normalMesh.msh) 是使用 .geo 文件 (normalMesh.geo) 创建的,新网格应该更粗或更细,具体取决于位置和应力分布(Abaqus 将是我的求解器)。MWE 如下所示。

normalMesh.geo

Point(1) = {0, 0, 0, 1.0};
Point(2) = {0, 2, 0, 1.0};
Point(3) = {2, 2, 0, 1.0};
Point(4) = {0, 1, 0, 1.0};
Point(5) = {1, 2, 0, 1.0};
Circle(1) = {1, 2, 3};
Circle(2) = {4, 2, 5};
Line(3) = {5, 3};
Line(4) = {4, 1};
Line Loop(1) = {2, 3, -1, -4};
Plane Surface(1) = {1};
Physical Surface("surf1") = {1};
Physical Line("setTop") = {3};
Physical Line("setBot") = {4};
Physical Line("setInner") = {2};
Physical Line("setOuter") = {1};

如果您现在网格化 .geo 文件

gmsh <name_of_your_geo_file.geo> -2 <-o name_of_the_output_file> 

你可以在gmsh中查看。

NormalMesh.msh 显示在 Gmsh 中,与几何形状略有相似,在 .geo 文件中给出

如果你对更细的Mesh.geo 进行网格划分,你会看到我的目标。

Point(1) = {0, 0, 0, 0.3};
Point(2) = {0, 2, 0, 1.0};
Point(3) = {2, 2, 0, 1.0};
Point(4) = {0, 1, 0, 0.3};
Point(5) = {1, 2, 0, 1.0};
Circle(1) = {1, 2, 3};
Circle(2) = {4, 2, 5};
Line(3) = {5, 3};
Line(4) = {4, 1};
Line Loop(1) = {2, 3, -1, -4};
Plane Surface(1) = {1};
Physical Surface("surf1") = {1};
Physical Line("setTop") = {3};
Physical Line("setBot") = {4};
Physical Line("setInner") = {2};
Physical Line("setOuter") = {1};

更精细的Mesh.msh 显示在gmsh 中,几何形状更相似

如果您现在比较两个 .geo 文件,您会发现我只稍微更改了 2 行。我更改了第 1 行(从 1.0 到 0.3)和第 4 行(从 1.0 到 0.3)。我希望能够仅操作 .msh 文件以获得相同的结果或重新划分 .msh 文件。

我感谢任何形式的建议和帮助。

1个回答

仅使用 MSH 文件(在纯 GMSH 中)是一件棘手的事情。因为从概念上讲,MSH 文件不包含有关已离散化的基础几何的信息。

但是,GMSH 中存在某些重新划分网格的功能。请参阅教程 13“在没有基础 CAD 模型的情况下重新划分网格”以重新划分 STL 文件。对于您的任务,您必须对网格元素进行分类,以便只选择需要细化的元素。然后,您将在正确的点应用新的特征长度。

不幸的是,我在快速尝试时无法达到预期的效果;但只要付出足够的努力,这当然是可能的。