求解器是仿真软件的核心,求解器的性能直接决定了软件的水平。
笔者多年从事CAD/CAE/CFD/EDA软件的开发,接触到了较多的开源求解器,根据笔者的经验,将开源求解器分为三类:
第一类是在精度,性能方面或者实用性上靠近商业求解器,可用于实用开发的
1. Code Aster
http://www.code-aster.org/
2. Calculix
http://www.calculix.de/
3. Elmer
http://www.csc.fi/english/pages/elmer/sources
4. OpenFOAM
http://www.openfoam.com/
第二类是逊于第一类,能解决某个领域的问题,有实用价值的
1. MaxFEM
2. Z88
3. Impact
4. Meep
第三类是适合于科研教学的(数不胜数)
1. OpenFEM
2. OOFEM
3. Dune
4. Matlab FEM toolbox
5. polyde-fem
6. 飞箭
...
个人认为开源求解器主要存在两个弊端:
1. 缺乏通用性,单元类型,边界,材料等支持的类型上,一旦出现特殊的case,就无法支持。最典型的是Calculix的居然不支持几何边上加荷载,虽然从实现角度来讲并不困难。
2. 缺乏实用的前后处理器,这对很多求解器的使用和推广是个很大的限制。后处理还好说一点,前处理器涉及到建几何,导入几何,网格划分,材料,属性设置等,每一项都需要比较专业的处理工具。很多开源求解器在CAD/Mesh等前处理做了很多工作,但仍然有很多局限性。
-------------------------------
商业软件和开源软件一个根源性的区别在于生态链的隔离!
商业软件自底向上是一套独立的系统,从几何内核,网格,优化,求解线性方程组库以及很多基础模块也都是商业库(有点像波音组装飞机,波音公司的零件来自于全球精选的供货商)无论从稳定性,功能性,可靠性都是开源软件无法比拟的。开源软件只适合学术性研究以及小型工具软件的研发,一旦复杂度和规模上来之后,开源软件无能为力。
目前国内大部分仿真软件的研发都基于开源工具,先天性不足,但商业库都不便宜。所以积累技术,拓展国外市场,逐步融入商业软件生态链也是发展国内工业仿真软件一个可行的方法。而只有真正做出质量好,解决实际工程问题的产品,才能让国内的工业软件发展走上良性循环的道路。
声明:原创文章,欢迎留言与我讨论,如需转载留言