【问题标题】:Creating a mesh within spherical shell with gmsh 4.7.1使用 gmsh 4.7.1 在球壳内创建网格
【发布时间】:2021-02-17 15:13:55
【问题描述】:

我正在尝试使用gmsh 4.7.1 在 3D 体积内创建网格,即具有同心球形孔的球体(换句话说,我有一个球壳)。为此,我编写了以下.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 网格,我的内孔也会被网格化,而我不想有任何元素孔内的网格。

我做错了什么?我怎样才能获得想要的结果?谢谢。

【问题讨论】:

    标签: mesh


    【解决方案1】:

    这里有几个问题:

    • Sphere command,已经创建了一个体积,而不是您期望的表面。
    • 由于上述几点,假设命令Surface Loop(3) = {2}; 从体积创建表面循环,这是1) 不受支持的操作。 2) 将尝试使用带有标签 2 的表面。目前尚不清楚,它会在现实中做什么(作为带有标签 2 的表面可能仍然存在)。
    • 因此,Volume 命令得到了一些奇怪的东西作为输入
    • 这都与特征长度没有设置有关,因此网格密度相当随意。

    如果你坚持使用 OpenCASCADE 内核,你可能想使用boolean operations

    以下是我的代码,其中任意选择的特征长度为 0.05,用于定义实心球壳的所有点:

    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 并不像我最初想象的那么容易处理。
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2020-08-11
    相关资源
    最近更新 更多