为啥说不编程就不能算是真正在做cfd?( 三 )




■网友
什么叫“做CFD”?我觉得计算数学那一拨人才叫真正意义上的做CFD,他们负责开发算法,“做”CFD。
对于工程人士来说,我们更多的是用CFD。编程不是“做CFD”,而是“用CFD”。你编程技巧再酷炫,你也不会知道那些数学怪物们是在什么空间上构造出那个算法的。
当然,正因为我们是“用CFD”,所以编程非常重要。编程是你深入掌握CFD算法的几乎是唯一途径。但也是掌握,仅此而已。
归根到底,得看你的定位是什么。如果你的定位纯粹是编一套酷炫的没边的solver,那我觉得只要你告诉一个码农CFD的全套算法和各种caveat,人家分分钟编一个吊打你的solver,毕竟这是人家的吃饭本事;如果你的定位是开发算法,你很有可能可以在编程上摩擦计算数学的人,但他们反手就在索伯列夫空间上教你做人。我觉得我们独特的东西就是CFD中的那个FD:用CFD研究流体问题才是我们核心的问题。如何从计算结果中抽取归纳出物理规律或者指导优化工程设计才是我们追求的目标。这是让我们区别于码农和数学怪物的地方。
总而言之,我个人认为,编程一定要学,一定要掌握,这没啥可说的。但不能陷入唯编程论,研究流体问题才是我们追求的根本目标。如果你本身的定位就仅仅是编程,那么为何不直接弃坑投CS和CE呢?如果你是想真正意义上的研究CFD,那还是去计算数学吧。

■网友
我这么想的:用软件可以说你是学空气动力学或者水动力学。。。懂经典流体理论但是不会离散连续方程写代码的话说学计算流体力学好像是不太对。ヾ(@゜?゜@)ノ另外,做机器学习的没必要都会做自己的tensorflow吧。做机械设计的没必要都会做pero,ansys之类的软件吧。pid用了这么多年机械臂还在用。。。去公司的话很少让你改软件,改了软件估计还要做测试,然后改设计手册之类的,等你全搞完黄花菜都凉了。研究所和高校都有项目资金可以慢慢来,公司可耗不起。
■网友
为什么要跟自己的头发过不去?

■网友
学开车,学修车,学造车,还用选?
往小里说,会编程将来可以转行当码农。
往大里说,随着技术发展,车可以自己开,而且还不会坏,开车和修车技能的需求肯定是逐步消失的。
点技能树要靠自我奋斗也要考虑历史的行程。

■网友
cfd是计算流体力学,既然是带“计算”的学科,意思都是通过计算机编程的手段实现学科的研究。
觉得可以只使用软件而不编程的,可以试试用软件去搞搞计算数学,计算物理学,计算材料学。。。看看能不能找到一个可以不编程的带“计算”的学科。

■网友
我上过一门课:Applied computational fluid dynamics单是这个名字,就让我明白了一些跟问题相关的东西。
■网友
“对于工业界应用cfder,有必要通过学习编程来达到专业的cfder吗?”

学习到知道怎么写二次开发、后处理即可。不用学习写底层的solver。真遇到了奇葩问题,现场也能学。

其次,成为专业的cfder不如成为专业的流体力学专家,知道怎么分析和解读、提取流场特征量,为设计师提供改进优化的方向。

■网友
编程是否是CFD的核心技能,个人认为还是取决于定位的点在哪。
如果从流体力学研究的角度做CFD,那编程无疑是打通流体力学、湍流模型、插值解微分方程等底层知识的最佳方法。因为如果对NS方程,插值方法和湍流模型趋近等没有一个系统认识的话,编程是进行不下去的。可以认为编程是一个打通任督二脉的过程。而且代码能力会相当程度决定求解的精度和快慢。很多国内外的Top大学里硕博士们走的都是这条路,然而这条路走深了很容易离开CFD领域偏到更倾向于coding能力的其他领域,最终成为一名真正的coder。
如果从工业界应用的角度看,一般来说编程的能力不是一定要具备,当然如果具备肯定是锦上添花的事情。工程应用更多的情况还是更加注重应用的,大多情况下对CFD工具的准确程度容忍性很高,当然航天那种精度的工程不是我们讨论的范围。这种情况的CFD其实更考验的是Cfder的综合能力,既要对CFD的基本理论有一定了解,避开商软中容易出现的雷,又要对工程问题有深厚的了解从CFD的角度解释和优化工程问题。工程界的cfder需要把CFD当作厨师手里的刀,真正用刀做出好菜,至于刀是夹钢的还是覆土烧刃的,有什么关系呢?!


推荐阅读