小白经过大半个多月对于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. 悟透JavaScript

    要理解JavaScript,你得首先放下对象和类的概念,回到数据和代码的本原.前面说过,编程世界只有数据和代码两种基本元素,而这两种元素又有着纠缠不清的关系.JavaScript就是把数据和代码都简化 ...

  2. Win10 UWP 开发系列:使用多语言工具包让应用支持多语言

    之前我在一篇blog中写过如何使用多语言工具包,见http://www.cnblogs.com/yanxiaodi/p/3800767.html 在WinEcos社区也发布过一篇详细的文章介绍多语言工 ...

  3. EF架构~EF异步改造之路~让DbContextRepository去实现异步接口

    回到目录 返回异步与并行目录 上一讲中,我们定义了三个异步操作接口,这回我们将对它进行实现,而有一个基础知识需要大家清楚,那就是实现接口的方式,一般我们使用默认的方式(隐式实现),这种方法实现的接口方 ...

  4. Xamarin 免费了,你能做什么?

    3月底,微软正式宣布:Xamarin免费了!那么,你能做什么? 抢先一步,用Xuni助力你的Xamarin开发! Xamarin是什么 Xamarin含Xamarin.Andoid,Xamarin.i ...

  5. MySQL中索引和优化的用法总结

    1.什么是数据库中的索引?索引有什么作用? 引入索引的目的是为了加快查询速度.如果数据量很大,大的查询要从硬盘加载数据到内存当中. 2.InnoDB中的索引原理是怎么样的? InnoDB是Mysql的 ...

  6. DecoratorPattern(装饰器模式)

    /** * 装饰者模式 * @author TMAC-J * 总的来说,装饰者模式就是继承的应用 */ public class DecoratorPattern { interface Beans{ ...

  7. [连载]《C#通讯(串口和网络)框架的设计与实现》-1.通讯框架介绍

    [连载]<C#通讯(串口和网络)框架的设计与实现>- 0.前言 目       录 第一章           通讯框架介绍... 2 1.1           通讯的本质... 2 1 ...

  8. 轻量的、可自定义 CSS 的 Lightbox 相册插件

    jQuery LightGallery是一个轻量级的,可定制的,模块化的,响应式的 jQuery 相册插件.它采用 CSS 来实现图像和视频的大小调整.因此,这将是非常灵活的,并且比使用 JavaSc ...

  9. 关于C#消息调度(作业日志)

    在Windows定时作业中,其实有多种关于作业调度形式,比如Windows Services 和 Windows Form 都可以做到,各有各的好处.现在来介绍下使用插件的形式进行定时作业. 1.用q ...

  10. Oracle常用SQL查询

    一.ORACLE的启动和关闭 1.在单机环境下要想启动或关闭oracle系统必须首先切换到oracle用户,如下: su - oracle a.启动Oracle系统 oracle>svrmgrl ...