工业有限元求解器是工业仿真中最重要,最核心的,目前市场上有较多的开源求解器,下面列举几个比较有名的开源求解器,仅供各位对国产CAE感兴趣的朋友参考、借鉴,学习CAE软件开发的框架,思路等。
1. OpenFOAM (http://www.openfoam.com/)
OpenFOAM是一个完全由C++编写,在linux下运行,面向对象的计算流体力学(CFD)类库。OpenFOAM跟商用的CFD软件Ansys Fluent,CFX类似,但其为开源的,采用类似于我们日常习惯的方法在软件中描述偏微分方程的有限体积离散化。2004年开始OpenFOAM一直作为免费使用的开源软件,有OpenFOAM和OpenFOAM-Extened两个版本
OpenFOAM(Open Field Operation and Manipulation)是一款可以模拟任何复杂流体,如化学反应流、湍流、热传导、流固耦合、电磁场和金融的计算流体工具。OpenFOAM是OpenCFDLtd公司开发的开放源代码的软件。符合GNU General Public Licence.
OpenFOAM 的和核心技术是灵活,高效的C++模块。可以用来开发大量的:
“Solver” -- 用以模拟各种工程中的力学问题;
“utilities”-- 在前后处理中的实现各种功能,从简单的数据操作,到可视化,网格操作;
“libraries”-- 用以设计各类操作solver/utilities的工具,如物理模型的库。
OpenFOAM用有限体积法求解各种偏微分方程系统,使用3D非结构化多面体网格。尽管其它技术被用于各种连续介质力学求解器,OpenFOAM流体求解器是基于鲁棒性、隐式、压力-速度,迭代求解的框架结构。区域分解并行是OpenFOAM设计的基础,已植入底层,所以在设计求解器时无需做“专门并行”处理的代码开发。
主要有以下特点:
支持多面体网格(比如CD-adapco公司推出的CCM+生成的多面体网格)
支持大型并行计算
icoFoam:用于求解层流下的单相牛顿流体流动。
simpleFoam:求解单相牛顿以及非牛顿湍流流动。
interFoam:牛顿和非牛顿流体的VOF模型求解。
2. Code Saturne (http://research.edf.com/)
Code Saturne是法国EDF集团研发中心开发一款通用的开源计算流体力学软件,该软件适合于流体的湍流以及传质传热等相关模拟,该软件包含了热辐射,燃烧(燃气、煤、燃油灯的燃烧),磁流体力学,两相流(流体-流体两相流,流体-颗粒流)以及大气层流动等专业模块。
软件涵盖多种工业应用物理模块:大气模拟、煤粉、重质燃料及生物质的燃烧模块、电弧与焦耳效应模块、颗粒追踪模块、流体机械转子-定子互动模块等。为适应工业界复杂的物理问题,该软件具备灵活的二次开发接口。其强大的并行计算能力,适用于超性能计算平台处理大规模计算问题。该软件在工业领域得到广泛的应用与认可。
主要模拟能力:
层流、湍流、大涡模拟
任意拉格朗日-欧拉耦合(ALE)
电弧模拟
拉格朗日粒子追踪
大气流动模拟
地下水流动模拟
火焰建模
煤,重油,天然气的燃烧
核热工水力建模
涡轮机内流动建模
3. Code Aster (http://research.edf.com/)
结构开源软件里做个排名的话,第一当属Code_ASTER。ASTER代表结构与热动力学研究分析,由EDF法国电力公司在很久之前开始开发和维护。
CodeAster是为数不多应用在实际工程中的开源工具。提供3D热分析,线性、非线性静力,动力,疲劳,断裂,多物理场分析,应用于机械,压力容器,土木等岩土领域。同时提供了多达2000多的应用案例,其计算结果做过Benchmark,计算功能上没的说,毫不夸张地讲,Code_ASTER是唯一一个能和Abaqus,ANSYS商业软件对标的开源结构求解器。
缺点有,首先大部分代码FORTRAN/PYTHON编写,其次文档注释相当部分是法语,然后前后处理器功能不够,相比真正傻瓜式的商业软件,还是有一定差距。
CodeAster的源码接近200万行,即使把代码通读一遍也需要以年为单位来算,从软件工程的角度看,这也是为什么很少有用Code_ASTER做求解器的商业开发,因为代码的维护成本已经远远高于开发成本。基础和框架性的设计无法改变,如果要加新的功能和做结构性改动,代价会非常高。
从侧面也说明架构师在做软件架构设计的时候一定要有前瞻性和对整体的布局。尤其对于需要长年开发维护的工业仿真软件,3-5年做一次大的重构几乎是不可避免的。
4. Palabos (http://www.lbmethod.org/)
Palobos是一个基于LBM(格子Boltzmann方法)开源软件,也是为数不多的基于LBM方法的计算流体软件(同类商业软件仅有Powerflow一款,且售价极为昂贵),由来自不同国家的多位学者合作开发完成,主要用于流体模拟。Palobos集成了多个LBM模型。它采用c++编写,可实现MPI并行,并采用了多种优化措施。它能将计算结果输出为VTK形式,并采用诸如paraview等开源的后出了软件进行数据分析处理。
5. Salome (http://www.salome-platform.org/)
Salome是一个为数值计算提供预处理和后处理的开放源代码的通用平台,该平台集成了Opencascade内核,同时有三角形,四边形,四面体,六面体等网格接口,还提供了商业MeshGem接口,可以处理相当规模的实际工程问题。由众多可再用组件构成,这些组件适用于多种硬件架构。Salome是一种前后处理的交叉平台解决方案,同样基于GNUGPL协议。
Salome既可以当作独立的应用软件包,用于数值计算的CAD建模以及网格划分等前处理工具,以及结果分析的后处理工具。同时Salome也可以用作集成平台,加入第三方数值模拟程序,构建完整的CAE系统。此外SALOME生成模型后可以直接调用CODE ASTER等求解器。
基本介绍:
1.支持CAD建模和计算软件(CAD-CAE链接)之间的互操作性
2.便于将新组件集成到异构系统中进行数值计算
3.优先考虑计算软件之间的多物理耦合
4.提供通用的、用户友好的、高效的用户界面
5.在此平台上,将培训时间缩短到学习软件解决方案的特定时间
6.通过集成Python控制台提供对所有功能的访问
7.创建,修改,导入和导出(IGES,STEP,BREP),修复和清洁CAD模型
8.为CAD模型生成网格;编辑网格;检查网格质量;导入和导出网格数据(MED,UNV,DAT,STL)
9.处理与几何有关的属性
10.使用一个或多个外部求解器(耦合)执行计算
11.显示计算结果(标量、矢量数据)
最主要的是SALOME是开源软件,也就是能看见代码,可以学习了解工业仿真软件前处理的思路和设计。此外,Linux平台上的CAE大集成工具CAELinux中也包含了SALOME。CAELinux包含了很多开源的CAE工具,也是不错的参考学习资料。