当“网格选项”包括“通过拆分细化”但没有关于粗化时,如何在 Gmsh 中粗化网格?

计算科学 网格生成 gmsh
2021-12-22 20:53:17

我是 Gmsh 的新手,我无法用粗网格创建一个圆。我用

Geometry->Elementary entities->Add->Circle

创建几何图形,然后

Mesh->1D

创建网格。然后我可以使用 Mesh->Refine 通过拆分来细化网格,但似乎没有粗化网格的选项?

对于其他形状/尺寸,我可以直接使用 .geo 文件轻松粗化网格。例如,我在 3D 中创建了一个平面矩形,并在我的 .geo 文件中使用“h”参数来使网格更细/更粗。这是 .geo 文件:

h = 1;
//+
Point(1) = {-1, -1, 0, h};
//+
Point(2) = {1, -1, 0, h};
//+
Point(3) = {1, 1, 0, h};
//+
Point(4) = {-1, 1, 0, h};
//+
Line(1) = {1, 2};
//+
Line(2) = {2, 3};
//+
Line(3) = {3, 4};
//+
Line(4) = {4, 1};
//+
Line Loop(1) = {3, 4, 1, 2};
//+
Plane Surface(1) = {1};

但是我的 .geo 圆网格没有任何地方我可以使用上面的“h”等变量来细化/粗化圆的网格:

//+
SetFactory("OpenCASCADE");
Circle(1) = {0, 0, 0, 1, 0, 2*Pi};

那么如何在 Gmsh 中或直接使用 .geo 文件中的某些参数为圆创建更粗糙的网格?

1个回答

要创建更粗的网格,您可以将特征长度全局设置为更大的值,例如,

SetFactory("OpenCASCADE");
Mesh.CharacteristicLengthFactor = 2;

Circle(1) = {0, 0, 0, 1, 0, 2*Pi};
Line Loop(1) = {1};
Surface(1) = {1};

增加 的值会Mesh.CharacteristicLengthFactor导致网格更粗糙;减小该值会产生更精细的网格。

您还可以在 gmsh 选项中设置特征长度因子。您可以在 下找到它Tools -> Options -> Mesh -> General -> Element size factor

如果您需要更好地控制单元尺寸,您可以为域的不同部分设置单元尺寸,例如,通过定义一个需要特定网格尺寸的框。请参阅gmsh 手册中的指定网格单元尺寸