提前进入休假模式。下面简单介绍关于有限元编程的一点知识。对于无论是学习cae,还是从事有限元工程分析,难免需要接触编程和代码开发。这在我们这一行非常有用。
之前有写简单的代码来实现有限元分析。我们知道,CAE分析说白了是解微分方程。所以对于一个微分方程我们需要经过一系列的算法处理最后化成我们比较熟悉的KM=F形式。K是我们的总装矩阵。它是通过求解单元矩阵并按照一定规则和算法组装在一起得到的。这个组装的方法很多书上都做了代码的解释,也很好编写,大家可以去查阅看看。
这里我想说的是组装之前的那一步。就是如何将模型离散化过得单元矩阵,并对这些离散的单元和节点进行编号,以供后续组装矩阵使用。
如果模型规则,我们可以划分规则的单元网格,按照我们想要的结果对单元和节点编号。
对于任意模型,这个就不好办了。即使是二维圆型壳结构,由于弧形边界存在也不好划分网格编号。之前我采用的是德劳内三角划分这个方法进行处理,对应的算法和原理网上有介绍(可以具体了解 三角剖分算法(delaunay)),通过德劳内三角划分得到网格模型,之后利用等参数单元计算获得单元矩阵在进行总体矩阵的组装。
如果是其他更复杂的,形状任意,不规则结构,我没有去具体研究过网格划分的算法。不过我这里推荐一种比较好的方法处理,就是充分利用商业软件的网格划分功能。
如果我们研究的问题商业软件没有成熟的模型,需要自己写代码。我们可以利用商业软件进行网格划分,然后将划分得到的单元节点导出备用。这样单元和对应的节点信息有了,我们根据自己的分析问题和模型去编写程序,调用单元矩阵,完成总装矩阵的装配,这样处理起来显得更加高效。
上面的方法比较取巧,但是实用。对于研究比较深入的同事,可以采用更好的处理方式。
自己写程序分析解决问题,需要掌握和克服的问题更多,理论知识也要求更高,这里能力有限,难做深入分析。大家可以更多交流。
祝好~