为复杂的 3D 对象创建网格以进行有限元分析

计算科学 有限元 matlab 网格生成
2021-12-22 19:30:22

我在对它们进行了有限元分析的论文中看到了钢连接、混凝土水坝和其他复杂 3D 对象的图像。我的问题是:

  1. 这些对象是如何在 MATLAB 中创建的?我们应该自己给所有分数吗?

  2. 我们如何为他们创建网格以执行有限元分析?这可能是一个有很多答案的一般问题,但如果可能的话,请给出一些要点或参考。

  3. 这些对象是在软件中绘制的,然后将它们的坐标导出到 MATLAB 中吗?如果是这样,那么这些软件是什么?

3个回答

根据您的网格划分需求的复杂程度,您可能会发现以下 Matlab 程序很有用:Distmesh该程序可以在 Matlab 本身中生成简单的形状和几何图形。

如果您需要对实际零件进行建模,并且您自己没有 FEM 代码可以使用,那么 Matlab 提供了一个 PDE 工具箱,可用于解决各种 FEM 问题。通过查看他们的文档,导入模型的最简单方法是使用 .stl 文件链接正如@knl 在评论中提到的,有许多 CAD 程序可用于构建模型并将它们导出为 stl 文件

关于 .stl 用于 3D 建模的快速说明:

正如此处的文档(底部的限制)中所述,对于 3D 模型,MATLAB 无法识别 3D STL 文件中的多域。如果两个对象共享公共点,则每个对象都存储在单独的单元格中,实质上使对象在分析上断开连接,两者之间没有共享的网格/公共接口。

这可以使用 geometryFromMesh 函数(MATLAB R2018a 及更高版本)并手动为网格中的每个元素分配区域 ID 来克服。实现这一目标的实用性没有明确记录,并导致我自己回答的问题here

  1. 给出单个点当然是在 MATLAB 中创建网格的一种方法。您可以将 delaunay 三角剖分函数与点和边界列表一起使用来获取网格,但这可能很乏味且效率不高。我已经将它用于简单的网格(例如立方体、棱镜、非常规则的 3d 形状)

  2. 有许多方法可以表示 FEM 网格的几何形状,选择一种方法(例如 Discontinuous-Galerkin)并了解信息的存储方式。通常,您需要表示每个元素并在它们之间建立某种连接。

  3. CAD 从 ~ 几乎 ~ 现在任何包都可以导出 MATLAB 可以读取的 .stl 格式,并且通过使用 PDE 工具箱,可以解决 PDE。