CFD使用者应当了解的一些事情
此文适合对象:CFD完全新手,没有流体力学基础,没有数值计算基础,甚至没有计算机基础。
作为一个CFD完全新手,你需要知道的几件事情
1.CFD是拿来用的,不是拿来学的
除非你是搞CFD理论的,比如一些数学或计算机专业的需要学习CFD理论,否则如果你是搞工程的,那么最好是将CFD作为工具,不要花费过多的精力去关注CFD内部细节,这些细节让那些学数学或计算机的人关注好了。将CFD当做自己可以信任的伙伴,投其所好即可。
2.流体力学是雪中送炭,计算流体力学是锦上添花
学习计算流体力学能够帮助我们更好地使用CFD软件,但相对于学习计算流体力学的时间来说,性价比很低。当然如果你有大把的空闲时间的话,系统的学习计算留体力学是可以的。相反,学习流体力学可以帮助我们更好的理解物理现象,更有助于使用CFD。
3.计算所用的模型都是需要进行校准的
CFD中的计算模型参数在真正计算之前都是要进行校核的,大量系统默认参数会影响我们的计算结果,也会使我们对计算结果丧失信心。
4. 计算结果是要进行校核的
软件的计算结果受很多因素影响,通常情况下都是要和实验测量值进行比较,否则计算结果可能自己都不相信。
5.网格引起的误差没有模型引起的误差大
计算模型引起的误差要远比计算网格引起的误差大。选错了模型,设错了边界条件或初始条件,可能会出现错误的计算结果。而单纯的网格质量,通常只会影响计算精度和收敛性。
6.收敛的结果不一定是正确的,但不收敛的结果一定是错误的
收敛时必要的,不管是稳态计算还是瞬态计算。
7.很多时候购买计算机硬件不如更深入的了解模型
深入了解模型后对计算模型进行简化,可以极大的降低计算资源开销,这往往比扩充硬件来的有效。当然土豪除外。
关于CFD软件,你应该知道的几件事
1.最好的参考资料是CFD软件附带的文档
成熟的商业软件通常都附带有完善的帮助文档,那是最好的参考资料。没有人能比编制程序的人更熟悉软件的操作。
2.从实际工程入手,要比从CFD理论入手快得多
找一个实际工程项目,自己独立的去完成,当项目完成的时候,你会发现你的CFD技术已经有了质的飞跃。如果你是从CFD理论入手,你会发现你所学习的理论很难在实际工程中有用武之地,时间久了你会丧失所有的信心。当然如果你有三五年的时间可以学习CFD理论的话,此条作废。
3.通常情况下,软件是可以被信任的
成熟的商业软件通常都经过了严格的测试,就算是有BUG,也不是一个CFD新手能够触碰到的。如果新手都能触碰到软件Bug的话,这软件可以宣布销毁了。
4.CFD软件不会知道使用者要做什么
你不要妄想CFD软件能够理解你的意图,它们仅仅是将人们提供的数据按指定的规则进行加工而已。CFD软件也不会理解自己产生的数据。至少到目前为止是这样。
关于前处理,你应该知道的几件事
1.完全保留几何细节的模型并不一定是好模型
对于复杂的工程模型,通常都需要对几何进行处理。保留所有的原始细节特征的几何模型,可能会导致网格数量剧增及网格质量下降。
2.完全均匀的网格一般不是好网格
一套好的网格一定是有密有疏,否则除非你是土豪,拥有无限的计算资源。
3.影响计算的是网格质量,而非网格形状
网格质量会影响计算收敛性和计算精度,但网格形状不会对这些产生影响。
4.绝大多数求解器支持的是非结构网格,只有极少数求解器支持结构网格
目前以及很难找到支持结构网格的求解器了。这里的非结构网格与结构网格指的是网格存储形式,而非网格形状,四边形和六面体同样可以是非结构网格。
关于CFD计算结果,你应该知道的几件事
1.计算结果是否正确,需要人工进行判断
CFD软件不会告诉你计算结果是否正确,在它们的眼中,计算结果都是正确的,否则程序早就当掉了。
2.数据往往比图形有说服力
CFD软件能够输出花花绿绿的图片,然而在大多数情况下,这些花花绿绿的图片仅仅只是作为点缀,真正有用的还是数据。
3.计算结果应用得好不好,取决于使用者的理论功底而非软件操作熟练度
要想用好CFD计算数据,必须对物理现象有充分的认识,否则只能使用试错法。软件操作熟练度除了能让你鼠标点得更准确外,对于CFD数据的利用没有任何作用。
关注微信公众号,查看更多CFD相关文章。

CFD使用者应当了解的一些事情的更多相关文章
- 【CFD之道】2017年原创文章汇总
1 Fluent案例(21篇) [Fluent案例]01 空气流经障碍物 [Fluent案例]02:Tesla阀 [Fluent案例]03:RAE2822翼型外流场计算 [Fluent案例]04:多孔 ...
- 【小白的CFD之旅】15 四种境界
天气不错,小白一大早就起床了,吃过早餐就往奔实验室而去.路上碰到了同去实验室的小牛师兄. "小白,这么早啊",小牛师兄老远就发现了小白,打招呼道. "早啊,牛师兄,刚吃完 ...
- 用Go实现的简易TCP通信框架
接触到GO之后,GO的网络支持非常令人喜欢.GO实现了在语法层面上可以保持同步语义,但是却又没有牺牲太多性能,底层一样使用了IO路径复用,比如在LINUX下用了EPOLL,在WINDOWS下用了IOC ...
- Storm的ack机制在项目应用中的坑
正在学习storm的大兄弟们,我又来传道授业解惑了,是不是觉得自己会用ack了.好吧,那就让我开始啪啪打你们脸吧. 先说一下ACK机制: 为了保证数据能正确的被处理, 对于spout产生的每一个tup ...
- Twitter Storm如何保证消息不丢失
storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍storm是怎么做到这个保证的,以及我们使用者怎么做才能充分利用storm的可靠性特点. 一个tuple被”完全处理”是什么意 ...
- (转)Windows驱动编程基础教程
版权声明 本书是免费电子书. 作者保留一切权利.但在保证本书完整性(包括版权声明.前言.正文内容.后记.以及作者的信息),并不增删.改变其中任何文字内容的前提下,欢迎任何读者 以任何形式(包括 ...
- Storm入门(六)深入理解可靠性机制
转自http://blog.csdn.net/zhangzhebjut/article/details/38467145 一 可靠性简介 Storm的可靠性是指Storm会告知用户每一个消息单元是否在 ...
- Storm入门(五)Twitter Storm如何保证消息不丢失
转自:http://xumingming.sinaapp.com/127/twitter-storm如何保证消息不丢失/ storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍st ...
- 【转】Twitter Storm如何保证消息不丢失
Twitter Storm如何保证消息不丢失 发表于 2011 年 09 月 30 日 由 xumingming 作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者 ...
随机推荐
- Navicatmysql专版
Navicat是非常牛逼的公司在数据库可视化方面,做出许多工具...,可视化,为了更加人性化的操作,远离枯燥无味的黑色窗口 一睹真容 捐献一枚注册码 注册码:NAVH-WK6A-DMVK-DKW3 D ...
- ASP.NET 对类进行XML序列化和反序列化
1 序列化方法 public void SerializeObject<T>(string Xmlname,T t) { XmlSerializer ser = new XmlSerial ...
- spring 自动装配 default-autowire="byName/byType"
<PRE class=html name="code">spring 自动装配 default-autowire="byName/byType" ...
- Ubuntu系统下添加程序启动器
Ubuntu系统上安装的软件,有的会自动创建快捷方式,在程序中可以搜索到,而有的安装后不会在应用程序中出现,如Eclipse.Spring Tool Suite或是绿色软件等,那么怎么手动创建快捷方式 ...
- std::string std::wstring 删除最后元素 得到最后元素
std::string str = "abcdefg,"; std::cout << "last character:"<<str.ba ...
- C语言open()函数:打开文件函数(转)
相关函数:read, write, fcntl, close, link, stat, umask, unlink, fopen 头文件:#include <sys/types.h> ...
- Ubuntu菜鸟入门(十六)—— 安装视频播放器vlc
sudo add-apt-repository ppa:videolan/master-daily sudo apt-get update sudo apt-get install vlc Ubunt ...
- 百度OCR识别示例
文章地址:https://www.cnblogs.com/Charltsing/p/OcrAnswerer.html 最新版为v4.1版,开放一定概率的八窗口体验功能,请截图体验(多点几次图片).更新 ...
- Git 远程仓库(分布式版本控制系统)
前言 远程仓库是指托管在因特网或其他网络中的你的项目的版本库.你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写. 1.查看远程仓库 如果想查看你已经配置的远程仓库服务器,可以运行 git ...
- php mysql procedure获取多个结果集
protected function getRs($id) { $db = new mysqli(C("DB_HOST"), C("DB_USER"), C(& ...