【小白的CFD之旅】17 需要编程?
小白经过大半个多月对于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 需要编程?的更多相关文章
- 【小白的CFD之旅】小结及预告
这是小白系列的索引,后续会继续更新. 已更新的部分 01 引子02 江小白03 老蓝04 任务05 补充基础06 流体力学基础07 CFD常识08 CFD速成之道09 初识FLUENT10 敲门实例1 ...
- 【小白的CFD之旅】12 敲门实例【续2】
接上文[小白的CFD之旅]敲门实例[续] 主要内容 3 Solution3.1 Solution Methods3.2 Solution Controls3.3 Monitors3.4 Report ...
- 【小白的CFD之旅】11 敲门实例【续】
主要内容: 接上文[小白的CFD之旅]10 敲门实例 2.4 Materials设置2.5 Cell Zone Conditions2.6 Boundary Conditons2.7 Dynamic ...
- 《小白的CFD之旅》招募写手
<小白的CFD之旅>系列招募写手. 由于工作繁忙,<小白的CFD之旅>系列更新缓慢,现招募志愿者写手.这是一个分享平台,欢迎各位愿意分享自己CFD学习经历的朋友们. <小 ...
- 【小白的CFD之旅】13 敲门实例【续3】
接上文[小白的CFD之旅]12 敲门实例[续2] 4 Results4.1 计算监测图形4.2 Graphics4.2.1 壁面温度分布4.2.2 创建截面4.2.3 显示截面物理量4.2.4 Pat ...
- 【小白的CFD之旅】01 引子
小白的CFD之旅 写在前面 CFD是计算流体力学的英文简称,是计算机辅助工程(CAE)的主要分支,目前广泛应用与科学研究.工程设计中.这是一门综合了数学.计算机及流体力学的综合学科,涉及到众多的专业理 ...
- 【小白的CFD之旅】09 初识FLUENT
按黄师姐的推荐,小白回头查找起 FLUENT的资料来.通过网络及图书馆查找相关资料,小白对于FLUENT有了基本的认识. FLUENT是一个CFD软件包,目前隶属于ANSYS公司 目前FLUENT的最 ...
- 【小白的CFD之旅】26 何为收敛
小白最近对流体计算的收敛产生了困惑.以前在学习高等数学的时候,小白接触过了级数的收敛,由于当时贪玩,并未将其放在心上,因此大学结束了小白也只是记住有这么一个名词罢了.现如今在利用CFD的过程中 ...
- 【小白的CFD之旅】16 流程
那天听了小牛师兄关于CFD应用的四种境界的说法后,小白发现自己连第一种境界都算不上,自己对于CFD还只是停留在做了少数几个案例的基础上,可以说是对其一无所知.不过小白不是那种遇到挫折就退缩的人,他决定 ...
随机推荐
- 微信浏览器是移动端的IE6?微信升级内核后Html5和CSS3兼容性总结
今年4月,自从微信浏览器X5 升级Blink内核之后,各前端社区一片高潮,仿佛看到了前端er,眼含热泪进而抱头痛头的说:终于可以不用兼容这"移动端的IE6 "了,可以早点回家了!! ...
- 数据结构(c语言第2版)-----了解链表,栈,队列,串
关于链表我觉得这都是最基本的东西,但是不常见,在实际的应用中很少的使用,了解它会用就OK,不需要研究的那么深,除非做那种内存压缩,存储方面工作. C语言中动态申请空间 malloc() q=(dlin ...
- 【吐槽】gist.github.com疑遭中间人攻击
北京时间201510081004,云南电信用户,现在上https://gist.github.com/,用IE10会提示证书被伪造,用搜狗4.1.3.9668会跳转到[http://www.cjb.n ...
- EC笔记,第二部分:10.让=返回指向*this的引用
Effective C++ 学习笔记 10 让=返回指向*this的引用 Table of Contents 1. 原因 2. 建议:在没有充分理由标新立异前,最好的做法是遵从传统. –by SkyF ...
- Java IO之字节流
Java中的输入是指从数据源等读到Java程序中,这里的数据源可以是文件,内存或网络连接,输出则是指从Java程序中写到目的地. 输入输出流可以分为以下几种类型(暂时不考虑File类) 类名 中文名 ...
- nyoj-一笔画问题-欧拉图+联通判定
一笔画问题 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下 ...
- 如何在MFC界面开发中响应Button按钮的Down和Up事件
通过尝试有两种方案可以解决这个问题,第一种方案是通过PreTranslateMessage函数在调度消息之前对消息类型进行筛选,第二种方案是重载CButton类,在重载后的类CForTestButto ...
- REST服务介绍
body{ font: 16px/1.5em 微软雅黑,arial,verdana,helvetica,sans-serif; } RESTful service是一种架构模式,近几年比 ...
- VB6.0 和VB.NET 函数对比
VB6.0和VB.Net的对照表 VB6.0 VB.NET AddItem Object名.AddItem Object名.Items.Add ListBox1.Items.Add ComboBox1 ...
- (原)3.4 Zookeeper应用 - 分布式锁
本文为原创文章,转载请注明出处,谢谢 分布式锁 1.原理 建立表示锁的父节点(图中locker节点) 每个争抢锁的服务器在locker节点下创建有序的临时节点 判断自己是否抢到锁:获取locker下所 ...