使用 gmsh 4.7.1 在球形 shell 内创建网格
Creating a mesh within spherical shell with gmsh 4.7.1
我正在尝试使用 gmsh 4.7.1
在 3D 体积内创建网格,这是一个带有同心球孔的球体(换句话说,我有一个球形 shell)。为此,我编写了以下 .geo
文件:
// Gmsh project created on Wed Feb 17 15:22:45 2021
SetFactory("OpenCASCADE");
//+
Sphere(1) = {0, 0, 0, 0.1, -Pi/2, Pi/2, 2*Pi};
//+
Sphere(2) = {0, 0, 0, 1, -Pi/2, Pi/2, 2*Pi};
//+
Surface Loop(3) = {2};
//+
Surface Loop(4) = {1};
//+
Volume(3) = {3, 4};
//+
Physical Surface(1) = {1};
//+
Physical Surface(2) = {2};
//+
Physical Volume(3) = {3};
但是,一旦我在 gmsh
gui 中使用 3D
命令创建了 3D 网格,我的 内孔也被网格化了 ,而我希望孔内没有网格元素。
我做错了什么?我怎样才能得到想要的结果?谢谢。
这里有几个问题:
Sphere
command,已经创建了体积,而不是您期望的表面。
- 由于上述原因,假设命令
Surface Loop(3) = {2};
从体积创建表面循环,这是 1) 不受支持的操作。 2) 将尝试使用带有标签 2 的表面。目前还不清楚,它在现实中会做什么(因为带有标签 2
的表面可能仍然存在)。
- 因此,
Volume
命令得到一些奇怪的东西作为输入
- 这都与没有设置特征长度有关,因此网格密度比较随意。
如果你坚持使用OpenCASCADE内核,你可能想要使用boolean operations。
这是我的代码,对于定义实心球体的所有点,任意选择特征长度 0.05 shell:
SetFactory("OpenCASCADE");
Sphere(1) = {0, 0, 0, 0.1, -Pi/2, Pi/2, 2*Pi};
Sphere(2) = {0, 0, 0, 1, -Pi/2, Pi/2, 2*Pi};
BooleanDifference(3) = { Volume{2}; Delete; }{ Volume{1}; Delete; };
Characteristic Length{ PointsOf{ Volume{3}; } } = 0.05;
生成的带有剪裁的网格的 Paraview 可视化:
我正在尝试使用 gmsh 4.7.1
在 3D 体积内创建网格,这是一个带有同心球孔的球体(换句话说,我有一个球形 shell)。为此,我编写了以下 .geo
文件:
// Gmsh project created on Wed Feb 17 15:22:45 2021
SetFactory("OpenCASCADE");
//+
Sphere(1) = {0, 0, 0, 0.1, -Pi/2, Pi/2, 2*Pi};
//+
Sphere(2) = {0, 0, 0, 1, -Pi/2, Pi/2, 2*Pi};
//+
Surface Loop(3) = {2};
//+
Surface Loop(4) = {1};
//+
Volume(3) = {3, 4};
//+
Physical Surface(1) = {1};
//+
Physical Surface(2) = {2};
//+
Physical Volume(3) = {3};
但是,一旦我在 gmsh
gui 中使用 3D
命令创建了 3D 网格,我的 内孔也被网格化了 ,而我希望孔内没有网格元素。
我做错了什么?我怎样才能得到想要的结果?谢谢。
这里有几个问题:
Sphere
command,已经创建了体积,而不是您期望的表面。- 由于上述原因,假设命令
Surface Loop(3) = {2};
从体积创建表面循环,这是 1) 不受支持的操作。 2) 将尝试使用带有标签 2 的表面。目前还不清楚,它在现实中会做什么(因为带有标签2
的表面可能仍然存在)。 - 因此,
Volume
命令得到一些奇怪的东西作为输入 - 这都与没有设置特征长度有关,因此网格密度比较随意。
如果你坚持使用OpenCASCADE内核,你可能想要使用boolean operations。
这是我的代码,对于定义实心球体的所有点,任意选择特征长度 0.05 shell:
SetFactory("OpenCASCADE");
Sphere(1) = {0, 0, 0, 0.1, -Pi/2, Pi/2, 2*Pi};
Sphere(2) = {0, 0, 0, 1, -Pi/2, Pi/2, 2*Pi};
BooleanDifference(3) = { Volume{2}; Delete; }{ Volume{1}; Delete; };
Characteristic Length{ PointsOf{ Volume{3}; } } = 0.05;
生成的带有剪裁的网格的 Paraview 可视化: