基于LBM的多孔介质模拟

Posted by on 12/15/2011 in Highlight, 学术案例 | 63 comments

基于LBM的多孔介质模拟

多孔介质是由固体物质组成的骨架和由骨架分隔成大量密集成群的微小空隙所构成的物质,具有空隙尺寸小、比表面积大等特点。多孔介质广泛存在于能源化工(如储存石油和天然气的地层)、生物医学(如人体肺部结构、微细血管网络)、航空航海(如基于多空介质材料的飞行器、交通工具)等等领域。由于多孔介质内的微小空隙可能是互相连通的,也可能是部分连通、部分不连通的,因为研究其内部的流动规律、传质规律很具有挑战性,是目前国内外的一大研究热点。

对于多孔介质内的流动与传质研究,由于几何区域的复杂性,传统CFD方法在网格生成方面较为困难。而另一方面,介观LBM在处理这类复杂边界问题时,具有先天的优势

我们开发了LBM模拟多孔介质的相关代码。此处以2D多孔介质内的流动为例。模拟中采用的几何如图1所示,黑色区域为骨架,白色区域为流道。流动由压差驱动,左边界指定高压,右边界给定低压。

图1. 2D多孔介质示意图

流动稳定后,多孔介质内部的压力分布如图2(a)所示,红色和蓝色区域分别为高压和低压区。模拟获得的速度场和流线在图2(b)给出,从红色的流线分布可以看出大量的涡结构。图中的矢量为速度,其长短代表速度幅值的大小,颜色代表所处区域的压力。(点击查看大图)

(a). 压力分布

(b). 速度场及流线

图2. 基于LBM的多孔介质内流动计算结果

    21,346 views

63 Comments

  1. 光是看到这几张图我就被深深的震撼了,LBM实在是太强大了。
    我想用LBM做煤层气(一种非常规天然气,储层是煤层,非常典型的多孔介质)的扩散和渗流模拟,看完这个例子我知道它一定可以实现,但是我接触LBM时间很短,没有LBM的研究基础,上手很慢。目前情况:主要阅读的有几本英文书和2本中文书,以及一些文献,感觉把一些思想转换成程序实现还需要一定的过程。请问下在我的这种情况下,如何运用好LBM来实现我的目标呢?Palabos已经可以运行,是否能借助palabos进行模拟?换句话说,实现图中的效果,我该如何做?对于您的回复和解答我将非常感谢!

    • Luo Jin-hui你好!

      采用LBM开展多孔介质(诸如煤气层)的研究是LBM研究领域的热点之一,这主要用到LB处理复杂几何边界的优势。

      你提到的中文书,或许有我作为作者的那一本,呵呵。根据我们的经验,如果你只是要使用LBM,那就大致明白常见模型(格子、分布函数、宏观物理量)的表达方式和常见的边界条件即可。另一方面,LBM的编程也相对简单,你可以参考网站“开源CFD”一栏提供的一些开源代码。更多的代码我们会陆续增加。当然,你也可以使用Palabos,但仍然需要你了解LBM和c++。

      如果遇到更多的LBM理论或者程序实现上的问题,可以留言或者来信与我们交流。

      • 谢谢王老师,我现在正在拜读您的著作,非常感谢您如此迅速的回复,能和您交流让我感到非常荣幸。

        在您在著作中对LBM的理论基础方面阐述的较多,高度很高,我一时还不能吃透十之一二,但我目前对LBM的模型如D2Q9模型等已经有所领会。再次感谢您的回复,有问题还会来向您请教!

        • Luo Jin-hui你好!那本书,我也只是参与了其中一部分工作。很高兴我们的工作能对你有所帮助:)

    • Luo Jinhui,你好!

      实际上,只要理解基本的LBM原理,就可以使用Palabos编程了,无须纠结于太深的理论,尤其是处理工程问题。同时,使用过程中你会加深对LBM理论的理解,这会使你对LBM理论的理解同步提升。在网站上我们已经post了很多的使用Palabos的方法。一些更为实用的Palabos使用方法你可以参见我的博客http://blog.sina.com.cn/vonkarman(博客内容还未完全移置于网站)。希望对你有用。在今后,我们会以网站为主推广LBM及其开源软件的使用策略,为大家服务。

      欢迎使用Palabos!

      徐辉

      • 感谢徐辉老师的回复,也非常感谢你们无私的奉献精神,你们的热心帮助对后来的研究者来说是极大的鼓舞。

      • 徐辉博士,您好!我是lattice-boltzmann方法的初学者,现在正在写有体积的悬浮粒子的程序,虽然已经写好了,但不确定是否正确!不知您是否有这类简单程序的代码,我想学习学习!我用的是Aidun的方法!如果能发给我一份,不胜感激!

  2. 版主真是太热心了,赞一个先

  3. 能跟您请教一下压力边界条件是如何处理的吗?有相关文章给我推荐一下吗?谢谢

    • 进出口压力为常数。你可以看看Zou & He的"On pressure and velocity boundary conditions for the lattice Boltzmann BGK model"。

  4. 您好。
    我正在用LBM作多组分气体在多孔介质里面的扩散问题,多孔介质的结构类似您上面贴出来的图,上下界面采用周期性边界。但是发现质量老是不守恒。我把多孔介质去掉以后只剩下多组分气体的扩散,发现在上下界面U速度相等但是V速度大小相等方向相反,觉得很奇怪,仔细检查了一下,觉得周期性边界的施加应该也没有问题,您觉得可能是什么原因造成的呢?
    谢谢!

    • 这个帖子里的多孔介质上下是封闭的。对于你的问题,我个人没有做过多组分方面的具体工作;但个人觉得,如果上下边界(如果是2D平直通道问题)采用周期性边界,上下的速度得一样才合理。建议你改成单组分,再测试一下边界

  5. 王老师,您好,我在做石油行业的多孔介质中流动模拟,这个模型左右出口使用压力边界和周期性边界应该是有区别的吧,上次听一个教授的讲座我也问过这个问题,他说两种边界处理结果是一样,不知道您有没有试过周期性边界来处理,另外,后处理的图像非常漂亮,使用paraview得到吗还是别的软件,能否把这个例子的代码法我一份,多谢了

    • 感谢您对我们团队工作的兴趣!请查收您的邮箱。欢迎进一步交流合作。

      • 王老师你好,我跟上面Charlie 情况类似,也是做石油多孔介质内流体流动的,请问后期数据处理及图像展示的软件用的是什么?同时能不能把上面例子的代码发我一份学习一下,多谢。

        • 后处理用的Paraview,用Tecplot也可以。

          • 王老师你好,上面的例子能否给我也发一份吗?
            谢了

      • 王老师,这个例子的后处理是用什么做的?能否把这个实例的代码发一份给我,多谢了!1303980764@aaqq.com

        • 王老师,不好意思,邮箱写错了
          1303980764@qq.com

        • 请注意前面的讨论记录(这也正是我们希望用网站而不是QQ等即时通讯软件的原因)。后处理paraview、tecplot等等都可以;这个代码我们还在整理和继续开发中,暂时不便公开,请多留意网站,我们会陆续扩充。

          • 谢谢!

      • 王老师,您好,我在做石油行业的多孔介质数值模拟,能否把您这个例子的代码发我一份呢,多谢!

    • 你好。我是室石油化工方面多孔介质流的,这个问题的源码,可以给我一份,以作参考吗,我是用MATLAB 编程的,不知道MATLAB处理这类问题可不可以

  6. For incompressible flow, why does LBM give very accurate velocity distribution,but pressure not so accurate ,Such as the
    very simple lid driven cavity flow ?
    Is it real that LBM can derive back to macro NS equation very accurately?

    • Depends on the Re number and the model you used. MRT should be better than SRT based on the previous tests. Just google and you will find some previous papers.

      For you second question, some LBM models can recover the NS equations correctly and others with acceptable error terms. Pls Check the paper developed the model you are using and see whether it has error term.

  7. 王勇老师,您好!
    看了很长时间的LBM相关资料,包括您和何雅玲老师等人一起合作的那本书,学习LBM基本上是以这本书为主线,结合我以前的知识,我想将LBM理论应用到火灾燃烧中,不知您对这方面有没有过研究,希望得到您的指点!

    • 我本人没做过这方面的工作。华中科大的陈胜在做燃烧方面的工作,你可以关注他的文章。

  8. 老师好,我刚刚开始研究生的学习,最近接触LB相关的内容(一个月吧),要结合多孔介质做有些内容。想请教几个问题①多孔介质的轮廓就是边界条件控制的么?②OpenLB和Palabos的关系是什么,是否都需要再Linux环境下编译,windows系统下是否可以模拟和改写代码后编译,没有并行的情况下运行时间大约是多少?③作为一个新手,您有什么建议和思路帮助我高效学习

    • 1. 轮廓是你的物理边界,这个应该由你自己的物理模型决定的吧;至于边界条件,那是用来描述物理边界上各种物理量的。2. openlb和palabos原本是同一个开源软件,后来分成两个,经营思路不一样了,但两者功能上差别不大;两者都可以在linux和windows下编译,具体参见各自手册;串行或者并行的耗时由你的物理问题、计算参数决定,没有统一标准。3. 每个人的情况不一样,所以这问题应该反问自己或者咨询你的导师更合适。

  9. 王老师,您好,我是做双重介质裂隙—孔隙流体的,我想您这边的这个例子完全可以解决孔隙部分,我想请问您如果在这个例子的边界上加一条裂隙(例如:假设加在下边或者中间),这样就形成了裂隙中是快速流与孔隙中流速缓慢,程序好解决吗?如果可以的话,能不能参考一下您的这个code?(可能我说的不是很清楚,见谅)

  10. 老师们好,经过最近的学习,我基本掌握了格子器的一些知识,并初步学习了palabos。为了以后能更高效的工作,我想请教2个问题:①要想利用palbos研究多孔介质中的驱替或吸吮,自带哪些算例是最可以参考的?②算例中imagemagic出的图,物理场取值的颜色梯度具体是怎样的,有没有一个颜色条参考?

  11. 求教pablos boolmask输入 谢谢老师帮助
    1.介质二值化矩阵已知(m×n),垂直翻转后存储在geometry.dat的顺序是?(按矩阵形式么)
    2.设置参数时,lx ly N与二值矩阵是要严格保证lx*N=m,ly*N=n么?(来个例子?)

    • 1. 参见 http://blog.sina.com.cn/s/blog_6a40fba101011nsn.html.
      2. 需要严格保证像素点与格点的一致性! 除非你事先在外部已经处理.

      • 感谢老师回复,图像的问题已经解决。在您的博文中我详细阅读了关于边界条件的部分,看了网友和您的讨论后对速度(压力)的方向设置有些疑惑。暂且举一个简单2D的例子展开求教吧:N×N的正规网格模型中,在左下角施加一个沿对角线方向的压力或者速度应该如何实现?

  12. 能否把这个实例的代码发一份给我,多谢了!615721678@qq.com

  13. 本例的进出口边界条件是什么?

  14. 你好:
    请问您们团队是否可以进行一些palabos的商业培训?我周围环境有限。想快速的上手。

  15. 王老师,您好!我在做石油行业的岩石多孔介质流动模拟(单相流,两相驱替与吸吮),目前是基于岩石CT切片来做。如果可以的话,我想参考一下您上述案例的code及输入多孔介质的数据体。我的邮箱是:zhl9410@sina.com。感谢帮助!

  16. 师兄你们好~
    我是何老师这边的新入学的学生,何老师想让我摸一下LBM,希望您能够给予帮助和教诲。我现在手头有两本书,一本是咱们课题组的书,一本是郭照立老师的书,现在处于最初摸索阶段,希望能够参考你们程序的源代码来辅助学习,多谢师兄!
    我的邮箱是15229228012@126.com.
    Many thanks and best regards.

  17. 亲爱的师兄,你们好!我现在在自学LBM,正在阅读郭照立与何雅玲老师的书籍。苦于没有一些实例练习与代码参照学习。希望你们能够把自己以前做的一些算例及代码发给我,帮助我学习。邮箱是1064051186@qq.com。不胜感激!

  18. 师兄,您好!
    我最近也在做一些LBM相关的例题,看过您和华科郭老师的一些书籍。苦于没有一些实例练习和代码参照学习。不知您能否将一些算例及代码发给我,帮助我学习,我的邮箱是769267530@qq.com。谢谢您啦

  19. 这个例子做的真好,可以给我发一下这个例子的代码吗?谢谢!

  20. 老师您好,我也是做多孔介质的,这个例子对我很有帮助,能否把这个例子的代码发我一份,真心感谢!!!

    • 我也是做多孔介质传热流动的 你搞得怎样了

    • 老师,我也是做多孔介质的,能给我发一下这个例子的代码吗?对我很有帮助,谢谢!

  21. 老师您好,我是石油大学做油气开发的博士。我们院目前针对非常规油气开展各种研究,LBM也是其中的一个方向。由于非常规的特殊性,常规的渗流机理已不再实用。所以,从LBM中找到突破时我们的一个方向。很荣幸能拜读老师的成果。如果可以,可否将多孔介质的算例和code发我,大家互相交流学习。

  22. 老师你好。我这学期选修了一门cfd课, 在做课程final project的时候做了一个最最基本的transient flow绕柱模型。本来是想改成搅拌桨旋转带动液体流动的模型。但是在做的时候遇到一个问题,就是平板(代表搅拌桨叶)倾斜时,方向与D2Q9的方向不合怎么处理。比如说平板倾斜60°, 方向1 2 3 4的f很好求。但是45°的那些方向 5 6 7 8上的是怎么计算呢?
    如果老师能给发一下你们的code作为参考就再好不过了
    Best wishes,
    Mengfan

  23. 老师您好!我现在正在做多孔介质渗流这块,刚接触LBM还很混沌,时间也很紧张,而课题组这边接触这块比较少。这个算例确实做得真心不错,您能否把这个例子的code发给我一份呢?在此真心感谢了!

  24. 老师您好!我现在正在做多孔介质渗流这块,刚接触LBM还很混沌,时间也很紧张,而课题组这边接触这块比较少。这个算例确实做得很不错,您能否把这个例子的code发给我一份呢?在此真心感谢了!

  25. 老师您好,我做的也是多孔介质,能发一下这个例子的代码吗?非常感谢!! 3107143671@qq.com

  26. 对了,老师,我做的是土体多孔介质模拟

  27. 请问这个算例中的多孔介质骨架是如何生成的,我在找这方面资料但是都不太详细,这种不规则边界处理也觉得有些迷茫,似乎随机情况下无法用插值法解决,可否指点一二

  28. 你好,请问这个算例中的多孔介质骨架是如何生成的,我在找这方面资料但是都不太详细,这种不规则边界处理也觉得有些迷茫,似乎随机情况下无法用插值法解决,可否指点一二

  29. LBM新手,请问PalaBos和OpenLB建议学习哪个?谢谢

  30. 王老师您好,我是最近接触LBM这个方法的,导师让我研究的是用LBM方法研究页岩气在多孔介质中流动模拟的问题,今天刚看到老师写的这个后处理的图片,感到非常棒,老师您可不可以给我发一份关于这个例子的代码,我想学习一下,谢谢老师您!

  31. 王老师我的邮箱刚才忘写了,邮箱为1084412949@qq.com,谢谢老师您!

  32. 老师你好,我在做多孔介质的温度场测量课题,看到这个后感觉很符合我的课题,希望可以参考下老师的代码,我邮箱1129660872@qq.com,谢谢老师

  33. 老师你好,我是最近接触LBM这个方法的,目前在学习D2Q9代码的边界处理上也觉得有些迷茫,希望可以参考下老师的代码,我邮箱s1346297259@gmail.com,谢谢老师

Submit a Comment