interPlicFoam
-
大佬问个问题,您这个求解器重构的界面是平面吗? 我之前用的interIsoFoam, 看他论文里说iso-surface他是处理成非平面的,我对比了一下of1906中的interIsoFoam和您这个求解器, 我感觉他的求解器在算气泡上升的过程和interFoam差距很大,您这个更加接近
-
@anubis 我们是使用的纯平面,isoAdvector因为使用了iso-surface的概念,使用isoValue去切体单元的每条边后很难保证所有的相交点共面的,所以不得不按照非平面处理。plus版本从2006版本开始也有PLIC算法了,我们自己的PLIC算法植入和他们的区别在于重构算法,最新的版本里我们也使用了自己的时间积分计算方法(正在准备投稿,接收后会开源)。按照目前的测试对比,在溃坝问题里interPlicFOAM和interIsoFoam计算结果非常接近。
-
又碰到一个问题,我自己写了个函数计算网格内的液相体积, surface与网格的交点是从plicFacePoints()函数读过来的,
比较了一下计算出来的液相体积和alpha1乘以网格体积的值, 对大部分网格,两个值基本上是一致的,误差在0.1%以内,但是当alpha1接近0或者1的时候,误差有时候就比较大了。
下面是我碰到的一个误差最大的网格, 我用的是长方体的网格,PointLists_是网格的8个点,isofacePoints_ 是surface与网格的交点,VolumeIntegrate_ 是我自己写的函数计算出来的体积, alpha1_ * mesh_.V 就是这个网格内的alpha1乘以体积,test_ratio是这两个值的比值。
因为我算例是二维的,所以我自己也手算了一下,函数算出来的体积应该没有什么问题,应该是重构界面的时候出现的误差,我想请教一下有方法减少这部分的误差吗?@队长别开枪PointLists_ 8((0.0185 0.001 0.000522015) (0.0185 0.0015 0.000522015) (0.019 0.001 0.000522015) (0.019 0.0015 0.000522015) (0.0185 0.001 -0.000522015) (0.0185 0.0015 -0.000522015) (0.019 0.001 -0.000522015) (0.019 0.0015 -0.000522015)) isofacePoints_ 4((0.019 0.00144899 0.000522015) (0.0189992 0.0015 0.000522015) (0.0189992 0.0015 -0.000522015) (0.019 0.00144899 -0.000522015)) VolumeIntegrate_ = 2.11363e-14 alpha1_ * mesh_.V = 1.80361e-14 test_ratio = 0.853322
-
我发现是因为我改动了orientation函数, 我是先用isoadvector重构了一遍界面,取了界面的法相方向,在orientation函数中又赋值给了interface.n(),
如果采用原先的cellNormals.operator[]来进行赋值的话,是没有问题的,计算出来的体积和实际上alpha1所占有的体积是相同的。
但是我没想明白为什么会这样,我大致学习了一下您的论文,我感觉界面的法相方向应该是不会影响重构出来的体积大小的吧? 应该也不是方向弄反了,如果反了的话两个值应该一直会差很多才对。 -
-
戴前辈您好,看到您的方法就想用of里的dambreak算例试一下,尝试了在of1912和of1812中加载您的求解interPlicFoam,但是算$FOAM_TUTORIALS/multiphase/interFoam/RAS/damBreak算例的时候,虽然按照您github上的要求修改了fvScheme和fvSolution,但是计算第一步就会出现问题,浮点数溢出,减小算例时间步长到1e-5也不行,细化一倍网格也不行,请问这是为什么呢?(我注意到您给出的tutorials都是多面体网格的,并非六面体网格,不知道是不是您的求解器不适用于六面体网格?)
-
interPlicFoam
求解器已经并入扩展包geometricVofExt
,仓库地址:https://github.com/daidezhi/geometricVofExt
84/91