gmsh 中的重复结构化表面/网格

问题描述 投票:0回答:3

我正在尝试从 gmsh 中的简单几何形状构建大型结构,并且我想使用结构化(四边形)网格。我首先创建该形状,然后根据需要经常复制和翻译它以构建我的最终结构。

问题是,即使我将原始形状的线和面定义为超限的,一旦我复制并翻译它,这个属性就会丢失。检查此示例代码是否有正方形:

Point(1) = {0, 0, 0, 1};
Point(2) = {0, 1, 0, 1};
Point(3) = {1, 1, 0, 1};
Point(4) = {1, 0, 0, 1};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {1, 2, 3, 4};
Plane Surface(6) = {5};

Transfinite Line {1, 2, 3, 4} = 10 Using Progression 1;
Transfinite Surface {6};
Recombine Surface {6};

Translate {0, 1, 0} {
  Duplicata { Surface{6}; }
}

我获得了带有结构化网格的原始正方形,但复制的正方形没有此属性。 复制曲面时是否可以保留结构化网格?

编辑:似乎确实不可能复制结构化体积或表面。问题在于这些属性与网格本身而不是几何体直接相关。并且网格无法复制。

2d mesh
3个回答
5
投票

这是可能的。

您可以使用 GMSH

Geometry.CopyMeshingMethod
属性,该属性负责复制复制或平移几何实体的网格划分方法。默认情况下,它是关闭的。要打开它,您只需将以下行添加到 GEO 文件的开头即可。

Geometry.CopyMeshingMethod = 1;

现在,比较一下:

enter image description here

在 GMSH 3.0.5 上测试,但应该适用于任何现代版本。


0
投票

此修复(使用“

Geometry.CopyMeshingMethod = 1;
”)有效,除非您使用 OpenCASCADE 定义几何图形。

尝试简单地在脚本的开头包含“

SetFactory("OpenCASCADE");
”,你会发现它失败了。


0
投票

我使用相同的示例并尝试生成任意网格,因此删除了超限部分。但这没有用。我在每个表面上都有不同的网格。关于如何将重复的任意网格从一个表面复制到新表面的任何想法?

// Gmsh project created on Tue Sep 03 22:21:57 2024
lc = 0.3
Geometry.CopyMeshingMethod = 1;
Point(1) = {0, 0, 0, lc};
Point(2) = {0, 1, 0, lc};
Point(3) = {1, 1, 0, lc};
Point(4) = {1, 0, 0, lc};
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(5) = {1, 2, 3, 4};
Plane Surface(6) = {5};
Translate {0, 1, 0} {
  Duplicata { Surface{6}; }
}

也很想知道是否可以在此处添加网格划分命令。我更感兴趣的是从一个表面复制到另一个表面,即网格(这意味着默认情况下也会复制表面)

© www.soinside.com 2019 - 2024. All rights reserved.