这两天发了几篇撸代码的文章,后台有不少道友留言问用CFD是否需要撸那么底层的代码。关于CFD应用是否需要撸代码的话题,我记得以前在公众号中有聊过,个人觉得如果只是单纯的应用CFD软件解决工程问题的话,是完全没有必要去撸那些底层代码的。
那些最基础的CFD代码,实际上是为明年的计算流体力学课程准备的。每年秋季我都要给研究生上计算流体力学课程,在课程的后半段通常都会演示一些CFD工程应用方面的主题,毕竟课程是给工科专业开设的。然而总是发现课程的前半段与后半段脱节,因为前半段讲的是CFD的理论,讲各种控制方程简化和离散算法推导,也会涉及代数方程的求解处理,但这些全都是停留在理论公式上,没有机会进行实际编程操作。而到后半段直接上商业软件进行实践,从理论到软件之间隔了很大的一段距离。我也想过使用开源代码作为编程实践环节,后来发现不现实。开源代码做了太多的封装,通常很难看到底层细节,用于课堂教学并不合适。因此我想着收集一些CFD课程中涉及到的基础算法,用编程语言从最底层将其撸出来,这样在学习的过程中能够加深对算法的理解。
撸底层代码有用么?对于工程应用来说,实际上是没有多大用处的。我只是想借助这些程序代码帮助理解算法的运行过程而已。事实上在CFD工程应用过程中,最好还是使用商业软件。商软在发布之前通常都经过了严格的测试,一般情况下是比较稳定和可靠的。工程应用过程中,我们应当更加关注的是物理问题本身,而不是软件工具背后的运作原理,虽然知晓这些原理对我们使用软件有一定的帮助,但这种帮助实际上是极其有限的,这道理就好比汽车设计师未必就是一定是个好司机一样。
那开源软件要学吗?这个就要分场合了。我个人不建议在工程应用过程中使用开源软件,这方面的原因很多,比如软件的可靠性、稳定性、学习成本等。不过如果是科研的话,强烈建议使用开源软件。开源软件给我们提供了一个试验自己模型的平台,能够极大地节省时间。比如说开发了一个新的求解算法,我们可以利用开源软件如OpenFOAM将自己的算法植入进去,能够快速的验证自己的算法是否靠谱,这能够省去搭建测试环境所需要的时间。CFD算法测试环境搭建还挺麻烦的,前后处理需要相当专业的工作以及大量的代码量。
另外还有一个学习开源软件的原因。最近套壳软件招人有点凶,工资待遇让人直流口水,如果有兴趣赶一波风口,学习一些开源软件还是很有必要的。套壳,拿钱,事了拂衣去!
当然如果空余时间比较多而自己又有兴趣的话,还是建议都了解一下,毕竟技多不压身,万一用得到呢。
(完)