找回密码
 注册
查看: 7014|回复: 30

开发基于非结构任意网格的LBE求解器的感想

[复制链接]
发表于 2012-7-20 22:24:09 | 显示全部楼层 |阅读模式

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

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

x
以前一直搞FVM的, 最近开发了一个基于非结构任意网格的LBE求解器,发现收敛速度慢得出奇!

不知道诸位有个类似的经历没?

      标准的基于直角网格的LBM方法为什么比基于FVM的LBE方法收敛块呢? 难道是因为LBM是基于特征方向推

进,所以收敛要快些吗?

     如果是,那么基于有限体积的LBE方法是否也可以模拟这种思路?

     另外就是LBM本质是耦合求解低马赫数可压缩流动,必然收敛困难,为何标准LBM相对而言这个问题不是那么严重呢?

     还有就是郭照立老师的所谓半隐式方法,通过构造一个新的分布函数来化隐式为显,实质上是利用了对流项线性的特点,本质上不会对加速收敛有较大的作用。

      隐式方法能否加快收敛,按照陶文铨院士的观点是看能否加快边界信息向内部流场传递的速度,一般只有全流场耦合求解的隐式方法才能够做到。所以郭的方法不会对加速收敛起很大作用,就算有作用也只相当于Jaccobi迭代的作用。何雅琳老师的方法也一样,本质上都是Jaccobi迭代。对加速收敛作用有限。

       个人觉得,开发高效率的隐式LBE方法将是实现FVM-LBE适用化的关键!

        以上浅见,期盼高手交流,指教,呵呵
发表于 2012-7-20 23:34:20 | 显示全部楼层
LBE is a finite-difference method which works well with Cartesian meshes. It is NOT natural to apply LBE with unstructured grids -- you will face all sorts of problems. A more natural approach is the gas-kinetic scheme, which is a finite-volume method derived from kinetic equation.
 楼主| 发表于 2012-7-30 19:32:40 | 显示全部楼层

谢谢罗老师的回复

我个人觉得既然LBE本质上可以转化为人工压缩方法,那么就有可能,也应该能够找到同人工压缩性方法类似效率的方法,实际上目前人工压缩方法(ACM)结合一些高效的隐式推进技术,已经可以取得很好的效率了。
    另外,LBM确实编程很简单,但是这并不能掩盖其收敛效率低的事实。我想如果能够发展高效的隐式迭代技术结合LBM编程简单的优点,岂不是两全其美,如虎添翼,呵呵。
    从文献上来看,也有采用多种技术加速收敛的,尤其是类似NS方程的预处理技术。我觉得从NS方程来构造LBM的预处理技术确实是很好的手段,但是总觉得没有直接分析LBE本身的特性来的干脆直接。但是 ,很遗憾,目前还没看到类似的文章,我想主要是平衡分布函数的非线性,难于精确求其Jaccob举证吧。 LBE的非线性正好来自其碰撞项,抛开碰撞项,所有的预处理方法应该都不会高效率,因为没有接近问题的本质,本质上NS方程的非线性也是遗传这里的非线性。
     另外,我还发现,直接采用有限体积或者有限单元方法求解LBE,高阶格式比低阶格式收敛快,而且要收敛,主变量的残差至少下降4个量级。这一些都和基于预处理技术的低马赫数NS方程求解过程十分类似。
     还有,值得一提的是,目前LBM的预处理技术,只考虑了改善NS方程对流项的Jaccobi举证的条件数,事实上这只是加速收敛的必要条件,并不充分。预处理技术除了要改善对流项的条件数以外,通常还要改善方程中的数值粘性(通常是对流项离散带来的),数值粘性也需要匹配。这也是为什么高阶格式比低阶格式收敛快的原因。事实上,如果采用高阶DG计算低马赫数流动,甚至不用预处理技术也可以达到很到的收敛效率。LBM本质上利用了波动方程固有的特点:F(x,t)=F(x+u*dt,t+dt)的特点,类似CIP方法。但其依然有数值耗散值得分析。或许这也是预处理LBM并没有预处理NS那么高效的原因吧。
    一些粗浅的认识,望高手和老师们指正,欢迎讨论。谢谢。
 楼主| 发表于 2012-8-25 12:40:53 | 显示全部楼层
通过加速收敛技术改进,收敛速度和计算精度已有较大改观,发一张计算结果给自己庆祝一下,呵呵

[ 本帖最后由 lwd1981 于 2012-8-25 04:43 编辑 ]
Re10000.PNG
 楼主| 发表于 2012-8-25 12:41:40 | 显示全部楼层
网格
Vortex.PNG
发表于 2012-8-26 01:12:32 | 显示全部楼层

回复 3# lwd1981 的帖子

My previous reply was responding your question concerning development of "LBE on unstructured meshes", which I thought is not a very good idea for it will give up known advantages of LBE without gaining much.

I did not say anything about accelerating techniques. In fact, I strongly believe that accelerating techniques, such as multi-grid (MG) and implicit time-stepping methods, are in pressing need in LBE. However, it may not be so straightforward to "import" these techniques into LBE, which makes it challenging and yet interesting.

Go for it, if you can.

[ 本帖最后由 luo@odu.edu 于 2012-8-26 22:55 编辑 ]
发表于 2012-8-26 10:15:27 | 显示全部楼层
在直角网格中参数e=△x/△t 好理解,非结构网格中表示什么含义呢?
 楼主| 发表于 2012-8-26 13:45:36 | 显示全部楼层

回复 6# luo@odu.edu 的帖子

从内心由衷感谢罗老师的回复和鼓励!“I strongly believe that accelerating techniques, such as multi-grid (MG) methods and implicit time-stepping, are in pressing need in LBE”,有了像罗老师这样大师级导师的鼓励,我更有干劲了。
    实际上,以前我博士期间是搞可压缩流动的数值模拟研究的,后来出国做博士后,做的可压缩第马赫数流动的数值模拟,主要是应用预处理技术,而目前做LBM,发现这一块的知识正好可以用上,然后就做了,呵呵。
    希望一如既往的能够继续得到罗老师的指点和鼓励,谢谢!!!
 楼主| 发表于 2012-8-26 13:52:14 | 显示全部楼层



       C=△x/△t 吧。其实这个参数并不一定非要按照标准LBM中取1,这个看你自己愿意取多少,但是一定不能影响模型成立的前提:小Ma和小Kn.甚至取的值不一样,所得到的收敛速率也不一样。
    我觉得学习LBM,重在理解模型的由来和含义,至于计算方法,在理解了含义之后,计算方法自然就出来了,而不必拘泥于标准的LBM。

[ 本帖最后由 lwd1981 于 2012-8-27 00:20 编辑 ]
发表于 2012-8-26 23:02:41 | 显示全部楼层

回复 9# lwd1981 的帖子

c = dx/dt is a pure number which defines the unit of velocity in LBE. The value of c is defined by those of dx and dt, which can be chosen ARBITRARILY without any effect. However, the choice of Mach number Ma and Kn are very important: the former is related to the CFL number and the latter determines in which region the LBE is working.

The definition of c=dx/dt has nothing to do with the structure of mesh. Even in an unstructured mesh for LBE, you still need to define the unit of discrete velocity set, which is c.
发表于 2012-8-28 04:21:27 | 显示全部楼层
我觉得理论上可以做,实际上应该太麻烦了。至少面临几点,比如格子速度的定义将会是个局部量,然后松弛时间什么的又会是一个局部量,然后平衡函数估计也不那么直接等等~~~~~
 楼主| 发表于 2012-8-28 08:04:51 | 显示全部楼层
原帖由 onesupeng 于 2012-8-27 20:21 发表
我觉得理论上可以做,实际上应该太麻烦了。至少面临几点,比如格子速度的定义将会是个局部量,然后松弛时间什么的又会是一个局部量,然后平衡函数估计也不那么直接等等~~~~~


       其实也没那么复杂的啦,按照普通的微分方程组对待就好了。只是由于其对流项是线性的,而且没有NS方程中的粘性项,因此比NS方程要简单。再就是出于稳定性考虑,注意处理好源项----碰撞项,就可以了。
       至于格子速度,你可以给成局部量,也可以给成全局量,随你。只要不影响小Ma和小Kn的假设,因为在标准LBM 中 格子声速等于格子速度除以sqrt(3) 。至于松弛时间和平衡函数,多尺度展开就一目了然了。
发表于 2012-8-28 08:22:41 | 显示全部楼层
原帖由 lwd1981 于 2012-8-28 00:04 发表


       其实也没那么复杂的啦,按照普通的微分方程组对待就好了。只是由于其对流项是线性的,而且没有NS方程中的粘性项,因此比NS方程要简单。再就是出于稳定性考虑,注意处理好源项----碰撞项,就可以了。
    ...

期待你的结果
发表于 2012-9-10 17:21:25 | 显示全部楼层
楼主的FVM是基于黎曼解的那个FVM吗?
 楼主| 发表于 2012-9-10 19:57:37 | 显示全部楼层

回复 14# zqb138 的帖子

任何数值格式都可以用,不一定非要使用FDS。提醒一点,FDS不一定具有优势。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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