【小白的CFD之旅】17 需要编程?

时间:2022-08-30 23:59:38

小白经过大半个多月对于CFD的学习,终于对其大概轮廓有了初步的了解,尤其是在与小牛师兄交流之后。小牛师兄毕竟是专业学流体力学的,小白认为在流体力学理论方面自己与牛师兄至少存在5年的差距。不过小白并不气馁,照黄师姐的话说,”内功需要自己慢慢积累,武侠电影中的那种灌顶大法是不存在的“。小白认为当前自己的主要任务是把软件FLUENT用熟。

小白在网上找了一些学习FLUENT应用的论坛,也加了一些QQ群,不过他更习惯自己去思考去总结。这天小白被一个QQ群里争论的话题引起了兴趣。这话题是关于CFD软件与计算机编程之间的关系,有人说”只有精通了编程才可能成为CFD高手“,也有人说”CFD只是工具,会不会编程都不重要“,也有中间派说”CFD是工具,但是熟悉编程会更有利于使用这一工具“,众说纷纭吵得不亦乐乎。小白自认学CFD时日尚短,插不上话只好搬凳子围观。

中午在食堂吃饭的时候,小白碰到了小牛师兄,几天没见也不知道小牛师兄最近在忙些啥。
“牛师兄,这么巧啊”,小白端着饭碗坐到了牛师兄的对面。
“恩,最近在忙些啥呢?”牛师兄问道。
“还不是在学CFD软件,照着实例依猫画虎呢,进展很慢啊”小白很无奈的说。
“不用急,软件这东西很容易学的,多练几次就有感觉了。”牛师兄安慰道。
“嗯,牛师兄,你说我需要学编程么?今天在网上看有人说要学CFD必须精通编程,也不知道是不是真的。”小白将群里的争论说给牛师兄听。
“你以前学过编程没有?”牛师兄问小白。
“读本科的时候学过C语言,知道基本的语法编过小的练习程序,没有真正用过。”小白据实回答。
“那还行。”小牛师兄说。

接下来小牛师兄在饭桌上说起他对于软件和编程之间关系的认识。

目录

1关于编程

人们谈起编程,总是认为这是一个高大上的职业。为什么会觉得高大上呢?无外乎这几个原因:

  • 编程人员(亦称程序猿)拿的薪水很高。如果做的不是高大上的事情,凭什么拿这么高的薪水?
  • 编程行当门槛比较高,一般人难以进入。
  • 计算机程序能够做很多人脑难以完成的工作,编程者自然就能做很多普通人难以完成的工作

说了那么多,这跟CFD有什么关系呢?
CFD离不开计算机,也离不开计算机程序。但是问题在于“使用别人的程序就真的很low么?

我老家在南方农村,小时候过年的时候家家户户要做年糕,就是那种用糯米蒸熟的饼饼。这玩意儿吃起来好吃,做起来却特别的费劲,这些年基本上都没什么人做了。去年寒假回家的时候突然发现市面上居然有卖,打听之下才发现已经有了做饼饼的机器了,当时还特别去参观了一下,制作流程特别的简单,将米放进料斗,饼饼分分钟就从下料口出来了,特意买了些回去品尝,虽然有人说口感没有手工制作的好,但我却没感觉出来。实际上诸如此类的例子生活中比比皆是,比如说做饭,以前农村用柴火煮饭,费时费力还一不留神把饭烧焦,现在用电饭锅做饭,省时省力味道也不差。

之所以举这些例子,只是想说明“工具的作用是为了解放我们的双手,工具的特性是在使用工具的过程中不需要考虑工具的原理”,你在用机器做饼饼、用电饭锅烧饭的时候,需要思考饼饼机和电饭锅的工作原理么?

话说回来,程序的作用是帮助人们完成工作,而不需要在使用程序的过程中思考程序是如何编制的。

2 关于CFD的工具论

CFD是工具么?不同人群对这一说法可能存在不同的见解。有的人眼中CFD是一套理论,一套关于如何数值求解流体流动控制方程的理论,这些人分布在计算机和数学专业,他们关注算法的实现和效率。而在工程师的眼中,CFD那就是一工具,他们关注的是工程问题,最多就是把工程问题抽象成控制方程,至于这方程如何求解则不必过多的考虑,因为有现成的工具可以做这一工作。

  • 应当给予工具足够的信任。要使用工具而又不信任工具是一件很痛苦的事情。

  • 分清到底是人的问题还是工具的问题。很多人事情没做好往往不从自己身上找原因,利用CFD软件也一样,算出来的结果不好通常都认为是软件功能的缺陷,你要是问他有什么证据他又说不出来。在很多时候,计算结果不好往往是我们没有将工具使用好,而不是工具本身的问题。

3 CFD编程到底有用没?

肯定是有用的。毋庸置疑任何技能都是有用的。其实问题不在于编程有没有用,而在于学习编程的时间成本对于CFD技能的提升是否划算?对于将CFD当做工具的人群来说,其实只需要掌握少量的编程知识即可完成绝大多数工作了。编程在此体现为CFD工具软件的二次开发上,而不是要我们从头到尾的将CFD程序写出来。

这些CFD工具的功能扩展通常采用用户编程来实现,不同的软件采用的程序语言有较大差异。比如说FLUENT利用的C语言,CFX利用的是Fortran,STAR CCM+利用JAVA和Fortran,还有一些软件利用脚本语言,如Python,TCL/TK、Lisp等等。其实在工作中软件功能扩展工作进行得并不是特别多,更多的是做一个功能封装,这可能是利用高级语言写一个GUI再配合软件脚本来实现,其实很简单。

4 利用编程来学习CFD

利用编程来学习CFD?当然是很好的做法,但是可能要消耗大量的时间,恐怕只有学生党才玩得起。企业人员哪里有这功夫玩这个哟。不过也不排除工程上用一些开源CFD求解器,逼迫研发人员去学习这些求解器的内核源代码,这可是个苦逼的工作,时间成本也很高。就好比说士兵为了提高射击精度而花费大量时间研究枪炮原理一样。

5 我需要学习编程么

这取决于几点因素:

  • 关注CFD算法更胜于利用CFD解决工程问题
  • 对编程有强烈的兴趣。没有兴趣的话可能会半途而废
  • 有大量的空余时间。计算机语言的学习需要花费大量的时间

6 学什么语言

如果真要学的话,有几个语言可以推荐:

  • C语言。学习C语言绝对不会吃亏,这玩意儿用途太广泛了(数值计算、操作系统等),长期雄霸TOBIE编程语言排行榜前三
  • Python语言。最近很火的动态语言,好多的CAE软件都转而支持此语言做二次开发了。
  • JAVA语言。这个也可以学一学。

7 总结

  • 先搞清楚自己感兴趣的是CFD的哪个方面再来决定是否要学习编程
  • 学习编程对于CFD来讲是锦上添花,懂一些有好处,但不懂也可以用好CFD
  • 有大把时间的学生党可以学一门编程语言

【小白的CFD之旅】17 需要编程?的更多相关文章

  1. 【小白的CFD之旅】小结及预告

    这是小白系列的索引,后续会继续更新. 已更新的部分 01 引子02 江小白03 老蓝04 任务05 补充基础06 流体力学基础07 CFD常识08 CFD速成之道09 初识FLUENT10 敲门实例1 ...

  2. 【小白的CFD之旅】12 敲门实例【续2】

    接上文[小白的CFD之旅]敲门实例[续] 主要内容 3 Solution3.1 Solution Methods3.2 Solution Controls3.3 Monitors3.4 Report ...

  3. 【小白的CFD之旅】11 敲门实例【续】

    主要内容: 接上文[小白的CFD之旅]10 敲门实例 2.4 Materials设置2.5 Cell Zone Conditions2.6 Boundary Conditons2.7 Dynamic ...

  4. 《小白的CFD之旅》招募写手

    <小白的CFD之旅>系列招募写手. 由于工作繁忙,<小白的CFD之旅>系列更新缓慢,现招募志愿者写手.这是一个分享平台,欢迎各位愿意分享自己CFD学习经历的朋友们. <小 ...

  5. 【小白的CFD之旅】13 敲门实例【续3】

    接上文[小白的CFD之旅]12 敲门实例[续2] 4 Results4.1 计算监测图形4.2 Graphics4.2.1 壁面温度分布4.2.2 创建截面4.2.3 显示截面物理量4.2.4 Pat ...

  6. 【小白的CFD之旅】01 引子

    小白的CFD之旅 写在前面 CFD是计算流体力学的英文简称,是计算机辅助工程(CAE)的主要分支,目前广泛应用与科学研究.工程设计中.这是一门综合了数学.计算机及流体力学的综合学科,涉及到众多的专业理 ...

  7. 【小白的CFD之旅】09 初识FLUENT

    按黄师姐的推荐,小白回头查找起 FLUENT的资料来.通过网络及图书馆查找相关资料,小白对于FLUENT有了基本的认识. FLUENT是一个CFD软件包,目前隶属于ANSYS公司 目前FLUENT的最 ...

  8. 【小白的CFD之旅】26 何为收敛

        小白最近对流体计算的收敛产生了困惑.以前在学习高等数学的时候,小白接触过了级数的收敛,由于当时贪玩,并未将其放在心上,因此大学结束了小白也只是记住有这么一个名词罢了.现如今在利用CFD的过程中 ...

  9. 【小白的CFD之旅】16 流程

    那天听了小牛师兄关于CFD应用的四种境界的说法后,小白发现自己连第一种境界都算不上,自己对于CFD还只是停留在做了少数几个案例的基础上,可以说是对其一无所知.不过小白不是那种遇到挫折就退缩的人,他决定 ...

随机推荐

  1. Excel&mdash&semi;&mdash&semi;使用OFFSET、MATCH、COUNTA实现二级菜单

    如图所示,接下来提供两种办法实现: 1.将A.B.C.D定义为名称NAME. 2.设置一级菜单单元格数据有效性为NAME. 3.设置二级菜单格数据有效为: =OFFSET($A$1,MATCH($A6 ...

  2. GJM &colon; Lua 语言学习笔记

    Lua笔记 容易与C/C++整合 Lua所提供的机制是C所不善于的:高级语言,动态结构,简洁,易于测试和调试. Lua特有的特征: `1:可扩展性.卓越的扩展性导致了很多人将Lua用作搭建领域语言的工 ...

  3. 快速替换dll命名空间

    时15年9月18日,闲来无事,更一博.  背景 三天前,Y公司为避免法律诉讼,需要将代码(包括dll)中有关老东家的命名空间全部改掉.现在我就将快速替换命名空间的方法一步步告诉大家,注意,此举不是为了 ...

  4. UIControl事件

    1.UIControlEventTouchDown 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候. 2.UIControlEventTouchDownRepeat 多点触摸按下事件,点触计 ...

  5. android依赖工程,子工程覆盖父工程的相同属性

    当业务复杂,开始拆分工程后,就会遇到如下问题: 工程A为lib父工程, 工程B为子工程.  两个工程中均有资源文件(比如strings.xml),且资源文件中有相同的key, 那么值到底使用谁的? 实 ...

  6. 从客户端&lpar;MuliteTextBox2&equals;&quot&semi;&lt&semi;a href&equals;&quot&semi;http&colon;&sol;&sol;www&period;&period;&period;&period;&quot&semi;&rpar;中检测到有潜在危险的 Request&period;Form 值

    由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报出“从客户端 中检测到有潜在危险的Request.Form值”这样的错.   解决方案一: ...

  7. linux进程间通信之信号

    1.wait()函数 原型:pid_t  wait(int *status) 子进程退出时,它向父进程发送一个SIGCHLD信号,默认情况是总是忽略SIGCHLD信号,此时进程状态一直保留在内存中,因 ...

  8. Codefoces 723A The New Year&colon; Meeting Friends

    A. The New Year: Meeting Friends time limit per test:1 second memory limit per test:256 megabytes in ...

  9. Neovim中NERDTree等多处cursorline不高亮

    标题表达的不是很清楚,看下图把 解决方法 添加下面内容到init.vim " 针对NERDTree " https://github.com/scrooloose/nerdtree ...

  10. Markdown基础语法笔记

    # 一级标题## 二级标题### 三级标题###### #号之后记得加一个空格 仅支持1-6级标题  ### 列表 - 文本1 - 文本2 - 文本3+ 列表2* 列表2 ### 有序列表1. 有序文 ...