最近推了一批关于OpenFOAM的文章,没什么人看,这在我的预料之中。
OpenFOAM是开源的软件,然而代码量够多,想要完全理解所有的代码似乎难度有点儿,尤其是对于那些对C 并非十分精通的非CS专业人士来说。当然如果我们只是应用的话,似乎也没有多大必要完全去理解所有的源代码,我们只需要吃透自己所使用的那个求解器相关的源代码就够了。
仅仅将OpenFOAM作为CFD工具应用于工程的话,其门槛要远高于商用CFD软件。各商业软件为了抢占市场,对软件的易用性及软件的稳健性重视到了令人发指的地步,有些软件为了稳健性甚至不惜牺牲求解器的计算精度,活生生的将一些高精度算法给隐藏掉或直接略过。OpenFOAM与商业软件不同,其不需要讨好任何使用者,因此使用者可以在其内部植入最新的求解算法。当然凡事有利也有弊,对软件的操控不加约束的话,也会导致软件代码不受控制,就像现在OpenFOAM中存在一百多种边界条件类型一样,给后来的应用者造成了极大的困扰。
那么OpenFOAM到底有没有必要去学习?怎么去学习?
我总是不反对利用空余时间去学点儿新的东西,不管这东西对自己有用还是没有用。当然如果时间紧张急着仿真出结果的话,还是省省好了,商业软件是最佳选择。
当打定主意准备啃下这个硬骨头的时候,我们应该从哪里入手?我觉得这个应当按照每个人自身学习习惯来定。有的人适合从内往外厚积薄发,有些人则适合从外往内逐层深入。以我自身为例,我是典型的从外往内型,对于软件的学习,我习惯先让软件用起来,然后在使用中逐渐去发现问题解决问题。下面是我个人的学习路线。
第一步:撸操作流程。首先熟悉OpenFOAM的应用流程,将所有的随机案例运行一遍,分析每个案例的输入文件组织形式。这里顺便吐槽一下,OpenFOAM随机tutorials做得是真心不好,看着像是文档作者为了秀个人操作一样,容易伤害到新手。我最近正在整理这个案例库,有时候整理得想放弃。操作流程想要耍熟,大概需要一两个月的时间,当然这需要看个人花费的时间和精力。多练多总结多思考。
第二步:撸工具程序。OpenFOAM提供了一大堆帮助提高应用效率的工具,在我们熟悉了OpenFOAM输入文件准备工作后,可以尝试着应用这些工具。如果想要在工程中应用OpenFOAM的话,熟练操作这些工具是不可或缺的。这一步大概需要个把月的时间。
第三步:撸求解器源码。这步难度很大,而且见效奇慢。OpenFOAM的源代码是各种各样的类交织在一起的,想要读懂不太容易,此时应该静下心慢慢啃。当然如果只是应用OpenFOAM的话,这一步其实可以省掉。但是如果想要提高自身的CFD理论水平,啃代码是最直接有效的方式,这其实比看书有效得多。这一步的时间大概很长,就不做估计了,以年为单位吧。
当然,如果工作中纯粹以商业软件作为主打CFD仿真工具的话,不妨也学一学OpenFOAM,开阔一下思路也是不错的。
---------------------------------------------------------------------------------------------
版权声明:
原创文章,来源CFD之道,本文已经授权,欢迎分享,如需转载请联系作者。