找到vof中interface的位置



  • 大家好,我目前在用VOF-DEM耦合做气泡(VOF)和颗粒(DEM)相互作用的模拟。现在想添加一个颗粒和气泡间的作用力。这个作用力由颗粒与气液interface间的距离决定。目前想用alpha1=0.5作为interface,想请教一下大家,如何在代码层面尽量快速高效的找到alpha1=0.5的所有网格的位置,要遍历所有网格去找吗?


  • 自由表面模型副教授 OpenFOAM副教授

    求解过程中的0.5等值面提取没搞过啊,只有后处理的时候提取过iso-surface。你说的这个需要在求解过程中确定interface的位置,使用OpenFoam最新的iso-Advector或者PLIC-VOF吧,这两个都属于几何重构方法,求解过程中可以得到interface的位置信息。


  • CORE 网格教授 OpenFOAM教授 管理员

    这个作用力由颗粒与气液interface间的距离决定

    你要处理颗粒一半在水里、一半在空气中的情况?
    是的。你这个在VOF里面确切的获得界面不容易,主要是VOF目前很难有严格的alpha=0.5的情况,除非采用其他算法几何性的重构出来。



  • @队长别开枪 没用过iso-Advector,主要我还改了相方程(加了颗粒相体积分数的影响),不知道iso-Advector相方程好修改吗?



  • @东岳 不一定是一半一半的情况,就是颗粒距离气泡表面有一定的距离的时候,会有力的作用,类似于MPPICinterFOAM里面在界面处施加的里,只不过我是跟界面距离有关,MPPICinterFOAM是相分数梯度的函数。


  • 自由表面模型副教授 OpenFOAM副教授

    @linhan-ge 不知道你的相方程怎么修改的,iso-Advector 修改起来不难,我自己在做多面体网格的PLIC解析算法,advection部分因为不是我的研究范围就用的iso-Advector提供的算法。



  • @队长别开枪 其实我的修改很简单,就是加入一个颗粒相体积分数的影响,0_1528067861730_fc6c44b9-e94e-4d5f-a7c1-7102a25b4c1d-image.png 这是对MULES方法的修改,针对isoadvector,应该就需要前两项。不知道以大神的经验,可行性如何,代码实现难度大不大。我目前对isoadvector的了解非常浅薄。


  • 自由表面模型副教授 OpenFOAM副教授

    @linhan-ge $\alpha_f$ 是指颗粒相体积分数吗?因为一般下标$f$指代有限控制体的边界(face)



  • @队长别开枪 $\alpha_f$是所有流体的体积分数,包括空气和水。$\alpha_f$=$\alpha_1$+$\alpha_2$



  • @队长别开枪 你好,因为研究内容界面张力主导,需要两相界面更精确一点,想要在OF中实现结构化网格的PLIC界面重构,找了一些资料,包括Fortran版的实现,几何计算实在看得不是很明白:qichuang:
    请教一下有讲得好一点的资料推荐吗?计算几何的知识可以怎么补一下?感觉很多论文里网格层面操作很多啊:mihu:



  • @wallong 为什么不用iso-advector 啊?有什么特别的考虑吗?


  • 自由表面模型副教授 OpenFOAM副教授

    @wallong 结构网格中的PLIC算法相对容易,PLIC说白了就是求解interface近似平面的位置,数学上一般使用$\vec{n} \cdot \vec{X} + D = 0$表示,需要求解interface orientation vector $\vec{n}$ 和 signed distance $D$,$\vec{n}$一般使用主相体积分数的梯度,即$\vec{n} = - \frac{\nabla \alpha}{| \nabla \alpha |}$,也有使用其他辅助函数的,例如CLSVOF方法,使用的是level-set函数的梯度计算$\vec{n}$,优点是光滑。总的来说,$\vec{n}$的计算主要是梯度的计算,在非结构网格中无非高斯定理或者最小二乘,而$D$的计算就和网格单元类型相关了,也更复杂一些,六面体单元算是比较简单的一类了,可以参考 http://iccfd9.itu.edu.tr/assets/pdf/papers/ICCFD9-2016-288.pdf 。所有的网格操作都是为了计算$D$,结构网格最简单。
    iso-advector使用的是 iso-surface的基本思想,先假定isoValue = 0.5,将interface cell中的isoValue 等值面作为初始interface近似,然后调整isoValue 的数值使得等值面的位置满足主相体积分数$alpha$的值,isoValue 相当于PLIC中的$D$。与PLIC相比,iso-advector重构出来的interface近似不一定是平面,会有翘曲。


  • 自由表面模型副教授 OpenFOAM副教授

    @linhan-ge 这样的话没有颗粒的话$\alpha_f = 1$,考虑颗粒的影响的话$\alpha_f = \alpha_1 + \alpha_2$就小于1了,我的理解对吗?如果我的理解对的话,那情况就复杂了。。。



  • @队长别开枪 抱歉,这个地方搞错了,$\alpha_1+\alpha_2=1$是始终成立的,是液体或气体占流体的体积分数,不是占三相的,$\alpha_f$实际上是流体占流固两相的体积分数。



  • @linhan-ge iso-advector很棒,不过考虑到自己添加自适应功能的难度,观望中...



  • @linhan-ge 作者一直在这方面努力,好像最近有新的进展了,上周Yoube更新了新的AMR视频,之前说六月可能会发布 https://www.youtube.com/channel/UCt6Idpv4C8TTgz1iUX0prAA



  • @队长别开枪 非常感谢,很有帮助,抱歉回复得有点晚了
    我起初参考论文[1],通过PLIC重构,进而得到一个每个面上AOF(area of fraction),来作为alphaEqn.H中的phiAlpha相可以显著提高界面精度。此外论文中实现了非结构化网格的PLIC,依据的是Maric T[2]的迭代方法,这部分可能和你的工作相关。
    isoAdvector的实现确实很有参考意义,学习中,最近作者好像在测试AMR了,可能不久会发布。
    之前Maric T说过等完成了会公开Code,见https://www.cfd-online.com/Forums/openfoam-programming-development/89713-plic-interfoam.html,后来似乎没有。猜测可能出书,办培训班的原因,看了一眼去年他的博士论文,里面涉及了PLIC和其他界面追踪方法,个人底子差,确实难懂...
    关于我的课题,除了精确界面,还需要关注的是界面张力项,CSF模型有更大影响,所以在试着实现一个新的张力模型,在你给的论文中作者反复提到了“ without smearing, dispersing or wrinkling.”,大家都知道OpenFOAM原来的方法在smearing方面表现不好,其余wrinking方面是不是也表现不好,在2-D vortex测试中会出现不明锯齿状界面,那dispersing方面呢?
    [1]Dianat M, Skarysz M, Garmory A. A Coupled Level Set and Volume of Fluid method for automotive exterior water management applications[J]. International Journal of Multiphase Flow, 2017, 91: 19-38.
    [2]Maric T, Marschall H, Bothe D. voFoam-a geometrical volume of fluid algorithm on arbitrary unstructured meshes with local dynamic adaptive mesh refinement using OpenFOAM[J]. arXiv preprint arXiv:1305.3417, 2013.



  • @wallong 看各位高手讨论学到很多,对于我们这种主要侧重于应用这些方法的人来说,跟不上你们的节奏:zoule: 。大神对于我上面提出的问题,即在相方程中加入颗粒相的影响,有什么看法吗?代码层面的实现难度怎么样?由于有毕业压力,目前不敢轻易的换方法。



  • @linhan-ge 我顶多算刚入门,聊八卦有点多,没怎么聊正事:mianmo:
    VOF-DEM不了解,不好说,有什么影响,难度如何,建议先试一试吧,试下就知道了。下次可以把参考论文post出来


  • CORE 网格教授 OpenFOAM教授 管理员

    就是颗粒距离气泡表面有一定的距离的时候,会有力的作用,

    建议直观的,用公式或者图的方式说明一下


 

Forest
Mountains