想象一下,我们有一个简单的 2D FEM 求解器(我们正在处理固体力学),我们想将它开发为一个 3D FEM 求解器(假设针对相同的固体力学问题)在这种情况下,不可避免的变化/修改是什么在代码中制作?
我知道有些人可能会回答“这取决于问题的类型,并且因情况而异”,但我很想知道是否有任何通用标准程序用于这种转换,无论类型如何都应该考虑的问题?
我当然是在谈论代码中应该实施修改的地方。
如果您需要更具体的问题介绍,这里是我愿意开发到 3D 的 2D 代码。要查看代码,请单击此链接
想象一下,我们有一个简单的 2D FEM 求解器(我们正在处理固体力学),我们想将它开发为一个 3D FEM 求解器(假设针对相同的固体力学问题)在这种情况下,不可避免的变化/修改是什么在代码中制作?
我知道有些人可能会回答“这取决于问题的类型,并且因情况而异”,但我很想知道是否有任何通用标准程序用于这种转换,无论类型如何都应该考虑的问题?
我当然是在谈论代码中应该实施修改的地方。
如果您需要更具体的问题介绍,这里是我愿意开发到 3D 的 2D 代码。要查看代码,请单击此链接
这么多地方你必须重写。整个网格处理(从单元访问面和边缘,从单元访问邻居,...)。形状函数。处理从一个单元格看到的人脸的法线向量如何与相邻单元格上的法向量匹配的问题。您还可能会遇到 3d 问题总是更大,求解器、预处理器、数据结构、并行化方案都受到更多压力,可能需要优化以提高效率。你必须开发的所有东西也必须调试,而在 3d 中调试更复杂,因为在一张纸上绘制小图片在 3d 中要麻烦得多。实现这一点需要做很多工作,而不仅仅是进行2d 模拟。
这就是为什么你不应该自己做。依靠那里的大型有限元软件包之一。他们不仅已经为您实现了 3d 网格和有限元,而且还为您实现了未来可能需要的几乎所有其他东西。将您的 2D 体验用作学习机会,然后继续使用其他人在数十年的工作中已经建立的东西。