绿荷雨丝 发表于 2005-7-13 17:27

cfd里的数值粘性

<P>数值粘性的根源 <BR>   从可压缩无粘流有限体积法说起为。最初有限体积法中是假设cell内部物理量的值是均匀分布的,也就是说cell内部所有点的状态都是一样的。如果在这样cell交界面上采用精确解法(如精确Remann解法),求出来的解当然和真解不同,激波被抹平了。这时候误差来源于上面说的均匀分布近似。事实上,激波被抹平的唯一解释是数值粘性的存在。因此所以完可以得出结论,均匀分布近似带来了数值粘性。事实上这一点也有理论上的证明。 <BR>   经验上分析,均匀分布近似必然会使得cell内部理论上非均匀分布的物理量被强制的均匀“再分配”,相当于人工粘性,即数值粘性。一些改进的格式试图采用其它分布假设来改进均匀分布近似的过大的数值粘性,比如线性分布近似、三次曲线近似、光滑三次曲线近似等等,也就是各种MUSCL、TVD、ENO、WENO格式中的“重构造”措施。但是这些“重构造”其实也是某种形式的“再分配”。经验上感觉,只要“再分配”相对真解有所偏离,就一定会产生数值粘性。这种数值粘性可能是正耗散的(抹平间断),也可能是负耗散的或者耗散不足的(导致间断附近的振荡)。事实上,NS方程中扩散项的形式是类似Laplace算子的形式,这种算子在物理上的作用就是具有将陡峭分布抹平的“再分配”。 <BR>   在很多其它方法中,这种“再分配”的措施是广泛存在的。比如ALE算法中,当网格变形很大时必须重新生成网格,再把旧网格上的解“重映”到新网格上,这可以看作一种“再分配”;半拉格朗日算法中,每个时间步计算时质点移动的终点通常不在网格点上,也需要将终点的状态插值到网格点上;一些基于曲线网格的Lattice Boltzmann算法中,要么涉及到差分或者FVM的算法(这两者必然涉及到“再分配”),要么涉及到类似半拉格朗日算法中的粒子分布函数的“再分配”…… FEM的CFD算法,贫僧不清楚,就不多说了。但是只要对流体状态的空间分布做了某种连续性假设,就可以说存在某种形式的“再分配”,也就引入数值粘性,差别只是多少的问题。例外的也许是基于特征线的计算,本身在算法模型上似乎不引入数值粘性。 <BR>   就目前来说,对于间断的计算,数值粘性是必要的。如果没有数值粘性,间断解无法在离散网格点上被分辨出来。但是对于一些粘性作用需要精确计算的情况,数值粘性往往是有害的,必须保证物理粘性比数值粘性大很多——苛刻的网格Re限制的存在就是一个佐证。很多时候,“再分配”产生的数值粘性无法精确控制,最多只是控制其量级(FVM就是如此,我从来没有看到有人申明数值粘性到底是多大)。 </P><BR>
<P>数值粘性的控制和避免 <BR>对数值粘性的控制和避免有不少方法,贫僧无法一一指出,这里给出偶知道的几个实例: <BR>1 双曲方程FDM/FVM计算中构造高阶格式时,人工压缩的思想是很有代表性的。基本上,它们是在方程中加入一些负耗散的修正项后再离散,这些负耗散的修正项可以补偿格式的修正方程中的耗散项。此外,前述的各种高阶“重构造”方法都是试图减小不必要的数值粘性的一些努力。不过这些手段是在量级上控制数值粘性。贫僧以为,这些数学手段的使用使得FDM/FVM高精度有些入了魔道——分析复杂、编程高难度、还可能带来额外的计算限制。 </P><BR>
<P>2 适用于不可压粘性流的涡度法中,涡量方程被分解为一个无粘的涡量对流方程和一个表达涡量扩散的泊松方程,求解无粘的涡量对流方程时,采用了特征线方法(实际上是Lagrangian措施),避免了数值粘性;物理粘性的影响仅仅在容易高精度求解的泊松方程中求解出来。相对FDm/FVM,这种特征线-lagrangia方法(贫僧生造的词)具有一定的优越性,除了数值粘性的优点之外,它的时间步长限制比FDM/FVM小得多,(如semi-lagrangian方法数学上是无条件稳定的),精度上讲时间步长和网格尺度无关,只和流场状态的梯度有关。 </P><BR>
<P>3 而在一类基于曲线网格的Lattice Boltzmann算法(泰勒展开和最小二乘LBM,TLLBM)中,采用了一些巧妙的数学技巧(用泰勒展开构造超定隐式插值线性方程组,用最小二乘求取此超定方程最优解)来实现一种隐式的最优插值,避免一般插值再分配带来的较大的数值粘性。 </P><BR>
<P>4 还有一类同时具有LBM特点和半拉格朗日算法特点的adaptive lbm中,通过对守恒量迁移的修正来抵消“再分配”,彻底剔除“再分配”带来的数值耗散。 </P><BR>
<P>这里附带说点LBM。这种方法式基于Boltamann方程——可以说是连续介质动力学的最底层方程了,它描述粒子分布的迁移与碰撞关系。采用简单的BGK碰撞模型,通过特殊的离散方式得到lattice boltamann方程。在标准网格上,这种方程的求解不再引入近似(格式、插值等),因此如果不考虑边界条件处理带来的误差,理论上只有计算机有限字长导致的舍入误差。lattice boltamann方程可以通过一种复杂而巧妙的数学技巧(Chapman-Enskog展开),按照不同尺度恢复到NS方程或者更高阶的Burnett方程、super Burnett方程。因此在标准网格上的lattice boltamann方法是不含有FDM/FVM中的修正方程中的额外耗散和色散项的。可以说标准网格上的lattice boltamann方法是具有相当精度的。事实上,有文献对比LBM和谱方法的二维各向同性湍流演变过程的DNS模拟结果,发现两者具有高度的一致性。 <BR>在非标准网格上,LBM可能采取某些“再分配”技巧使得引入的误差不改变最终恢复到NS方程的形式(即仍然不引入同尺度的额外项),因此可以使得它可以很好的控制数值粘性。 </P>

zhjberry 发表于 2005-11-4 20:32

不错

kevinhcj 发表于 2005-11-24 21:04

<P>好!谢谢!</P>

Robywl82 发表于 2006-3-5 08:52

谢谢!!!
页: [1]
查看完整版本: cfd里的数值粘性