每当我参加数值分析课程的教学时,都会回顾有限元方法的基础知识,很自然地就会出现使用哪种软件的问题。 以下讨论基于三个基本考虑:
- 在实际应用中,很少有人从头开始编写 FEM 代码。
- 商业 FEM 软件通常在某些预定义的情况下非常易于使用,但可能难以自定义,并且很难与外部工具集成。
- 开源 FEM 软件已达到很高的成熟度,但它通常比商业软件更难使用。
我在这篇文章中更详细地讨论了这种权衡。 请注意,虽然开源为最终用户提供了巨大的长期价值,但要使高质量的开源科学软件项目在学术用途之外广泛可行还存在挑战。
推荐:用 NSDT设计器 快速搭建可编程3D场景。
1、Elmer
'Elmer](https://www.csc.fi/web/elmer) 是一款 GPL 许可的基于有限元法的多物理场求解器。 它包括流体动力学、结构力学、电磁学、传热学、声学等模块。
该项目包括一个图形用户界面(ElmerGUI),能够导入各种文件格式的网格、设置 PDE 系统以及导出模型数据和结果。 后处理是通过 Paraview 完成的。
2、FeniCS
FeniCS 项目以有限元法 (FEM) 的偏微分方程 (PDE) 数值求解为中心。 因此,它涵盖了从热机械到电磁学的众多应用。
虽然网格划分是在 Gmesh 等第三方库中执行的,但 FeniCS 提供高级 Python 和 C++ 接口,使问题的定义和解决方案变得简单。 模型可以在工作站或笔记本电脑中进行原型设计,然后轻松在集群中运行。
FeniCSx 可以在这里下载。 Python 和 C++ 接口称为 DOLFINx,可以在此处找到其文档。
3、FreeFEM
FreeFEM 是一个通过有限元法进行多物理场模拟的库。 它包括预构建的物理模块,如纳维-斯托克斯、线性和非线性弹性、热力学、静磁学和静电学以及流体-结构相互作用。
它还包括自己的脚本语言来实现新的物理模块。 它包含自己的网格生成例程,并且还与 Gmsh 和 Paraview 等其他开源工具兼容。
4、Code-Aster
Code-Aster 项目及其相关的 Salome-Meca 软件套件由法国电力研发中心与大学和工业界合作开发。 它专注于固体力学,包括线性和非线性材料的热和机械行为,并支持静态和动态分析。 应用领域包括疲劳、损伤、断裂和接触力学。 它还包含用于岩土材料、多孔介质和多物理场耦合的模块,
EDF 在运营中使用该项目来证明核领域使用的众多组件和材料的使用寿命。 因此,它可以应用于分析机器、压力容器和土木工程结构。
该代码是 GPL 许可的,并且包含一个 GUI。
5、OpenFOAM
OpenFOAM 是一个以计算流体动力学 (CFD) 为中心的 GPL 许可项目。 CFD 涉及多个数值方法系列,包括但不限于有限元方法。
CFD 涵盖一系列科学和工程应用。 特别是,它用于涉及热、热力学、化学和固体的许多应用,例如发动机、热交换器、电子冷却、燃烧等。
该软件包含自己的模块,用于生成简单或复杂几何形状的网格。 后处理是通过基于 ParaView 的 GUI 完成的。 另一方面,定义问题和几何图形是通过脚本完成的。