CFD技术发展到今天,已经超过了大半个世纪了,已经涌现出非常多的CFD软件可供人们使用。通用商业CFD软件譬如Fluent、CFX、Star CCM+等在工业上得到了广泛的应用,另外一些专用的软件(如旋转机械领域Numeca、电子散热领域的Flotherm等)也以其专业性牢牢占据着各自领域的市场。这些软件都具有良好的前后处理、众多的物理模型、较高的并行求解效率及可靠性。
但是细数起来,这些软件仍然具有一些劣势,可以简单的归纳为:
- 价格很贵。这些商用软件,价格一个比一个贵,少则好几万,高则几十万上百万。对于工业巨头来说没有经济压力,但是对于中小型企业、个人用户来说,无疑是一笔巨大的经济开销。
- 黑箱操作。商用软件的内部运作原理是不会对用户公开的。一些数学物理模型的处理细节,用户没有任何途径可以了解。虽然说商用软件这么做可以在一定程度上使软件的操作更简单,减少软件使用者的学习时间,但是对细节的掩盖也会造成一些问题调试上的麻烦。
- 功能扩展麻烦。仍然是由于程序代码的封闭造成的后果。用户想要扩展现有商用软件的功能是一件非常麻烦的事情。当前商用软件的所谓二次开发,实际上能够扩展的功能非常有限,一般只能扩展一些外壳,对于核心算法基本上没法更改。
有人说,可以采用自己编程来进行CFD计算。这当然可以,自己编程的最大好处是可以对程序的所有细节进行控制,大到计算流程、GUI界面,小到离散算法、网格布置等都可以自己设置。但是不知道动不动就说自己编程的人有多少是真正自己动手编程求解过CFD问题的,如果真的动手编过CFD程序的人,自然会知道从零开始进行CFD程序的开发,是一件多么需要时间和经历的事情(有不信邪的童鞋可以自己动手尝试,不需要尝试很复杂的程序,就动手编一个方腔顶盖流计算的程序就好,在很多的参考书中都有该程序的源代码,可以动手抄一遍试试)。
OpenFoam其实就是一种解决这种手动编程麻烦的程序包。其主要具有一些优点:
- 代码开源。什么叫“开源”?开源的意思就是所有的代码都是可以打开看的。还不明白么?换句话说,你可以修改代码中的任何地方,也可以将代码用到其他的地方。OpenFoam对于手工编写CFD代码的人来说,其提供了一个非常好的平台。基础代码实际上已经为我们搭建了一个框架,我们要做的只是针对自己特定的问题在已有框架的基础上做小幅的修改或增加。
- 定制求解器。OpenFoam提供了一些标准的求解器,完全满足常用的CFD计算。至于提供了哪些标准求解器,我们后面再慢慢的掰。由于代码是开源的,因此我们也可以开发自己的求解器,这是商用软件所无法提供的功能。
当然,OpenFoam也有一些麻烦的地方: - 没有成熟的GUI前处理器。这个其实不能称之为缺点,虽然说没有前处理GUI会给初学者带来一些麻烦,但是使用惯了其实也没什么,无非就是那么几个文本文件,修改起来也挺快。当然目前也有一些商用的或开源的OpenFoam前处理器,商用的前处理器功能比较强大,使用起来和商用的CFD软件并没有多大的区别,开源的前处理器界面比较朴素。当然,如果熟悉了OpenFoam的使用,完全可以自己开发一个前处理器,难度并不大。
- 学习曲线比较陡峭。对于初学者来说,OpenFoam的学习曲线要比商用CFD软件陡峭得多,需要花费更多的时间和经历。就算是利用标准求解器来解决工程问题,由于没有前处理GUI,因此需要使用者熟悉OpenFoam中一些常用的关键字,不过其实也并不难,OpenFoam计算文件中所涉及的关键字命名还是比较有规律。
本系列以OpenFoam的学习过程为主线,讲述如何从完全不了解OpenFoam到开发自己的求解器求解工程问题的完全学习路径。