需要一个简单的网格格式(FEA)和一个生成网格的工具

计算科学 有限元 网格生成
2021-12-07 23:27:52

我想为我的课程项目编写一个 2D FEA 代码,我需要在一个简单的几何体(如 L 形板或其中有一个方形/圆形孔)上导入一个网格(2d,简单四边形/三边形),类似这样.

因为我想编写自己的代码,所以我需要在我的代码中读取网格文件,因此寻找一种简单的格式来指定元素连接并帮助识别边界节点(以应用边界条件)。

如果您可以为此目的指出一些易于使用/理解的工具以及有关网格格式的良好文档,那将是非常棒的。

谢谢你,普拉纳夫

编辑:

GMSH 非常适合我想要的用途。

旧版编辑:

我发现了这个问题的暂定解决方法,但肯定不是解决方案:

该文件的重要部分是相应边界上的节点信息。我在 ANSYS Workbench 中使用 ANSYS DesignModeler 和静态结构模块。我在 DesignModeler 中创建几何图形,并在静态结构模块内的 ANSYS Meshing 中对其进行网格划分。您可以使用命名选择指定边界,以便稍后应用载荷。生成网格后,您可以从工具菜单导出旧 ANSYS APDL 的输入文件,该菜单导出包含网格信息和所有问题设置的 ASCII“.dat”文件。我删除了所有不必要的细节以获得以下结果。现在我可以很容易地编写一个函数来读取这个文件。

#Nodes
        1    0.000000000E+000    1.000000000E+001    0.000000000E+000
        2    0.000000000E+000    0.000000000E+000    0.000000000E+000
        3    0.000000000E+000    8.888888889E+000    0.000000000E+000
        4    0.000000000E+000    7.777777778E+000    0.000000000E+000
        5    0.000000000E+000    6.666666667E+000    0.000000000E+000
        6    0.000000000E+000    5.555555556E+000    0.000000000E+000
        7    0.000000000E+000    4.444444444E+000    0.000000000E+000
        8    0.000000000E+000    3.333333333E+000    0.000000000E+000
        9    0.000000000E+000    2.222222222E+000    0.000000000E+000
       10    0.000000000E+000    1.111111111E+000    0.000000000E+000
       11    5.000000000E+000    0.000000000E+000    0.000000000E+000
       12    1.000000000E+000    0.000000000E+000    0.000000000E+000
       13    2.000000000E+000    0.000000000E+000    0.000000000E+000
       14    3.000000000E+000    0.000000000E+000    0.000000000E+000
       15    4.000000000E+000    0.000000000E+000    0.000000000E+000
       16    5.000000000E+000    5.000000000E+000    0.000000000E+000
       17    5.000000000E+000    1.000000000E+000    0.000000000E+000
       18    5.000000000E+000    2.000000000E+000    0.000000000E+000
       19    5.000000000E+000    3.000000000E+000    0.000000000E+000
       20    5.000000000E+000    4.000000000E+000    0.000000000E+000
       21    1.000000000E+001    5.000000000E+000    0.000000000E+000
       22    6.000000000E+000    5.000000000E+000    0.000000000E+000
       23    7.000000000E+000    5.000000000E+000    0.000000000E+000
       24    8.000000000E+000    5.000000000E+000    0.000000000E+000
       25    9.000000000E+000    5.000000000E+000    0.000000000E+000
       26    1.000000000E+001    1.000000000E+001    0.000000000E+000
       27    1.000000000E+001    6.000000000E+000    0.000000000E+000
       28    1.000000000E+001    7.000000000E+000    0.000000000E+000
       29    1.000000000E+001    8.000000000E+000    0.000000000E+000
       30    1.000000000E+001    9.000000000E+000    0.000000000E+000
       31    8.888888889E+000    1.000000000E+001    0.000000000E+000
       32    7.777777778E+000    1.000000000E+001    0.000000000E+000
       33    6.666666667E+000    1.000000000E+001    0.000000000E+000
       34    5.555555556E+000    1.000000000E+001    0.000000000E+000
       35    4.444444444E+000    1.000000000E+001    0.000000000E+000
       36    3.333333333E+000    1.000000000E+001    0.000000000E+000
       37    2.222222222E+000    1.000000000E+001    0.000000000E+000
       38    1.111111111E+000    1.000000000E+001    0.000000000E+000
       39    3.100885795E+000    6.940821089E+000    0.000000000E+000
       40    3.883906237E+000    7.027860768E+000    0.000000000E+000
       41    3.017869238E+000    6.161626033E+000    0.000000000E+000
       42    4.850074589E+000    7.040770750E+000    0.000000000E+000
       43    5.864808320E+000    7.043474312E+000    0.000000000E+000
       44    6.897973722E+000    7.037079226E+000    0.000000000E+000
       45    4.014156390E+000    6.025411191E+000    0.000000000E+000
       46    2.984856810E+000    5.187710894E+000    0.000000000E+000
       47    2.963924128E+000    4.159491948E+000    0.000000000E+000
       48    2.954305198E+000    3.113634563E+000    0.000000000E+000
       49    2.966833201E+000    2.070582688E+000    0.000000000E+000
       50    1.954872141E+000    3.206756202E+000    0.000000000E+000
       51    1.964133590E+000    4.280955357E+000    0.000000000E+000
       52    1.987442885E+000    5.363330639E+000    0.000000000E+000
       53    2.037966141E+000    6.460608169E+000    0.000000000E+000
       54    2.369722555E+000    7.667980533E+000    0.000000000E+000
       55    3.585407332E+000    7.997051341E+000    0.000000000E+000
       56    4.672581651E+000    8.037841747E+000    0.000000000E+000
       57    5.733421173E+000    8.044844080E+000    0.000000000E+000
       58    6.801325531E+000    8.036846126E+000    0.000000000E+000
       59    7.868898928E+000    8.028595372E+000    0.000000000E+000
       60    7.925684523E+000    7.023684703E+000    0.000000000E+000
       61    1.963418650E+000    2.132912786E+000    0.000000000E+000
       62    4.968222423E+000    6.024805920E+000    0.000000000E+000
       63    5.950275027E+000    6.023627968E+000    0.000000000E+000
       64    6.960337601E+000    6.022422539E+000    0.000000000E+000
       65    7.971188476E+000    6.011697947E+000    0.000000000E+000
       66    8.927457869E+000    8.014515675E+000    0.000000000E+000
       67    8.961487394E+000    7.010908471E+000    0.000000000E+000
       68    2.983632029E+000    1.037919977E+000    0.000000000E+000
       69    1.984671847E+000    1.070964476E+000    0.000000000E+000
       70    9.864873052E-001    1.087871232E+000    0.000000000E+000
       71    9.783216106E-001    2.183930277E+000    0.000000000E+000
       72    9.782477164E-001    3.284728024E+000    0.000000000E+000
       73    9.781132470E-001    4.382433521E+000    0.000000000E+000
       74    9.974305756E-001    5.503140644E+000    0.000000000E+000
       75    1.072256462E+000    6.644678490E+000    0.000000000E+000
       76    1.150918303E+000    7.757754861E+000    0.000000000E+000
       77    1.153760333E+000    8.870140771E+000    0.000000000E+000
       78    2.272715412E+000    8.874785514E+000    0.000000000E+000
       79    3.378616377E+000    8.955660205E+000    0.000000000E+000
       80    4.521905029E+000    9.017703001E+000    0.000000000E+000
       81    5.627472506E+000    9.027073068E+000    0.000000000E+000
       82    6.720590452E+000    9.025172424E+000    0.000000000E+000
       83    7.808554241E+000    9.018864371E+000    0.000000000E+000
       84    8.908424832E+000    9.011734730E+000    0.000000000E+000
       85    8.986541286E+000    6.005180504E+000    0.000000000E+000
       86    3.993993695E+000    5.054644401E+000    0.000000000E+000
       87    3.975665129E+000    4.060554879E+000    0.000000000E+000
       88    3.974355784E+000    3.051025159E+000    0.000000000E+000
       89    3.980336212E+000    2.026422574E+000    0.000000000E+000
       90    3.990475831E+000    1.010320637E+000    0.000000000E+000
-1

#Elements
        1       39       54       53       41
        2       39       40       55       54
        3       41       45       40       39
        4       45       62       42       40
        5       41       46       86       45
        6       40       42       56       55
        7       53       52       46       41
        8       42       43       57       56
        9       42       62       63       43
       10       43       44       58       57
       11       43       63       64       44
       12       44       60       59       58
       13       44       64       65       60
       14       86       16       62       45
       15       52       51       47       46
       16       47       87       86       46
       17       51       50       48       47
       18       48       88       87       47
       19       50       61       49       48
       20       49       89       88       48
       21       49       68       90       89
       22       61       69       68       49
       23       50       72       71       61
       24       51       73       72       50
       25       52       74       73       51
       26       53       75       74       52
       27       54       76       75       53
       28       54       78       77       76
       29       55       79       78       54
       30       56       80       79       55
       31       57       81       80       56
       32       58       82       81       57
       33       59       83       82       58
       34       59       66       84       83
       35       60       67       66       59
       36       65       85       67       60
       37       71       70       69       61
       38       62       16       22       63
       39       63       22       23       64
       40       64       23       24       65
       41       65       24       25       85
       42       66       29       30       84
       43       67       28       29       66
       44       85       27       28       67
       45       68       14       15       90
       46       69       13       14       68
       47       70       12       13       69
       48       70       10        2       12
       49       71        9       10       70
       50       72        8        9       71
       51       73        7        8       72
       52       74        6        7       73
       53       75        5        6       74
       54       76        4        5       75
       55       77        3        4       76
       56       77       38        1        3
       57       78       37       38       77
       58       79       36       37       78
       59       80       35       36       79
       60       81       34       35       80
       61       82       33       34       81
       62       83       32       33       82
       63       84       31       32       83
       64       84       30       26       31
       65       85       25       21       27
       66       87       20       16       86
       67       88       19       20       87
       68       89       18       19       88
       69       90       17       18       89
       70       90       15       11       17
-1

#NamedSelection
BOTTOM  NODE     6
         2        11        12        13        14        15


#NamedSelection
TOP    NODE       10
         1        26        31        32        33        34        35        36
        37        38

#NamedSelection
RIGHT_SIDE  NODE      6
        21        26        27        28        29        30


#End
4个回答

我会推荐gmsh。实际上几天前我才刚刚开始使用这个程序。但它使用起来很简单。您可以创建各种 2D 甚至 3D 几何图形,它提供了大量信息、边界节点等。

这是网站的链接:http: //geuz.org/gmsh/

他们有很多有用的参考资料,当然还有一本手册,还有一个邮件列表存档,我必须有点用处。

基本上据我了解,您可以以类似 CAD 的方式使用该程序,即绘制点、线。或者您可以手动编写信息。我走的是编程路线。

这是另一个很好的入门参考: https ://github.com/FluidityProject/fluidity/wiki/Gmsh-tutorial

更新: 好的,可以通过执行以下操作在 .txt 文件中找到节点位置和元素信息。一旦 gmsh 启动并运行,打开 .msh 文件(我使用的是 2.8.4)转到Geometry选项卡,然后Edit file这将打开一个包含信息的 .txt。

我还没有弄清楚如何解释元素信息。

祝你好运!

如果您可以访问 MATLAB,则可以考虑使用 PDE Toolbox 生成几何和网格:

http://www.mathworks.com/help/pde/index.html

通过对原始形状进行布尔运算,很容易生成简单的几何图形,就像您描述的几何图形一样。输出网格由三个 MATLAB 数组描述:节点位置、元素连通性和边界边矩阵。

http://www.mathworks.com/help/pde/ug/initmesh.html

另一个尚未提及的选项是 NetGen:

http://www.hpfem.jku.at/netgen/

http://sourceforge.net/projects/netgen-mesher/

它支持 CSG(构造立体几何),可以输出 2D 和 3D 网格。文档 PDF 中支持并描述了多种输出格式。

如果您可以使用,Mathematica 版本 10 提供了一个基于内置有限元方法的 PDE 求解框架。有关于网格生成可视化的教程。该概念基于两个函数ToBoundaryMeshToElementMesh都生成ElementMesh数据结构。然后可以查询该数据结构的连通性、边界元素。这是一个简单的手动示例:

Needs["NDSolve`FEM`"]
mesh = ToElementMesh[
  "Coordinates" -> {{1.293, 0.228}, {1., 0.}, {0.94, 0.342}, {1.293, 
     0.}, {1.215, 0.442}, {2., 0.}, {1.879, 0.684}}, 
  "MeshElements" -> {TriangleElement[{{1, 3, 2}, {1, 2, 4}, {1, 4, 
       6}, {1, 6, 7}, {1, 7, 5}, {1, 5, 3}}]}]

可视化线框:

mesh["Wireframe"]

在此处输入图像描述

计算元素连通性:

mesh["ElementConnectivity"]
{{{0, 2, 6}, {0, 3, 1}, {0, 4, 2}, {0, 5, 3}, {0, 6, 4}, {0, 1, 5}}}

获取边界上的点:

mesh["PointElements"]
{PointElement[{{2}, {3}, {4}, {5}, {6}, {7}}]}

布尔运算以及许多其他东西都是可用的。例如,您可以使用标记标记元素,例如将不同的材料或边界组合在一起。

如果您想在更低级别上使用网格,则可以通过 TriangleLink 和TetGen连接到网格生成器Triangle通过TetGenLink

如果您想仔细检查您的实现,您可以使用有限元编程功能。