吾生有涯 学海无涯
析模有界 知识无界

随便扯扯开源软件

注:这篇文章其实很早就写了,然而一直都不敢发,估计会被喷死。

最近经常有留言问什么时候更新OpenFOAM的内容,这里来聊聊关于开源软件的那点儿事儿。

在这之前,先来简单描述一下个人在计算机方面的使用情况。从大学本科的时候就开始学习C和C++,虽不是科班出身,但自认学得不算太坏,本科毕业后去某软件公司耍了两年,利用VC开发应用程序。然后研究生阶段因为科研需要,用了几年的python,谈不上多精通,但一般的应用还是不存在太大的问题。这几年基本上没怎么用C系语言,偶尔会用c#做一点点二次开发的工作,主要还是python用的比较多。说那么多,只是想说明,我自认应该不是一个对计算机程序设计一无所知。再来说开源软件,个人接触的开源软件并不多,这几年接触到的开源求解器主要是OpenFOAM与liggghts,不过liggghts仅限于了解,没有深入研究。博士期间用了几年OpenFOAM,对其还算有一定的了解。

下面以OpenFOAM为例来谈谈个人对开源CFD软件的一些看法。

1 OpenFOAM的适合人群

OpenFOAM可以说是开源CFD领域影响力最大的通用应用程序,在科研机构及工业界得到了广泛的应用。当然这得益于代码开源、基础模型丰富、易于扩展使用等众多因素,然而在选用之前,还是有一些问题必须要搞清楚。

与其说OpenFOAM是一款开源软件,倒不如说它是一个类库,利用OpenFOAM可以实现很多商用CFD软件做不到的功能,比如说定制求解器算法。可以将OpenFOAM看做是一堆功能模块集合,可以利用其组装成满足自己所需的CFD软件。

个人认为,以下人群非常适合使用OpenFOAM。

  • CFD算法开发人员。这类人群的关注点在于CFD求解算法开发,它们可以将OpenFOAM当做一个算法测试平台。要知道,如果没有合适的平台,想要测试自己的CFD算法代码模块,那还得开发前后处理模块,这些模块需要花费的工具一点儿也不比开发求解器模块少。而利用OpenFOAM,就可以省去了前后处理的麻烦,可以将注意力集中在求解器开发上,这是个非常好的平台。

  • CFD软件定制。这实际上是个很好的产业,现在在一些QQ群中老是听到有人在呼吁开发国产CFD软件,我想如果从OpenFOAM入手,这是个很不错的主意,毕竟代码完全开放,容易控制。哪怕先拿一些开源软件做一些集成,想必也是不错的。如果再添加一些行业定制,估计市场也不会小。想不明白为什么没有人去做。也许在那些搞算法开发的人眼里,看不起前后处理那些东西吧。然而想要占据市场,前后处理有时候要比求解器重要得多。

  • CFD理论研究。可能在高校和科研机构比较多,仅仅用于研究,这类人群与算法开发比较类似,但是侧重点是CFD计算理论。

OpenFOAM中预制了不少的标准求解器,足以应付一般的工程问题。然而个人并不建议使用OpenFOAM用于产品研发,除非你对OpenFOAM的了解非常透彻,理由很多,往下看。

2 关于Free的理解

开源软件通常都可以从网络上获取其全部源代码,于是很多人认为开源软件是免费的,然而事实上并非如此。

商业软件为什么卖的那么贵还有人买,原因何在?其具有开源软件所不具有的东西,包括:

  • 友善的人机接口。以前在openfoam的一个论坛上看到了这种说法“编辑文本要比操作菜单效率更高,所以没有必要开发gui”,也许说这话的人是个学院派,但我想工程界的人绝对不会同意这种观点的。若干年前帮某企业封装过有限元计算软件,当时那帮人恨不得做到一键出计算报告,你想让那帮搞工程的人去编辑一堆文本文件,然后再输入一堆命令运行,然后计算结果还得自己去显示出来?他们不可能花那么多时间去学习的。

  • 完善的软件文档。开源软件的文档一般都不怎么完善,你不要指望工程应用人员去读程序代码。当然前面提到的三种人群是必须要读代码的,因此也不需要什么文档。在工程应用中,没有文档的软件就好比没有地基的房子,使用者用起来胆颤心惊。OpenFOAM的文档并不完善,用户文档还勉强,编程文档就有点儿稀里糊涂了。

  • 培训或教程。打开OpenFOAM的官网,到处充斥这培训的广告,似乎开发者就是以培训来维持生计的,我觉得这并不是一个良性循环。免费的OpenFOAM很少,能找到的也是吹牛型的培训。对于工程应用来说,这一点尤为致命。而商用软件有完善的培训和教程,工程人员学习成本低了很多。

  • 可靠性。一般来说商用软件在发布之前都会经过严格测试,Bug相对较少。开源软件如果是自己开发的求解器,我想绝大多数都没有经过严格测试的,呃,软件测试很花时间和精力的,不是随便代两个数进去看看结果对不对就叫测试的。

因此,Free并不是免费,想要真正将OpenFOAM用于工程,还是要花不少的时间成本的,然而对于工程来说,时间常常是最为珍贵的。

我想开源软件的Free,应该指的是自由,程序代码自由获取、自由修改并且自由发布,但如果想要将其真正用到工程中,所花的成本不会比商用软件少到哪里去。

END


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

赞(1) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《随便扯扯开源软件》
文章链接:https://www.topcfd.cn/6876/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册