第一篇:CFD学习心得以及推荐书目
偶也说一点。
偶原来是做实验的,CFD和NHT上课学过一点,没学到什么东西。研究生毕业前半年,觉得身为流体机械的master不懂CFD没脸见人,于是就自己再学。说实话,教材,当时觉得没有一个是很系统明了的。所看的书基本是北航的《计算流体力学基础》(忘了作者)、《计算流体动力学》(马铁尤),这两个比较老,主要着重于可压缩流的计算。较新的可压缩流计算可以看看《应用计算流体力学》(朱自强)和《叶轮机械跨声速及亚声速流场的计算方法》(清华的王保国)。《数值传热学》(陶文铨)、《计算传热学的近代进展》(陶文铨),主要着重于不可压流的计算。此外还有吴子牛的一本书,不记得名字,思路清晰,简明扼要。刘超群的一本多重网格法的专著,附带的源代码很多,即使不作多重网格,也是很有价值的。
因为没有老师,所以看书就没有什么章法,看不懂就跳过,往后看,说不定就懂一点,然后回头重新看。没事就看看,仔细看,多了就明白了。还可以在internet上搜索老外的教材和lecture notes。初学CFD,最忌急躁。很多看不懂是正常的,指望全部内容一次看懂是不可能的(这不是看小说)。看上一段时间,大概几个月,看多了,脑子里面的概念就系统了。很重要的是这两大类(可压/不可压)的计算方面的一些重要的区别和特点,主要体现在方程组形式、求解方式、边界条件的处理、物理上的着重点等等。这些概念很重要,即使不编程,实用商业软件的时候如果没有清晰的概念,就会在求解设置上犯错(有人算跨音速喷管居然用常密度气体,典型的基本概念不清)。
肯定会碰到大量的公式的。没别的,硬着头皮看,但是脑子要清醒,不能晕。如kaisa说,就是那么几个守恒关系(质量、动量、能量、组分……)。而且这些公式都是一个形式——对流扩散方程,搞清楚那些是流动项(对流项),那些是扩散项,那些是源项,这样主干就清晰了。枝节的问题相对杂一些,那只能硬着头皮读。
如果着重于利用商业软件解决问题,只要有足够的基本概念就可以参考软件的文档很快入门了。必须掌握英文阅读,实际上不难,4级水平足以。照着tutorial做几个就有底了。多思考,然后越做越顺手的。
网格是关键,必须把网格做好。首先得清楚计算对网格的要求,特别是紊流计算。实际做网格要花很多功夫,要慢慢磨练。我最先用过AUTODesk Inventor 6 + GAMBIT 2,还算是很熟悉了。不过现在觉得GAMBIT确实落后了,很费劲。现在用的是ICEMCFD。最先感觉ICEMCFD无从下手,因为模块太多,不清楚之间的关系,不知道那些是主要的。偶推荐先研究HEXA模块,直接从tutorial pdf文件的HEXA那一部分开始学习,其他的都不管。然后就会渐入佳境的。
如果还想深入编程,就不能满足基本概念,必须硬着头皮啃教材里面的算法、算例讲解和源代码了。《数值传热学》里面多维热传导和边界处理、SIMPLE算法,《计算传热学的近代进展》里面的非结构网格Denolay生成法,还有一些其他资料上的Euler方程Remann间断解、1D可压缩流的计算格式……我读了很多遍。必须找别人的代码读,否则不知道怎么编程。最先读了陶文铨书后面的那个后台阶流动的SIMPLC程序、XJTU的2D的SIMPLE算法教学程序。这些相对比较短,几页纸罢了。然后是比较长的,《计算传热学的近代进展》后面的非结构网格Denolay生成代码,刘超群书后的多重网格法叶片计算程序。这些还好,虽然注释不多,但是算法都在书里面。后来想找可压缩源代码读就难了,好不容易找到一个法国人的2D非结构网格可压缩流求解程序NSC2KE,30多个文件,好几十页,注释很少,还有法文的;在毕业的博士师兄故纸堆里找到一个老师编写的跨音速流3D薄层NS方程程序,几乎没有注释,只有不知道谁随手做的一点笔记,也是几十页的代码。只能硬着头皮慢慢读,因为想找到自己感兴趣的问题相关的、有详细算法介绍和注释的代码看是不可能的。读懂一些源代码之后,我想就算小成了。然后自己写程序就有底了。
如何才能成为CFD高手
呵呵,好久没思考这个问题了,记得刚接触CFD时,也是一脸惶恐,这个不懂,哪个不知,整个灰头土脸,还得小心老板盘问,同学比较!痛苦+郁闷ing!时间长了,脸皮厚了,也学到一点东东,但是心里依然有种说不出的烦闷,就是为什么我不懂的有那么多?我什么时间也能成为一个高手?
仔细总结了一下,其实也成为计算流体力学也不是很难,下面就简单叙述一下: 1.所谓计算流体力学,顾名思义,需要计算和流体力学知识,要成为高手,首先要有扎实的数学功底和流体力学知识。数学是很难弄的,有些人(包括我)看见偏微分就烦,看见老长老长的数学推导就想略过。其实这和国内的教科书有很大关系,因为从小看到的数学书都是冷冰冰,让人怪不舒服的。所以如果现在要补数学,首先要找些有趣点的教材。这个非常关键,没有兴趣学数学还不如自杀痛快!对于流体力学,尤其是紊流这部分,说法太多,难以一一详述,到现在连什么是紊流都没有一个准确性定义,苦呀!各种不同的定义方法和描述方法,像什么混合长度等等,决定了各自的适用范围,建议对于这一部分做个详细的分类了解。其实,计算流体力学说到底,就是那三个守恒公式,能量、质量、动量,了解起来很容易。关键是各种假设太多,痛苦ing!什么时间,我们直接研究流体分子,把假设全干掉,那就爽了,不过估计,我是没希望看到了!哈哈!
2.第二点,要学会编程。这又涉及到数学,因为什么网格化分,方程离散,差分迭代等等其实都是数学的玩意。数学不好,肯定搞不懂那一堆一堆的符号是装饰还是垃圾,哈哈!推荐学门高级点的语言,VF很有历史,VC很难学,但你一定要学一门。只有通过编程,你才能了解计算流体力学究竟是如何一回事。
3.要学软件,自己变程是学个方法,现在大部分人都是在用商业软件。像流行的fluent,star-cd等等,虽说不是针对性软件,效率低,精度低,但要自己做个计算复杂流场的软件,还是要慎重思考。学软件其实不难,因为大部分工作都已经做好了,我们要做的就是告诉软件要做一个什么样的问题,有点像傻瓜相机。简单说来CFD可分三步,建模,求解,后处理。建模包括绘制物理模型,网格化分,设定边界条件等。绘制物理模型(CAD),很简单多数商业软件都有专门的软件,也可以选择复杂的ug,proe,solidworks,这和个人爱好与软件资源有关,在此不多作评论,可以挨个试试,找个顺手的。关于网格化分,除了CFD软件自带的软件,可以尝试学这么几个,icemcfd,gridgen,等。边界条件都是在CFD软件中设定,无非压力速度质量。关于后处理,一定要有足够的重视!这一部分是重中之重,计算的结果别人是看不懂的,一定要有诲人不倦的精神,要让傻瓜都愿意看,都能看懂。当然最关键的是确定数据的取舍,因为计算的好处便是能得到一大堆各式各样的数据,一定要挑出那些和计算要求相关的,能说明问题的结论。然后就是数据的表达问题,也挺简单,等值线,矢量,数值曲线。要选一个最简洁明了的。推荐软件fieldview,tecplot(这个东东有点笨)。
4.要有好的硬件设备,弄着PentiumI做计算肯定能做,但你肯定被抛在了时代的后面,你的结论肯定有种历史沧桑感。硬件也简单,CPU要快,而且要抗造,别动上几个小时就冒烟;内存一定要大,这样你才敢算个像样的问题,要不然你拿着50个网格,还是用计算器算比较好。哈哈;再就是显卡,显存要够大,GPU要够快;硬盘也要够大够快。别弄着个250M(据说已经停产了,但我用过)的硬盘去存东东;最关键的是主板,一定要够稳,够快,要不然,你前面的东东,再好都白费。关于显示器,我很痛苦,实验室给我弄得syncmaster743df,让我的眼睛每天都像个兔子,惨不忍睹!当然最爽的是弄台工作站耍,这是我今后的努力目标,不为别的首先要告别这一堆眼药水!
5.要有一颗仁慈的心。计算机这东西太笨,在出错的时候不要把它暴扁。好了,老板在靠近,我要先闪!推荐书籍:
中文:陶文铨《数值传热学》,我认为国内的一个经典。吴望一《流体力学》。
英文:太多了,我感觉都不错,有空到我的FTP自己找吧。软件:star-cd,fluent,ug,icemcfd,fieldview,origin.计算流体力学基本原理
作者: 吴子牛编著 索书号:52.71/C18 SS号:10833073 出版日期:2001年2月第1版 页数:281
应用计算流体力学
作者: 朱自强等著 索书号:O35/59 SS号:10307347 出版日期:1998年8月第1版 页数:222
流体力学与应用数学讲座(4)计算流体力学 作者: 赵国英 吴汉明 整理 索书号:52.7/225 SS号:10217136 出版日期:1985年11月第1版 页数:162
计算流体力学导论 作者: CHUEN YEN CHOW 索书号:52.7-352 SS号:10248445 出版日期:1987年2月第1版 页数:458
计算流体力学
作者: 魏茂乐 杨岭 索书号:52.7/225 SS号:10131300 出版日期:1985年11月第1版 页数:162
计算流体力学
作者: 刘顺隆 郑群 索书号:O35/L72 SS号:10190646 出版日期:1998年5月第1版 页数:353 计算流体力学的理论、方法及应用
作者: 吴江航 韩庆书著 索书号:52.7/6032 SS号:10347084 出版日期:1988年5月第1版 页数:293 计算流体力学
作者: 陈材侃 索书号:O35/C37 SS号:10201499 出版日期:1992年12月第1版 页数:341
计算流体力学基础
作者: 苏铭德 黄素逸 索书号:D35/S87 SS年3月第1版 页数:497
号:10200305 1997出版日期:
第二篇:CFD学习心得
关于网格的几个误区
尽管当前出现了不少使用无网格方法的FEA及CFD代码,但是网格划分依然是大多数CAE工作者们最重要的工作任务,对于高质量网格生成的重要性怎么强调都不过分。
但是如何生成高质量的或更精细的网格呢?查看网格生成软件所输出的网格质量报告是最基本的方式,使用者还需要对网格是否适用于自己的物理问题做出自己的判断。
不幸的是,使用者对于“好网格”存在很多的误区。如今已经很难在工程学科中找到关于网格划分方面的课程,数值算法在大多数工程学科中成了选修课程。因此,新生代CAE使用者对于网格在CAE系统中的工作机理方面的欠缺也不足为怪了。这里有5个最主要的误区: 误区1:好的网格必须与CAD模型吻合
越来越多的CAE使用者来自于原来的设计人员,他们在CAD方面受到了良好的培训,因此他们倾向于CAE模型体现所有的几何细节特征,他们认为更多的细节意味着计算结果能够更加贴近于真实情况。
然而这种观点是不正确的,好的网格是能够解决物理问题,而不是顺从CAD模型。
CAE仿真的目的是为了获取物理量:应力、应变、位移、速度、压力等。CAD模型应当是从物理对象中提取的。大量与物理问题不相干的或对于仿真模型影响较小的细节特征在建立CAD模型之前就应当进行简化。因此,了解所仿真的系统中的物理细节是最基本的工作任务。好的网格应当简化CAD模型并且网格节点是基于物理模型进行布置。这意味着:只有在充分了解所要仿真的物理系统前提下才可能划分出好的网格。误区2:好的网格一直都是好的
我们经常看到CAE使用者花费大量的心血在改变网格尺寸、拆解几何及简化几何上,以期能够获得高质量的网格。他们仔细的检查网格生成软件输出的网格质量报告,这是很有必要的。但是这事儿做得太过也不一定好,因为好的网格也不一定永远都好,网格的好与坏,还取决于要仿真的物理问题。
例如,你生成了一套非常好的网格,其能够很好的捕捉机翼的绕流,能够很精确的计算各种力。但是当你将流动攻角从0°调整到45°,试问这网格还是好的网格吗?很可能不是了。
好的网格总是与物理问题相关。当你改变边界条件、改变载荷、改变分析类型、改变流动条件,好的网格也可能变成坏网格。误区3:六面体网格总比四面体网格好
很多老的书籍会说六面体(四边形)网格要比四面体(三角形)网格要好,同时告诉你说引入四面体(三角形)网格会造成很大的数值误差。一些情况下这种观点是正确的,特别是15~20年前。
历史上,人们热衷于六面体网格,主要有以下原因:1)在当时,CFD求解器仅能使用结构网格;2)计算条件不允许使用大量网格,为了节省内存和节省时间;3)非结构网格还不成熟。
在过去的几十年里,大部分商用FEA及CFD求解器技术获得的了极大的发展,对于绝大多数问题,利用六面体网格及四面体网格都能获得相同的计算结果。当然,四面体网格通常需要更多的计算资源,但是其能在网格生成阶段为使用者节省大量的时间。对于大多数工程问题,六面体网格在计算精度方面的优势已经不再存在了。
对于一些特殊的应用场合,如wind Turbine,泵或飞机外流场计算,六面体网格依然是首选的网格类型,主要原因在于:1)工业惯例;2)易于理解的物理情况(大多数使用者都知道应当如何对齐网格;3)对于这类几何模型,存在专用的六面体网格生成工具。
然而,对于大多数FAE及CFD使用者,如果几何模型稍微复杂一点,则需要花费大量的时间在六面体网格生成上,计算结果还不一定更好。计算所节省的时间相对于网格生成所花费的时间,有时候显得得不偿失。
误区4:自动网格生成(automatic meshing)的方式不可能产生好的网格 当软件提供商在证明他的软件是高端的时候(当然价格通常也是高端的),他通常会告诉你说他们的软件允许手动控制所有的操作参数。潜在意思就是说只有手动控制才能生成好的网格。
当然,对于销售员来讲,好的网格需要手动控制。但是对于工程师来说,他们需要理解这是一个误导:好的网格软件应当拥有足够的智能化以分析几何模型:计算曲率、寻找缝隙、寻找小的特征、寻找毛刺边、寻找尖角、拥有智能化的默认设置等…
这些工作都应当是自动网格工具的职责。对于大多数使用者来讲,软件应当对于输入的几何模型能够获取更多的信息以及更高的精度。因此,软件应该能够提供更好的设置以获取高质量的网格。当然,对于长年累月使用相同的几何模型及软件的使用者来说,情况可能有所不同。这些使用者对于物理模型了解得非常清楚,而网格软件却没办法了解他们的物理问题,因此他们对手动操作的需求更多,而且他们也能更好的驾驭手动操作。不管怎样,对于网格质量两说,一个好的自动网格软件能够给予无经验的使用者更多的帮助。手动控制主要是为一些对物理问题非常了解的有经验的使用者提供的。
误区5:好的网格其数量一定特别多
由于HPC资源很容易获取,甚至一些学生都能进行千万级别网格的CFD问题求解,因此在多数CAE使用者眼里,大数量的网格意味着高保真度。
这种看法并不完全正确。打个比方,在CFD计算中,如果使用者使用标准壁面函数,则所有放置于粘性子层内的网格都会失效,这不仅会浪费大量的计算时间,也有可能会造成非物理解。特别对于LES模拟,过于西米的网格可能会造成打的误差及非物理解。
精细的网格并不意味着好的网格。网格划分的目的是为了获取离散位置的物理量。好的网格是为计算目的服务的网格,因此,当你的计算结果具有以下特征时:1)物理真实;2)对于项目来讲足够精确,则你的网格已经足够好了。
另一个关于此误区的例子在于大多数使用者习惯使用全3D模型。在他们的眼里,3D全模型是真实的。然而,当问题对称的时候,使用部分模型将会获得更好的计算结果,因为强制施加了对称约束。当问题是轴对称的时候,使用2D计算模型往往能够获得比3D全模型更精确的结果。很多CAE新手没有足够的时间去完全理解仿真系统中的物理模型,因此很难对几何模型进行任何简化。当前,CAE计算结果依然依赖于网格。好的网格应当具备以下特征:
1、能够求解所研究的问题
2、具有求解器能够接受的网格质量
3、基于问题简化网格
4、适合项目要求
CFD软件技能的提高:简述
去年出版了一本关于ANSYS CFD 入门的书,里面对CFD操作流程进行了全面描述。同时采用step by step的方式给出了各个流程中的详细实例。那是一本关于ANSYS CFD系列软件的操作说明书,同时也是一本关于CFD计算基本流程的说明书。相对于前者,我更倾向于后者。只因相对于软件操作来说,了解并入门CFD计算的一般流程似乎更为重要。不过那仅仅只是一本入门级的书,读者若想要进一步提高自己CFD计算能力,还有较多的工作要做。基于以上考虑,吾萌生了再写一本续篇的想法,只求在入门的基础上,进一步提高读者的CFD应用能力。
很多人用了几年的CFD软件,遇到新的问题还是百愁莫展。关于软件和理论谁更重要的争论已经够多了,这里不再进行讨论,这里只是讨论如何才能提高CFD软件操作的技能。在前面的很多博文中已经对如何更快的CFD入门进行了讨论,本文简要的分析如何才能在入门的基础上进一步提高软件操作技能。
众所周知,软件操作的熟练程度直接关系着工作效率,虽然说CFD计算模型准备的时间相对于其计算时间来讲几乎可以忽略,但是对于软件操作者来说,能够在软件操作上节省时间无疑也是非常有吸引力的。这里以CFD计算的三个关键环节,简单的描述如何才能在软件入门的基础上,进一步加强自己的软件操作技能。
简单来讲,利用CFD计算流体流动及传热过程大致可分为三个步骤:前处理、计算求解以及后处理。其中前处理主要用于计算模型的准备;计算求解主要是软件在做,对于非开源的软件来讲,这部分受制于软件,人工可干预的部分很少;计算后处理则是将计算结果以图形化的方式呈现,方便计算者对物理现象的理解。
对于计算前处理来说,在了解了计算网格生成的一般过程之后,首先需要了解的是:在特定的环境下如何选择合适的网格类型;如何选择和设置网格参数;对于复杂的几何模型,如何对其进行处理以适合于网格的生成;对于不符合要求的计算网格,如何进行编辑和修改。
对于求解器来说,虽然求解过程可控参数较少,但是对于物理模型的描述,则存在非常多的参数需要使用者关注。除开那些需要用户的理论背景才能很好确定的参数外,还存在一些影响着计算收敛性或计算精度方面需要考虑的参数。虽然目前的计算软件中一些默认参数已经能够很好的应付大多数常规的计算问题,但是对于特定的复杂问题,正确的修改这些参数,有时候会极大的提高计算收敛过程以及计算精度。
个人认为,相对于前处理和计算求解来说,计算后处理更加重要。主要是因为计算后处理直接与设计过程相联系。当然,要用好后处理,除了需要计算者对问题背景理论有相当的研究之外,还需要有足够的审美观。前面提过,这里不谈有关理论方面的问题,因为这是每一个计算者都必须不断加强的内功。这里只说一下后处理者的审美观问题。我坚持认为:“漂亮的东西不一定是正确的,但是不漂亮的东西一定是错误的”。甚至将这一理论应用到生活中的方方面面。因此,如何将后处理数据以最美观的方式展示出来,这的确也需要相当的美学修养。
后续的系列文章将会围绕这三个话题进行展开,详细描述在CFD软件提高过程中需要关注的内容,以期达到软件中级使用者的程度,即达到遇到全新的流动问题,能够提出可行的解决办法。[系列]CFD软件技能的提高:从前处理软件选择开始
“选择”是一件极为痛苦的事情。没有选择很痛苦,有很多候选项而不知道如何进行选择似乎更为痛苦。流体计算前处理似乎就存在这一问题。广义上的流体计算前处理通常指的是从几何模型的创建到计算模型的生成这一过程。但是我们更愿意接受将前处理定义为从几何模型的导入到网格生成这一过程。因为相对于复杂的工程问题,其几何模型往往非常复杂,计算工作者更愿意使用专业的几何建模软件来生成此类几何。而网格划分之后的计算参数设定,则涉及到众多的行业理论背景,往往将其归结到求解器设定里面。如果将前处理仅仅限定在几何模型的导入至计算网格的生成的话,那么此过程则可以完全与计算求解分离开,形成相对独立的操作流程。也是基于这一点,市面上出现了相当多的各种类型的CFD前处理软件。从这一点出发,任何一款前处理软件其实都可以适用于任何求解器。
再来谈谈固体有限元网格和流体网格的区别。从本质上来说,它们是没有区别的,都是记录了各节点的坐标值以及节点间的连接关系。但是由于有限元计算算法与有限体积法(大多数流体求解器采用的算法)的差异,导致了网格划分过程中需要注意的内容不一样,这也导致了一些网格生成软件更偏重于固体计算或流体计算。那么它们的差异在哪里呢?使用固体有限元计算的筒子可能会听到诸于“一阶单元”“二阶单元”“高阶单元”之类的概念,如下图所示,左侧为一阶四面体单元,包含四个节点。右图为二阶四面体单元包含有10个节点。虽然说节点数量不一样,但是仅仅只是反应在计算求解过程中,而在网格划分过程中则没有任何差异。对于流体计算网格则没有阶次的概念,可以认为所有的流体计算网格均为一阶网格。
对于固体有限元和流体计算前处理还存在的区别在于:固体有限元计算,在前处理过程中需要指定单元属性、材料类型等等参数。因此固体前处理过程比流体前处理过程要包含更多的操作。流体计算前处理仅仅只需要输出网格节点坐标、节点间的连接关系等信息即可,比起固体计算前处理要简单一些。这也是一些专职流体前处理软件不适合做固体前处理的原因。当然,流体计算也有其特别的地方,比如说流体计算存在固体计算中所不存在的边界层问题,反映在前处理上则为边界层网格的生成上。专职的流体前处理软件可能会很方便的生成流体边界层,而固体前处理软件则需要花费更多的时间来处理这部分工作。
边界层网格通常为棱柱层网格,主要是因为边界层范围内需要网格存在较好的正交性,要求近壁面法向方向网格存在较好的正交性,而且由于边界层往往都很薄,所以这类网格通常存在很大的长径比(几
十、几百甚至上千)。对于固体计算来说,大的长径比网格往往是不被允许的,故在固体前处理软件中对这类网格进行检查是,很有可能会被标记为不合格网格。这也是利用固体前处理软件生成流体网格时需要关注的内容。
另外,在固体有限元计算中常常存在零维、一维、二维网格,比如说集中质量、线网格和板壳网格等,这些网格在流体计算中均不存在。流体网格中对于无厚度的面,则仅仅只是对网格节点进行标记,而不会直接生成所谓的片体网格。除了2D计算所用的二维网格外,流体计算使用的是三维网格。更有一些求解器(如CFX等)还不支持2D网格计算。顺便多说一句,就算是2D网格流体计算,求解器也是默认网格存在厚度的。
言归正传,目前流体通用计算前处理软件很多,比如说目前支持ANSYS系列流体计算的ICEM CFD,专职做流体计算网格的PointWise与Gridgen,六面体网格生成软件GridPro,Altair公司的前处理软件Hypermesh,希腊ETA CAE System S.A.公司的ANSA等,这些软件可以说是目前网格生成领域比较流行的工具。当然这里不去讨论一些软件自带的前处理软件,比如说ANSYS、STAR CCM+、ESI CFD等软件也都带有自己的前处理软件。
一般认为,HyperMesh与ANSA更偏重于固体有限元前处理,但是也能够生成流体计算网格,它们的优势在于面网格的生成。ICEM CFD、PointWise与Gridpro更偏重于流体前处理,而Pointwise由于Gridpro只能生成流体网格。ICEM CFD既可以生成流体网格也可以生成固体网格,但更偏重于生成流体网格。这里简单介绍一下:
HyperMesh:Altair公司的Hypermesh是一款综合的前处理软件,其能够生成有限元计算中所需的所有网格类型。对于流体计算来说,也能够较为方便的生成边界层网格。该软件采用几何剖分的方式可以生成全六面体网格。在Hypermesh中,若要利用软件生成边界层网格,则软件会自动将内部网格转化成四面体非结构网格,或许用户可以精细的调整边上的bias以生成边界层网格,但是个人认为还是比较麻烦的。当然也许有更加方便的方式我还没有找到。不过如果用户既做流体计算也做固体计算的话,强烈推荐使用这个。
ANSA:此软件是Hypermesh的直接对手,在汽车领域应用甚广。所有特性与HM类似。但是在生成六面体网格方面,除了提供类似HM的几何剖分方式还,似乎还有基于虚拟block拓扑的方式,个人认为还是比较好用的。此软件我接触得少,不予评价。
ICEM CFD:这软件是被ANSYS收购的。起先此软件被收购后主要用于CFX的前处理。后来ANSYS公司收购了FLUENT,发现GAMBIT虽然功能比较强大,但是界面不怎么美观,毕竟是基于UNIX环境而开发的软件,将其用到Windows下自然不是那么的顺畅,需要安装Exceed,而且还经常卡顿卡顿的。在这种情况下,ANSYS就把ICEM CFD推到了前台,该软件也成了ANSYS CFD系列的御用前处理器。而GAMBIT的命运就比较悲催了,可能会在其功能被Mesh模块完全吸收后消失在人们的视线中。ICEM CFD的功能强大,可以说是CFD前处理领域顶级软件。其支持独特的虚拟Block拓扑构建六面体网格方式,也支持非结构网格的自动生成,构建边界层网格也极其方便。当然现在也有关于ICEM CFD生成非结构网格方面的一些说法,比如说没有size function,这让习惯了GAMBIT的童鞋很难受。还有就是ICEM CFD生成非结构网格数量超多的问题。当然这些都不是什么大问题,可以通过软件的操作技能的提高得到弥补。除了流体外,ICEM CFD其实还支持固体有限元网格的生成。对于主要从事CFD计算的人们来讲,ICEM CFD可以当做首选的前处理软件。其支持绝大多数流体计算求解器,更重要的是其能够无缝的支持FLUENT,而FLUENT网格实际上已经相当于流体网格的标准了,绝大多数流体求解器其实也支持输入FLUENT 的msh网格格式。
Pointwise:来自于软件gridgen,据官网介绍,此软件来自于通用公司研究F-16战斗机时所开发。该软件能够提供对网格的全面控制,因此适合于CFD高级用户。当然如果是对于CFD新手的话,操作此软件可能会觉得稍显麻烦。该软件同时提供了结构昂个与非结构网格生成,能生成极高质量的网格。但是此软件无法生成固体计算网格。因此如果是专业的CFD用户,可选择此软件作为前处理器。由于Gridgen与此软件同出一辙,就不分开讨论了。
GridPro:这软件据说来头也听说,说是专为NASA开发的CFD前处理器。不过不管其来头有多大,该软件无法生成非结构网格是一大硬伤。对于异常复杂的工业CFD模型,如果要完全生成结构网格,无疑需要耗费大量的精力,甚至很多时候都是难以做到的。不过话说回来,该软件生成的结构网格的确是漂亮得让人心醉,对于简单易生成结构网格的几何模型,选择此软件也是不错的选择。不过工作中如果常常与复杂几何打交道的话,可以说此软件不太适合。此软件虽然在6.0版本之后对GUI进行了重要改进,不过几何的输入接口仍然还有极大的提升空间。
第三篇:cfd学习报告
CFD学习报告
姓名 段蒙 学号 M201370932 完成日期 2014 年4月17日华 中 科 技 大
学
CFD学习报告
一、几何建模
以《计算流体动力学及其应用》课本上166页处例子为参考,利用GAMBIT进行三维建模,具体问题为:冷水和热水分别自混合器两侧沿水平切方向流入,在容器内混合后经过下部渐缩通道流入等径的出流管,最后流入大气。混合器如图1.1所示,图1.1 混合器示意
具体绘图过程为:
1.创建混合器主体:高度为8,半径为10; 2.创建混合器的切向入流官:半径为1,长度为10,并对创建好的入流官进行180度关于Z轴对称复制;
3.将三个圆柱体合并为一个整体;
4.创建混合器主体下的圆锥:高度为5,小端半径为1,大端半径为10,方向Z轴反向;
5.创建出流小管:高度为5,半径为1;
6.将混合器的上部、圆锥部分以及下部出流小管合并为一个整体; 上述步骤完成后所得的图如图1.2所示。
图1.2 混合器整体配置图
二、网格划分:
1.对混合器内部流动区域划分网格:Spacing选择Interval size,并填入0.5,所得如图2.1所示
图2.1 混合器内部流动区域的网格2.检查网格划分情况:利用Examine Mesh功能查看底部圆锥面的网格划分情况如图2.2所示
图2.2 混合器底部圆锥面的网格划分情况
3.设置边界条件:①指定边界类型:将两个入流管分别命名为inlet-1和inlet-2,类型为VELOCITY_INLET;出流管命名为outlet,类型设为PRESSURE_OUTLET;②指定区域类型:Action设为Add,Name中输入FLUID,选择所有体。
4.输出网格文件:输出网格文件为1.mesh
三、求解计算
启动fluent软件,选择3d,进行三维计算,步骤如下:
1.检查网格并定义长度单位:①导入网格文件1.mesh;②选择Grid/Check命令,结果反馈如图3.1所示;③光顺网格;④确定长度单位:选择Grid/Scale命令,单位选择cm;⑤显示网格:如图3.2所示
图3.1 网格检查情况
图3.2 fluent中显示网格
2.确定计算模型:①设置求解器:Slover选择Pressure Based,Formulation选择Implicit,Space选择3D,Time选Steady;②启动能量方程;③选择湍流模型:选择k-epsilon[2 eqn];3.定义材料属性:water-liquid 4.设置边界条件:①inlet-1速度为1m/s,湍流强度为5,入流口直径为2,温度为320;②inlet-2速度为1m/s,湍流强度为5,入流口直径为2,温度为280;③设置出流口的边界条件:Gauge Pressure设为0,湍流强度和水力直径分别为10和2,温度为300 5.设置求解器参数:①设置求解器:Pressure设为0.3,Density设为1,Body Forces为1,Momentum为0.7;②求解初始化;③设置残差监视器:Option选择Plot 6.保存Case文件为1.cas 7.迭代求解计算:次数选为200次,迭代接近200时,计算收敛,曲线图如图3.3所示。
8.保存Data文件为1.dat
图3.3残差曲线
四、结果分析
读取之前保存的计算结果数据,进行结果分析 1.创建等值面
2.绘制温度和压力分布,结果如图4.1,图4.2
图4.1温度分布图
图4.2压力分布图
3.显示垂直面上的速度矢量如图4.3
图4.3速度矢量图
五、学习心得
通过本次课的学习,大致了解了CFD的原理和利用CFD进行模拟计算的过程,为以后进行更为深入的学习相关知识提供一有力的工具,同时,通过实例的模拟计算,熟悉了相关软件的使用过程。但是,在这门课的学习过程中,也意识到自身的知识和技能储备仍不足,以后应加强学习。
第四篇:个人cfd经验总结
借宝地写几个小短文,介绍CFD的一些实际的入门知识。主要是因为这里支持Latex,写起来比较方便。
CFD,计算流体力学,是一个挺难的学科,涉及流体力学、数值分析和计算机算法,还有计算机图形学的一些知识。尤其是有关偏微分方程数值分析的东西,不是那么容易入门。大多数图书,片中数学原理而不重实际动手,因为作者都把读者当做已经掌握基础知识的科班学生了。所以数学基础不那么好的读者往往看得很吃力,看了还不知道怎么实现。本人当年虽说是学航天工程的,但是那时本科教育已经退步,基础的流体力学课被砍得只剩下一维气体动力学了,因此自学CFD的时候也是头晕眼花。不知道怎么实现,也很难找到教学代码——那时候网络还不发达,只在教研室的故纸堆里搜罗到一些完全没有注释,编程风格也不好的冗长代码,硬着头皮分析。后来网上淘到一些代码研读,结合书籍论文才慢慢入门。可以说中间没有老师教,后来赌博士为了混学分上过CFD专门课程,不过那时候我已经都掌握课堂上那些了。
回想自己入门艰辛,不免有一个想法——写点通俗易懂的CFD入门短文给师弟师妹们。本人不打算搞得很系统,而是希望能结合实际,阐明一些最基本的概念和手段,其中一些复杂的道理只是点到为止。目前也没有具体的计划,想到哪里写到哪里,因此可能会很零散。但是我争取让初学CFD的人能够了解一些基本的东西,看过之后,会知道一个CFD代码怎么炼成的(这“炼”字好像很流行啊)。欢迎大家提出意见,这样我尽可能的可以追加一些修改和解释。言归正传,第一部分,我打算介绍一个最基本的算例,一维激波管问题。说白了就是一根两端封闭的管子,中间有个隔板,隔板左边和右边的气体状态(密度、速度、压力)不一样,突然把隔板抽去,管子内面的气体怎么运动。这是个一维问题,被称作黎曼间断问题,好像是黎曼最初研究双曲微分方程的时候提出的一个问题,用一维无粘可压缩Euler方程就可以描述了。
这里
这个方程就是描述的气体密度、动量与它们各自的流量(密度流量)随空间变化(和能量
随时间的变化(,能量流量),动量流量)的关系。
在CFD中通常把这个方程写成矢量形式
这里
进一步可以写成散度形式
一定要熟悉这种矢量形式
以上是控制方程,下面说说求解思路。可压缩流动计算中,有限体积(FVM)是最广泛使用的算法,其他算法多多少少都和FVM有些联系或者共通的思路。了解的FVM,学习其他高级点的算法(比如目前比较热门的间断有限元、谱FVM、谱FDM)就好说点了。针对一个微元控制体,把Euler方程在空间积分
用微积分知识可以得到
也就是说控制体内气体状态平均值的变化是控制体界面上流通量的结果。因此我们要计算的演化,关键问题是计算控制体界面上的。
FVM就是以这个积分关系式出发,把整个流场划分为许多小控制体,每个控制体和周围相邻的某个控制体共享一个界面,通过计算每个界面上的通量来得到相邻控制体之间的影响,一旦每个控制体的变化得到,整个流场的变化也就知道了。
所以,再强调一次,关键问题是计算控制体界面上的。初学者会说,这个不难,把界面上的有道理!
插值得到,然后就可以计算
。咱们画个图,有三个小控制体 i-1到i+1,中间的“|”表示界面,控制体i右边的界面用表示,左边的就是。
| i-1 | i | i+1 |
好下个问题:每个小控制体长度都是?
如何插值计算界面上的最自然的想法就是:取两边的平均值呗,但是很不幸,这是不行的。
那么换个方法?直接平均得到
还是很不行,这样也不行。
?
我靠,这是为什么?这明明是符合微积分里面的知识啊?
这个道理有点复杂,说开了去可以讲一本书,可以说从50年代到70年代,CFD科学家就在琢磨这个问题。这里,初学者只需要记住这个结论:对于流动问题,不可以这样简单取平均值来插值或者差分。如果你非要想知道这个究竟,我现在也不想给你讲清楚,因为我眼下的目的是让你快速上手,而且该不刨根问底的时候就不要刨根问底,这也是初学阶段一种重要的学习方法。好了,既然目的只是为了求,我在这里,只告诉你一种计算方法,也是非常重要、非常流行的一种方法。简单的说,就是假设流动状态在界面是不连续的,先计算出界面它们用某种方法计算出
两边的值,和,再由
。上述方法是非常重要的,是由一个苏联人Godunov在50年代首创的,后来被发展成为通用Godunov方法,著名的ENO/WENO就是其中的一种。好了,现在的问题是: 1 怎么确定2 怎么计算和
是均
对于第一个问题,Godunov在他的论文中,是假设每个控制体中匀分布的,因此
第二个问题,Godunov采用了精确黎曼解来计算
。什么是“精确黎曼解”,就是计算这个激波管问题的精确解。既然有精确解,那还费功夫搞这些FVM算法干什么?因为只有这种简单一维问题有精确解,稍微复杂一点就不行了。精确解也比较麻烦,要分析5种情况,用牛顿法迭代求解(牛顿法是什么?看数值计算的书去,哦,算了,现在暂时可以不必看)。这是最初Godunov的方法,后来在这个思想的基础上,各种变体都出来了。也不过是在这两个问题上做文章,怎么确定,怎么计算
。Godunov假设的是每个小控制体内是均匀分布,也就是所谓分段常数(piecewise constant),所以后来有分段线性(picewise linear)或者分段二次分布(picewise parabolic),到后来ENO/WENO出来,那这个假设的多项式次数就继续往上走了。都是用多项式近似的,这是数值计算中的一个强大工具,你可以在很多地方看到这种近似。
Godunov用的四精确黎曼解,太复杂太慢,也不必要,所以后来就有各种近似黎曼解,最有名的是Roe求解器、HLL求解器和Osher求解器,都是对精确黎曼解做的简化。
这个多项式的阶数是和计算精度密切相关的,阶数越高,误差就越小。不过一般来说,分段线性就能得到不错的结果了,所以工程中都是用这个,Fluent、Fastran以及NASA的CFL3D、OverFlow都是用这个。而黎曼求解器对精度的影响不是那么大,但是对整个算法的物理适用性有影响,也就是说某种近似黎曼求解器可能对某些流动问题不合适,比如单纯的Roe对于钝头体的脱体激波会算得乱七八糟,后来加了熵修正才算搞定。
上次(http://gezhi.org/node/399)说到了求解可压缩流动的一个重要算法,通用Godunov方法。其两个主要步骤就是 1 怎么确定2 怎么计算和
这里我们给出第一点一个具体的实现方法,就是基于原始变量的MUSCL格式(以下简称MUSCL)。它是一种很简单的格式,而且具有足够的精度,NASA著名的CFL3D软件就是使用了这个格式,大家可以去它的主页(http://cfl3d.larc.nasa.gov/Cfl3dv6/cfl3dv6.html)上看手册,里面空间离散那一章清楚的写着。MUSCL假设控制体内原始变量(就是)的分布是一次或者二次多项式,如果得到了这个多项式,就可以求出控制体左右两个界面的一侧的值和。
我们以压力p为例来说明怎么构造这个多项式。这里我只针对二次多项式来讲解,你看完之后肯定能自己推导出一次多项式的结果(如果你搞不定,那我对你的智商表示怀疑)。OK,开始 假设,这个假设不影响最终结论,因为你总可以把一个区间线性的变换到长度为1的区间。
假设压力p在控制体i内部的分布是一个二次多项式,控制体i的中心处于和。
实
处,左右两个界面就是这里先强调一个问题,在FVM中,每个控制体内的求解出来的变量际上是这个控制体内的平均值所以。
。我们知道似表示为,和,等距网格情况下和处的导数可以近
那么
由上述三个有关a,b和c的方程,我们可以得到
这样就可以得到f(x)的表达式了,由此可以算出通常MUSCL格式写成如下形式
对应我们的推导结果(二次多项式假设)。
但是这不是最终形式。如果直接用这个公式,就会导致流场在激波(间断)附近的振荡。因为直接用二次多项式去逼近一个间断,会导致这样的效果。所以科学家们提出要对间断附近的斜率有所限制,因此引入了一个非常重要的修改——斜率限制器。加入斜率限制器后,上述公式就有点变化。
和
这里是Van Albada限制器
是一个小数(),以防止分母为0。
密度和速度通过同样的方法来搞定。
密度、速度和压力被称作原始变量,所以上述方法是基于原始变量的MUSCL。此外还有基于特征变量的MUSCL,要复杂一点,但是被认为适合更高精度的格式。然而一般计算中,基于原始变量的MUSCL由于具有足够的精度、简单的形式和较低的代价而被广泛使用。OK,搞定了。下面进入第二点,怎么求
。关于这一点,我不打算做
和详细介绍了,直接使用现有的近似黎曼解就可以了,都是通过计算得到。比如Roe因为形式简单,而非常流行。在CFL3D软件主页(http://cfl3d.larc.nasa.gov/Cfl3dv6/cfl3dv6.html)上看手册,附录C的C.1.3。
想了一下,还是把Roe求解器稍微说说吧,力求比较完整。但是不要指望我把Roe求解器解释清楚,因为这个不是很容易三言两语说清的。Roe求解器的数学形式是这样的
显然这个公式的第一项是一个中心差分形式,先前说过简单的中心差分不可行,原因是耗散不足导致振荡,说得通俗点就像一个弹簧,如果缺乏耗散(阻尼)它就会一直振荡。“耗散”这个术语在激波捕捉格式中是最常见的。第二项的作用就是提供足够的耗散了。
这里了。只有和已经用MUSCL求得了,的定义在第一讲中已经介绍是还没说过的。
这个矩阵可以写成特征矩阵和特征向量矩阵的形式
而,和的具体表达式在许多书上都有,而且这里的矩阵表达有问题,所以就不写了。
是由、和代入计算得到。而、和采用所谓Roe平均值
这才是Roe求解器关键的地方!
总结一下,就是用Roe平均计算界面上的气体状态,这样句分析一下。,然后计算得到
就可以得到了。如果有时间,我后面会找一个代码逐总之,计算还是很不直接的。构造近似黎曼解是挺有学问的,需要对气体动力学的物理和数学方面有较深的理解。通常,如果不是做基础研究,你只需要知道它们的特点,会用它们就可以了,而不必深究它们怎么推导出来的。
第五篇:CFD培训心得体会-sc
CFD培训心得体会
2018年3月31日至4月2日,我在北京了参加计算流体动力学(Computatio-nal Fluid Dynamics,CFD)的培训,十分感谢室领导给我这次外出学习的机会。3天时光的培训虽很短,但从中学到的知识却使我受益匪浅,受益良多,使我更深刻的认识到了CFD的强大之处,在很大程度上开拓了我的眼界、增强了自我的业务潜力,同时也认清了自身离一个优秀的CFD使用者之间所存在的差距,明确了自我今后的学习发展方向,为今后的学习和业务技能培训奠定了坚实的基础。现将外出培训学习所学总结如下:
1、对CFD及其软件模块有了进一步的认识:
计算流体力学可用于多相流、化学组分流、多物理场耦合、一般流动问题、流体换热问题、运动部件等应用领域的问题。具体到常用的软件模块有SCDM,ICEM,fluent等。这些模块都有各自擅长的领域,并且相互之间是可以进行互联互通的。
SCDM模块的使用,主要用于三维几何建模,功能和使用操作方面类似于常用的三维建模软件。ICEM软件模块主要用于网格的划分,网格划分是一项细致活儿,可以毫不夸张的说这是一门艺术。因为工程计算上多采用成熟的程序或商业软件作为求解器,只要设置好初始条件、物理参数和收敛条件,计算工作基本上由计算机来完成。网格的生成工作约占整个项目周期的80%~95%,生成一套高质量的网格将显著提高计算精度和收敛的速度,对于复杂模型,网格划分显得尤为重要。fluent模块具有丰富的物理模型、先进的数值方法和强大的前后处理功能,并且还随着其软件的升级而进一步的完善和丰富。可用于计算的物理问题包括可压与不可压流体、耦合传热、热辐射、多相流、粒子输送过程、化学反应和燃烧问题。还拥有诸如气蚀、凝固、沸腾、多孔介质、相传介质、非牛顿流、喷雾干燥、动静干涉、真实气体等大批复杂现象的使用模型。
2、业务技能方面有了进一步提高:
在这几天里,我们进行了ICEM-CFD网格划分与Fluent通用技术培训,主要内容有CFD基础、应用场合以及基本的工作流程,看老师操作和自己操作是并一回事,这是一门十分重视实操的软件 注重理论学习,理论知识得到充实:以前看书的时候总想着看完就完了,也就是为了应付某个考试而看,可透过这次培训,使我认识到医学领域里的理论知识就好比盖房子打的地基一样,需要相当的牢固、扎实。是任何科研与操作的先决条件,要求相当的严谨,一环扣一环。
一些流体的物理参数和紊流模型的经验系数等
不能知其然不知其所以然。软件模拟只是数字化的模型计算,主要还是靠人为来选择合理正确的模型和参数设置。这就需要我们将实际问题抽象简化成为已知的一种物理模型或多种物理模型的组合。
3、下一步学习计划:
(1)进一步扎实理论功底,掌握流体力学基础理论。熟悉常用流体模型极其参数设置,如雷诺数和瑞利数等。
(2)进一步强化软件操作,结合已知案例熟悉操作流程,增强自身技术能力。
(3)结合现有的工作需求,独立自主解决实际工作中的相关流体计算问题,以达到学以致用的目的。
总之,在此次培训学习中,我付出了一定的时光、精力,相比我所得到的知识、经验与感悟,后者更值。在理论知识和实践技能方面都有了必须提高,更重要的是视野的开拓,思维的拓宽,理念的转变是我最大的收获。总体实现了既定目标,在今后的工作中,我将结合培训所得,使自身工作能力得到进一步提高,结合我们的实际状况,以最好的方式回报组织的培养。