在GMSH

时间:2018-12-24 14:03:51

标签: mesh freecad fenics

我目前正在尝试进行静磁有限元模拟,并且我想使用GMSH对几何进行网格划分。几何如下所示:在Magnetic-Circuit

我使用FreeCAD创建几何图形,并将其作为.STEP文件导入到GMSH中。在GMSH中,我定义了3个物理组,产生了以下脚本:

Merge "yoke_simulation.step";
Physical Volume("iron") = {1, 7, 9, 6, 3, 2, 4};
//+
Physical Volume("current") = {5};
//+
Physical Volume("air") = {8};

创建网格时,得到以下结果: enter image description here

问题在于GMSH似乎为每个物体创建了一个单独的网格,而没有将这些网格相互连接。例如,如果人们观察两个圆锥体之间的区域,很明显两个圆锥体的网格未与空气网格相连:enter image description here

如何让GMSH为所有物体创建单个连接的网格?

3 个答案:

答案 0 :(得分:1)

现在看来,Air8只是整体边界框,没有必要减去IronCurrent的体积。因此,它为整个边界框创建了一个四面体网格,而无需考虑其他物体。

我不是FreeCAD专家,所以我真的不知道如何在那里正确设置它。可能的话,请尝试在此处指定Air卷,以确保其中不包含您的详细信息。

另一种方法可能需要在GMSH级别进行一些修改。例如,在使其物理化之前创建适当的Air卷。您有要从卷1, 7, 9, 6, 3, 2, 4, 5中减去的卷8。可以通过

BooleanDifference(100) = { Volume{8}; Delete; }{ Volume{1,7,9,6,3,2,4,5}; };
Physical Volume("air") = {100};

请注意,只有使用GMSH内的OpenCASCADE内核,先前的代码才有效。 请参阅GMSH中的以下示例代码以供参考:

SetFactory("OpenCASCADE");

Box(1) = {0,0,0, 1,1,1};

Box(2) = {0.1,0.1,0.1, 0.2,0.2,0.2};
Box(3) = {0.5,0.5,0.5, 0.2,0.2,0.2};

BooleanDifference(100) = { Volume{1}; Delete; }{ Volume{2,3}; };
Physical Volume ("air") = {100};
Physical Volume ("iron") = {2,3};

答案 1 :(得分:0)

删除命令Coherence;合并线之后,将迫使GMSH形成不重叠体积的连贯网格。

答案 2 :(得分:0)

我创建了一组自由和开放源代码工具,以生成用于多材料FEM的分区网格。 它们在这里可用 github.com/NH89/SOFA_mesh_partitioning_tools

它们基于CGAL几何库,并从任意相交的三角曲面网格生成分区的四面体网格。

它们被设计为与SOFA实时软物质FEM框架一起使用,但可以用于任何分区的FEM应用程序。