找回密码
 注册
查看: 3359|回复: 9

应该如何从物理和数值上来理解“流动的刚性问题”?

[复制链接]
发表于 2013-1-10 21:37:51 | 显示全部楼层 |阅读模式

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

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

x
最近由于课题组的需要,我研究了一下预处理法(《计算流体力学教程》,张德良著)。书中提到预处理法可以用来消除“流动的刚性问题”并且提高稳态问题求解的速度,可是我始终无法理解“流动的刚性问题”反应的是一种什么物理现象?又是一种怎样的数值特性?
  在数值分析中(《数值分析》,李庆扬),使用预处理法来求解病态问题。这是否就是计算流体力学中使用“预处理法”的数值原因?

评分

1

查看全部评分

发表于 2013-1-11 00:38:17 | 显示全部楼层
这个是迭代解法里面常提到的概念吧,比如用迭代法求解:

0.00000000001x=0.00000000002
x+y=2
写为
Az=B
A=({0.00000000001, 0},{1,1}),z=(x,y), B=(0.00000000002,2)
当迭代到某一步的时候
y^k=2,x^k=0时,按照一般误差的定义:

|Az^k-B|<10^{-9}

按一般收敛判断,以为收敛了,但实际上与真实解差别非常大。假定现在第一式左右乘上100000000000,把方程变为x=2,那么,这种情况就会消除。这个过程就解释了所谓“刚性”的含义和处理办法。物理上就是流动物理量发生急剧变化时,导致离散的线性代数方程系数矩阵对角线的值差别异常大。
发表于 2013-1-11 00:39:30 | 显示全部楼层
另外,你遇到问题会不会google百度一下,或者看一两本大家听过的书?
 楼主| 发表于 2013-1-11 08:39:46 | 显示全部楼层
您说的我知道,这个称之为“病态方程组”,可以通过所谓的“预处理法”或者高精度算法解决。这跟流体力学里的“流动刚性”是一回事吗?
 楼主| 发表于 2013-1-11 09:45:25 | 显示全部楼层
另:我提出这个问题已经查阅了很多相关资料,很遗憾我没有形成正确的认识;所以我想与大家讨论一下。而且,我把我大家的认识聚集于此,以后大家有同样的问题的话,就不会花大量时间去书海里找答案了,希望对大家有所帮助,在交流中共同提高。谢!
发表于 2013-1-11 23:54:18 | 显示全部楼层
好吧,你都懂了我也就没必要回复了。
发表于 2013-1-13 03:06:49 | 显示全部楼层

回复 1# NeneLee 的帖子

关于你的“流动的刚性问题”,我说说我的理解和看法:
1.从你的提问来看,你主要针对的是计算流体力学中的刚性问题;
2.关于计算流体力学里面的刚性问题,通常指的是流体力学问题的控制方程组的刚性。
这类”刚性”,泛指方程组的系数矩阵是奇异的,也即最大特征值与最小特征值绝对值的量级相差较大,从而引起数值求解的困难。
对于流体力学问题的控制方程组的刚性,一般而言有几类:
(1)对流项引起的刚性
     这类问题的典型例子就是低马赫数可压缩流动问题。
(2)源项引起的刚性
     这类问题的典型例子就是部分刚性有限速率化学反应流动问题。
对于(1)和(2),可以从物理和数值两个方面来理解,对于非定常NS系统,通过特征变换变换成为波动方程,其中波速就是系数矩阵的特征值,当系统的特征值分布奇异是,也就代表着这些波动方程的"波速"差别极大,这样的系统必然是很难耦合,是刚性的。反应在低马赫数可压缩流动问题,就是最大波速为U+C,最小波速为U,而U<<C,因此低马赫数可压缩是刚性的。对于部分有限速率化学反应流动问题,这类流动的一个显著特点就是化学反应速率差别很大,有的化学反应瞬间完成达到平衡,有的则极其缓慢,这样的系统也是刚性的,此时系统的特征值对应,也即”波速“,反应的是不同化学反应的速率。
(3)高阶格式引起的刚性
     这类问题主要是一般高阶格式由于引入的节点模板较多,从而较难保证对角绝对占优,从而引起系统奇异。
3. ”刚性”问题通常采用“预处理”技术。所谓“预处理”技术,实际上就是通过某种手段去修改矩阵的特性,到达满足其特征值分布较为均匀的目的。例如对于低马赫数可压缩流动问题,就是通过引入“虚拟声速”来达到减小“声速”的目的,使得O(u)~O(C),从而减小刚性。刚性化学反应流也是如此,通过引入“虚拟化学反应速率”来达到减小刚性的目的。
   这三类刚性问题我都处理过,有一点点体会和你分享一下。理解不一定正确,欢迎大家斧正。
发表于 2013-1-13 07:37:08 | 显示全部楼层
lwd1981 说得真好,我稍微补充一点点。

0)未预处理问题的线性方程为 A * u = b
刚性大意味着A 的condition number 很大 (condition number = lambda_max/lambda_min),
预处理意味着寻找一个预处理矩阵 P, 系统矩阵就变成 P*A, with a better, i.e., smaller,  condition number.
并且,新的问题 P * A * u = P * b
和原来问题解是一样的。

1)当然,难度在于如何寻找一个合适(计算简单,效果好)的预处理矩阵。最极端的情况,当然就是 P=inv(A)

2)  这件事情主要是应用在需要迭代求解过程的问题。




原帖由 lwd1981 于 2013-1-13 03:06 发表
关于你的“流动的刚性问题”,我说说我的理解和看法:
1.从你的提问来看,你主要针对的是计算流体力学中的刚性问题;
2.关于计算流体力学里面的刚性问题,通常指的是流体力学问题的控制方程组的刚性。
这类”刚性 ...
发表于 2013-1-15 11:49:02 | 显示全部楼层
7楼总结的很全面。我读博士的时候做过有限速率化学反应问题,这里面的刚性主要就是因为各个反应的特征时间尺度不同,并且有数量级上的差异导致的。由于有量级上的差异,使得计算的时间步长很难取。按照稳定性理论应该取为步长最短的一个,但取为这个超短的时间步长后,时间尺度很大的那个反应几乎永远都收敛不了。这种情况下采用所谓“预处理”就是把各个反应的时间尺度都统一到一个伪时间尺度上,然后各个反应就可以在差不多的计算步数以内得到收敛了。
发表于 2013-1-15 12:21:26 | 显示全部楼层
[8楼]主要是从数学的角度考虑。我来补充些物理上的一些处理方法。

(1)lambda_max和lambda_min常常对应流体系统中不同类的快、慢波,如声波、重力波、旋转波等。若有些波动(模态)对流动演变的作用不大,则可对原始方程(组)作某些近似,其结果就相当于数值上消去了lambda_max,从而减小了condition number。这种处理方法在流体力学数值求解中常称为“滤波”。

(2)关于化学反应的问题,[7楼]提到:“化学反应速率差别很大,有的化学反应瞬间完成达到平衡,有的则极其缓慢,这样的系统也是刚性的。”一个常用的处理方法就是所谓的“family species"近似,就是把那些“化学反应瞬间完成达到平衡”的一些元素合到一起,组成“族”元素。“族”元素内部的各元素始终假定处于平衡态(d/dt=0)并形成一定的“partition"。这时,原来对比如30个元素的问题就简化为比如3个元素加上4个“族”元素(总共7个元素)的缓慢演变问题,大大地减小了原问题的病态特性。

另外,一般情况下,若不计算Jacobi矩阵,不可能(或很难)设计出求解刚性问题的好算法。但对于化学反应问题,每增加一个化学反应式,其具体Jacobi矩阵中某元素的变化也可同时给出,即化学反应问题的Jacobi矩阵可解析给出。运用解析的Jacobi矩阵可设计出非常有效的算法来求解刚性问题。

[ 本帖最后由 coolboy 于 2013-1-15 12:27 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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