我正在尝试从 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}; }
}
我获得了带有结构化网格的原始正方形,但复制的正方形没有此属性。 复制曲面时是否可以保留结构化网格?
编辑:似乎确实不可能复制结构化体积或表面。问题在于这些属性与网格本身而不是几何体直接相关。并且网格无法复制。
此修复(使用“
Geometry.CopyMeshingMethod = 1;
”)有效,除非您使用 OpenCASCADE 定义几何图形。
尝试简单地在脚本的开头包含“
SetFactory("OpenCASCADE");
”,你会发现它失败了。
我使用相同的示例并尝试生成任意网格,因此删除了超限部分。但这没有用。我在每个表面上都有不同的网格。关于如何将重复的任意网格从一个表面复制到新表面的任何想法?
// 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}; }
}
也很想知道是否可以在此处添加网格划分命令。我更感兴趣的是从一个表面复制到另一个表面,即网格(这意味着默认情况下也会复制表面)