最近经常在后台问是否有必要花时间去学 OpenFOAM 。这问题回答起来不太容易,毕竟萝卜白菜各有所爱嘛。个人感受,总结来说:如果不是为了水论文,那么用OpenFOAM纯粹是浪费时间。
-
前后处理效率低。OpenFOAM目前没有一款成熟的前处理工具,其实准确来说后处理工具也没有。有人可能会说Paraview不算吗?个人感觉不算。ParaView虽然说可以拿来当做OpenFOAM的后处理,但并没有针对OpenFOAM进行特别的定制,举个简单例子,当案例计算完毕后,想要统计某个截面的平均物理量时,ParaView并不能像CFD-Post那样可以直接列出所选边界的平均值,而是要先积分,然后再手动求平均。这并非是ParaView的问题,ParaView是一款通用后处理工具,其提供的也是通用的操作方式。而只能说ParaView并未针对OpenFOAM进行特殊的改造而已。再说前处理。目前OpenFOAM案例准备工作依然依赖于文本编写,这种操作方式效率低,且不方便调试。虽然文本式配置适合批量流程化操作,但前期耗费的时间的确会大大增加。 -
计算效率低。OpenFOAM对稳态计算的支持不好,很多明显可以使用稳态进行计算的案例,利用OpenFOAM算起来收敛性很差,需要改造成瞬态计算才能进行下去,这无疑会大幅增加计算成本。其次,OpenFOAM自带的并行算法效率也不高,个中原因就不展开了,不过这可以使用第三方并行库解决,倒算不上什么大问题。 -
湍流收敛慢。以前一直觉得Fluent不咋样,但深入用过其他CFD软件后才发现,Fluent的湍流收敛能力真的是一骑绝尘,别的CFD软件连吸尾气的资格都没有(STAR CCM+这几年在湍流这块提升了不少)。OpenFOAM算例只要涉及到湍流的,收敛性会急剧降低,残差能振荡到天上去。关键是人家STAR CCM+虽然也是各种振荡,但计算结果也还能用,但OpenFOAM大部分情况下不收敛的结果根本没法看。OpenFOAM的湍流调试真的要掉大把的头发,尤其是算稳态的情况下。 -
参数配置麻烦,缺少标准。这个其实和缺乏前处理是挂钩的。OpenFOAM作为开源代码,各种配置参数太多太杂,比如说边界类型,一个进出口边界给你搞出 几十种来,有时候一个简单的参数修改它都能给你搞出一种新的边界类型。个人感觉内核控制这块没有做好,功能过于膨胀并非是好事情。 -
版本混乱。OpenFOAM目前有两个主要的大版本org与com,还有不少的非主流版本。这也是开源代码的通病,随便fork后改动改动就可以搞出个新版本来。另外,OpenFOAM的向后兼容性也极差,想改就改,想怎么改就怎么改,心情好了在release文档中提一下,心情不好提都不提。更恶心的是连最核心的基础类都能随便改,结果就是7.0版本下写的案例到8.0下没法用,等你改完了8.0版本的案例文件到9.0版本下又没法用,真的是离了大谱,我从没见过向后兼容性如此之差的代码。 -
文档残缺。按官方的说法,自己啃代码去。对于一个只想将OpenFOAM当求解器的人来说,啃代码的时间不要钱是吧?
用OpenFOAM当求解器的最终结果就是:你花了半年时间熟悉OpenFOAM,再花半个月时间设置、求解和后处理,结果发现别人只花了三天时间用商业软件把事儿给干了,而且还干得比你漂亮,你上哪儿说理去。那些整天鼓吹OpenFOAM的人,没有一个出来解释那些商业软件的卖点在哪里。相比较这些开源求解器,商业软件除了贵,真的没什么其他缺点了。而开源软件呢,除了不要钱,真的没太多优点。
其实说句扎心的,开发CFD求解器的人也不大看的上OpenFOAM,架构算不上优秀,代码太老,屎山代码太多,改造成本太高。OpenFOAM真正发挥能量的地方是在学术圈,大佬们晚上做梦搞出了个新的算法,可以在OpenFOAM中快速开发验证,然后水几篇论文,收工。
注:以上内容绝对是带有情绪的,最近快被OpenFOAM逼疯了。
”
(完)

本篇文章来源于微信公众号: CFD之道








评论前必须登录!
注册