找回密码
 注册
查看: 3759|回复: 7

非CFD专业对CFD编程的疑惑

[复制链接]
发表于 2014-5-26 09:05:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近一直这个问题存在疑惑,既然非CFD专业,那么CFD编程对我意义何在?
  不开发新算法,那么非CFD专业学生编程所用的分裂技术,Riemann问题近似解,重构方法等都是经典的成熟的。既然这样,那么成熟的流体应用软件(比如fluent),我相信在这方面比任何一个单独的人做的要好的多。尽管我原来持着这个观点去问过老板,老板解释是自己编程了解核心技术,知道怎么算的,而且可以算特例。但是我还是存在疑惑,至今为止,我接触的问题基本都可以用fluent计算(也可以说我接触的比较少,没有超出fluent的应用范围)。老板说,fluent算的东西不可信,但是我弱弱地问一下,难道自己编程算的就可信了?先抛开学术层面的问题,在技术处理上,自己编程耗费时间长,(非CFD专业)一个小团队或者个人能够做出什么特别的呢?这时候我不得不怀疑花这么多时间调试程序是否值得。这只是我个人的疑惑,我是一个接触CFD不久的超级菜鸟,还请高人解惑,谢谢(针对非CFD专业的。。。。。。)
发表于 2014-5-26 09:50:47 | 显示全部楼层
既然都是非专业的了,就不要那么较真。

Fluent等一大批商业软件,有过人之处,也有非常大的局限性。

首先它的一种商业行为,那么如果连你都忽悠不了,它赚什么钱啊?所以所有商业软件的旗号是能算很多问题、绝大多数能给你一个结果。要做到这一点,那么必然会涉及非常多的过程耦合,这些过程的模拟水平参差不齐,耦合结果更加大打折扣;第二个手段就是加大数值粘性和/或人工粘性,使得求解器能算尽可能大的参数范围,而他们用的手段是不向外界公开的。这就有一个问题:他们的处理是否掩盖真实物理情形?如果自己编程序,那么任何情况你都是了解的,你能够比较清晰的评估数值技术带来影响。如果你不同意我的看法,用Fluent算一个Re=50的2D圆柱绕流问题,再来这里谈一谈。居于这一点,我觉得工程软件在计算一些比较简单的问题,一些对精度要求不是很高的工程问题,以及在实验室算法未出来之前对新问题的预研等,是没有问题的,前提是经过严密的各种格式选项、网格、计算域、时间步等的细致研究和对比之后进行的。

然后一点是,最新的算法绝大多数是在实验室的,这个是毋庸置疑的。一般实验室算法比较成熟、程序发展比较完善,就可能会集成到工程软件里面,这也是工程软件发展的过程。为了避免别人抬杠,我承认某些比较大的开发公司也会有一些新的算法,但是所占比重非常小。基本上没有一个公司愿意花钱请一帮人发展一个10年不见得有经济效益的算法,但大学实验室和研究所可以。

所以是否自己开发程序,还是使用工程软件,是根据自己研究目标尤其是长远的职业规划来定的。但无论自己开发程序、还是使用工程软件,基本的流体力学和数值方法还是需要了解的,这样以便你能更深刻的理解模拟的结果并判定结果的可信度甚至发明更好的算法等。
发表于 2014-5-26 20:55:18 | 显示全部楼层
商用软件的一个优势是严格按软件开发流程开发并测试,缺点是看不到源代码,用户会觉得有些东西是超出自己控制的。自编程序优点是自己掌握所有细节,但缺点是缺乏严格的工业化测试,而且一般而言适用范围有限。在这种情况下可以考虑使用开源软件,开源软件兼有上述优点,并且有一个开放的组织供自己咨询问题。
发表于 2014-5-27 19:44:23 | 显示全部楼层
如果不知道CFD的基本理论,那么还是就相信商业软件吧。对于理想流体等,商业软件确实没什么可挑剔的。要知道的只是边界条件,计算域的选取等。这个可以从纯物理的角度来理解和选取。
发表于 2014-5-28 23:37:46 | 显示全部楼层
那么是不是在商业软件的基础上进行UDF、UDS编程是比较好的折中方法呢?
发表于 2014-5-29 00:30:56 | 显示全部楼层

回复 5# dengbitao 的帖子

个人认为,要在商用软件上进行UDF,UDS是要经过一番历练之后方可得到有效的结果。
而经过实验室程序的开发(编程)后可以得到基本CFD的技术训练。所以要用好CFD技术,必须了解核心技术,但未必是你一个个编程后调试的,知悉其中原理和实现方法很是关键。
发表于 2014-6-3 22:06:33 | 显示全部楼层
谈一下我个人的看法:我读研时才接触CFD,刚开始看师兄的代码,也很痛苦,看懂EULER方程的代码,以后NS方程的代码也就简单了。我认为读研还是要懂得CFD编程,也要亲自做一些开发,这是很有用的。另外,流体中文网李新亮老师的开源代码OPENCFD很好,可以学习。也可以学一些软件啊,比如Gridgen, Icem,tecplot, fluent等等,又懂编程,又会商业软件,这不挺好吗?不过,CFD比较是工具,能通过CFD来解决实际问题,也就是说能分析计算结果,这是很重要的。希望对你有用。
发表于 2014-9-9 17:36:52 | 显示全部楼层

标题

搞清软件设计原理再去使用软件,可以大大提高分析成果的质量和可靠性,通过一定时间的积累水平也会逐步提高,编程对于流体力学cfd学习尤其重要,因为各种软件自身和模拟方法都有一定的局限,计算成果的合理性判断也离不了,另外动网格udf也需要用户有一定的程序设计基础。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表