找回密码
 注册
查看: 11101|回复: 23

马考马克格式计算流场的心得

[复制链接]
发表于 2002-5-25 16:21:49 | 显示全部楼层 |阅读模式

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

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

x
[这个贴子最后由soybean217在 2002/06/06 09:05am 编辑]

马考马克格式计算流场的心得
  本人是大四学生,毕业设计的题目是亚音速长尾管的内流场计算,计算采用无粘马考马克格式解欧拉方程。
  背景简介:长尾管是火箭发动机配平重心的一种装置,在战术导弹中得到广泛的应用,亚音速长尾管的位置在燃烧室与喷管之间,本题的虽然是亚音速长尾管的计算,但是其计算时包含一个拉瓦尔喷管,所用方案与普通喷管的计算方案相同。一般喷管为轴对称喷管,所以只需进行二维的轴切平面计算即可。
  算例难点:火箭发动机拉瓦尔喷管的特点是,入口亚音速,出口超音速,入口压力比较高,从而喷管内激波明显,计算跨音速时会出现很大的震荡,马考马克无粘计算时必须要加入人工粘性才能使计算收敛。
  计算时遇到的问题及其解决:
    1、网格的生成,采用先生成物理域网格,再进行坐标变换计算,对于熟悉编程的人不是什么难事,这里的关键在于网格的密度的选择,网格密度与计算是否能进入迭代和计算所需时间、所需的人工粘性系数有紧密关系
进入迭代:因为计算中需要压力不能为负,如果网格生成不当会在第一次迭代时,压力产生负值,本人在计算中观察到这样的现象,但是没有对其进行分析。
    计算所需时间:时间增长倍数是密度增长倍数的3次方左右。
    所需的人工粘性系数:网格越密,激波捕捉越困难,所需人工粘性密度越大。
    另外在全幅还是半幅计算的选择也是网格生成决定,全幅计算结果直观好看一些,半幅计算时间短,是全幅计算的一半,本人采用的是全幅计算。
    2、初值问题:流场各离散的网格点的初值,根据书上的说与结果并没有什么联系,但是一定要给定初值,因为如果没有初值或者不为零,也许进入计算以后会发生意想不到的结果。
    3、边界问题,这是欧拉方程计算,乃至其他方程计算的重要问题,边界分为进口边界、出口边界、壁面边界三种。本次计算采用进口给定3个条件(因为亚音入流),总温、总压、气流入口角,入口速度采用外推法,直接等于相邻内点速度,其他数据根据气体动力学滞止参数与静参数关系计算得出;出口不给定条件(因为超音出流),直接全部使用外推法;壁面边界给定一个条件,因为是无粘计算,给定壁面法向逆变速度为零。
    在计算类似问题时一定要留心边界问题这个定解条件,它是计算的收敛和得到合理结果的必要条件,在二维情况下,超音入流给定4个入口条件,压音出流给定1个出口条件,每一步计算以后应根据本次计算的结果重新计算值,赋给边界。
    4、时间步长的问题,马考马克格式的CFL条件可以在各种书籍上查到,值得注意的是这个值是变化的,在每次迭代前计算出各点允许的时间步长,取其中的最小值,然后再乘一个时间系数(本次计算取得是.8),得到本次迭代的时间步长,而且这个计算中所用的参数是物理域中的参数,与不是计算域中的参数,这一点要分辨。
    5、粘性系数的问题:在有激波的情况,要采用马考马克格式必须加入人工粘性项,否则在计算到声速附近时,计算会迅速震荡发散。在诸多参考书中都介绍过人工粘性项的加法,根据我的经验至少要加入一个二阶粘性项,计算才会收敛。但是参考书中对于怎么加,比如二维的加法没有做详细的介绍,其实简单有效二维的人工粘性就是把两个一维的相加就可以了。个人认为人工粘性项的式子给得最清晰的是参考书1中的式子,当然4阶粘性就被省略了,但是在粘性系数的选择上,为了计算可以得到结果,开始不妨给大一些.5、1我都试验过,无非是损失大一些,而且这个数字和网格密度的选择关系非常大,应在有了结果以后自行调整。我最后在比较密的网格密度下采用.4的系数,而不是书上的0-.25。和时间步长的计算一样,各网格点的粘性项也是一个每次迭代前进行计算的值,计算中所用的参数也是物理域中的参数,而不是来自计算域,比如网格的步长等等。
    6、结果数据输出利用Tecplot软件就可以得到良好的效果,如果你还没有这个软件,去找一个先。
    7、如果有范例程序,最好在别人的基础上改编,这算是我自己的经验体会了,我自己用C编了三个版本,都算是无疾而终,因为大量的时间花在编写的差错上,非常的得不偿失,特别是在没有出结果的时候,对于我这样的初学者,很难知道到底是程序的疏忽还是格式算法上的错误,最终程序是在别人的程序基础上改编的,虽然两个程序差异还是比较大,但是一个能有结果的程序和自己编一个很久都不能出结果的程序对进度的影响是截然不同的,在此也要感谢原程序的作者。最终的程序是用Fortran90编写的,在计算方面,Fortran对其他语言还是保持着一定的速度优势。
    8、程序的调试是一件非常需要耐心的事,而且对于这样的计算程序来说,要达到收敛是很花时间的,比如这个程序在100*20的网格下,迭代步是6000多,而且E的允许误差才算到100,有些要求是算到1e-6,那么估算一下一下大约需要6w次左右,而且这样的网格密度结果并不好看,在200*40网格密度下,E的允许误差100,在本人的过时的笔记本PII266上算了近20000步,3个多小时。根据我的经验,网格一开始可以取疏一些,允许误差可以取大一些,粘性取大一些,对程序调试的总时间消耗有很大的减少,对于计算过程中的最大挑战是在捕捉激波过程中的数据的震荡,粘性足够大才能解出这个结果。这个程序改了10个Fortran的版本才得到结果。
  对计算结果的一些疑问:
在计算面积比较小的喷管的算例的时候,出口马赫数的损失比较少,但是在计算我自己的算例的时候,出口马赫数的损失就比较大了,带我毕设的博士用有限体积法算出出口马赫数为3.1,而我的只能算到2.67,气体动力学查表一定是3以上,这么大的误差的原因,我就不得而知了。因为时间的关系,我也不准备在细究,希望有前辈专家不吝指点。
  一些感想:
虽然有许多商业计算流体软件,但是操作起来还是比较的复杂,比如Gambit网格的生成虽然强大,但是光是安装Exceed模拟X-Windows都令人头疼,而中文方面的参考资料又很缺乏,所以我想这些都会限制这些软件的发展,我的一个同学毕设做Fluent也是不太顺利,所以商业软件要在中国取代自主编程计算还有很长的路要走,虽然这是一个必然的趋势,人家算得又快又好又准确为什么不用呢?另外作为流体专业的学生仅仅掌握Fluent也不够,因为没有经过自己的编程经验,很多理论上的东西是体会不到的,也是很难联系实际的。
  也许毕业以后我再也不会接触CFD方面的东西,如果你对我的程序感兴趣,可以到如下地址下载:
http://soybean217.myrice.com/download/cfd02.zip
  才(6K),如果这个地址不能下载(因为的却是经常不能下东西)可以给我邮件索要:
soybean217@sina.com.cn
  这是Fortran版本的,需要Fortran90的编译器,修改物理网格就可以适用于各种亚音入流、超音出流的各种喷管。在Visual Fortran 6,0下编译通过得到结果。
  在此向此程序的原作者致谢,虽然我还不知道它的名字!
  在毕业设计中在这些书中得到莫大的帮助,希望对你有用。
参考书1:《计算流体力学基础》,北航版
参考书2:《计算流体力学》,哈工程版,1998.5
参考书3:《计算流体力学》,清华版
  希望各位前辈指正。
  如果你不是在我的主页看到这篇文章,欢迎访问我的主页soybean217.myrice.com

  原来可以上传附件,真是笨啊,呵呵。程序在附件里面。

发表于 2002-5-26 00:44:36 | 显示全部楼层

马考马克格式计算流场的心得

太好啦!此论坛就需要象这样的帖子。
发表于 2002-5-26 06:21:39 | 显示全部楼层

马考马克格式计算流场的心得

不错。
发表于 2002-5-27 01:49:24 | 显示全部楼层

马考马克格式计算流场的心得

前辈我给你指导一下子,你的出口马赫数的计算误差是人工粘性带来的
自己去想吧,呵呵
 楼主| 发表于 2002-5-27 13:19:04 | 显示全部楼层

马考马克格式计算流场的心得

  但是我也有疑问就是,当我给定的人工粘性系数变化非常大时,经过数值试验,出口马赫数的影响确是非常的小,在.01的量级上,所以这一点令我很迷惑,如何可能,前辈可否给出些这方面的参考书,方便我在分析结果的时候使用?
  而且不加人工粘性,这种跨声速的计算是一定不收敛的,那么这样的计算结果岂不是注定有很大的误差,而且这个误差怎么分析,并没有参考书进行详述!
发表于 2002-5-27 14:56:33 | 显示全部楼层

马考马克格式计算流场的心得

前辈我觉得不应该用这个格式
 楼主| 发表于 2002-5-28 12:26:16 | 显示全部楼层

马考马克格式计算流场的心得

  那么用什么格式?很多格式都需要加入人工粘性,太复杂的格式和方法显然超越了我一个本科生毕业设计的范围了。而且这个格式在面积比小的喷管的,壁面修改以后,结果是不错的,比如出口2马赫左右的喷管,和simple法计算的结果非常接近。
发表于 2002-5-28 17:09:15 | 显示全部楼层

马考马克格式计算流场的心得

拜托大哥,你的程序怎么找不到啊?
 楼主| 发表于 2002-5-29 07:11:50 | 显示全部楼层

马考马克格式计算流场的心得

  给我邮件或者留下你的邮箱,我发给你。
发表于 2002-5-29 09:52:24 | 显示全部楼层

马考马克格式计算流场的心得

两天前就已经发到你邮箱了。我的邮箱是:lmz@xj.cninfo.net
发表于 2002-7-13 11:07:57 | 显示全部楼层

马考马克格式计算流场的心得

我也想看看你的程序 xjzhangcfd@sohu.com
谢谢
发表于 2002-7-15 07:45:36 | 显示全部楼层

马考马克格式计算流场的心得

文章写的很棒. 你的结果不是特精确, 原因肯定是格式的问题, 如果指导你的用同一网 格.
   你可选用所谓的高解Roe 或 van Leer 格式, 结果应没问题.
   在非结构网格上算高马赫钝体绕流问题马考马克格式可能是比较好的格式, 别的高解
高阶格式有麻烦.
    欧拉非稳态计算, 如果网不太均匀或较密,可选用双步长算法(dual-time stepping).
否则你的计算速度太慢. 黏性流, 你必须用双步长算法.
发表于 2003-3-15 21:23:14 | 显示全部楼层

马考马克格式计算流场的心得

我也是新手自己编程计算,想参考你的程序一下:邮箱:hnzp950612@163.com
发表于 2003-3-16 20:55:32 | 显示全部楼层

马考马克格式计算流场的心得

请允许我学习一下你的程序
我的e_mail:
wang_xjtu@sohu.com
发表于 2003-3-18 19:33:09 | 显示全部楼层

马考马克格式计算流场的心得

下面引用由newcfd2002/07/15 07:45am 发表的内容:
文章写的很棒. 你的结果不是特精确, 原因肯定是格式的问题, 如果指导你的用同一网 格.
   你可选用所谓的高解Roe 或 van Leer 格式, 结果应没问题.
   在非结构网格上算高马赫钝体绕流问题马考马克格式可能是比 ...

这恐怕一年的时间没法完成吧!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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