isoAdvection模拟水中上升的气泡边界不稳
-
Emmm....正在尝试模拟在水中上升的气泡,处理边界使用了isoAdvection,压力速度耦合使用了PISO,求解器以InterFoam为基础。图片是alpha.water的截图,还想请问为什么使用isoAdvection时气泡会发散的这么严重?前辈们有没有什么解决的建议?
P.S. 在使用MULES是气泡的边界会稳定很多
-
你的算例多大?我最近刚回国正打算装这个试试,目前不能给出建设性意见。 据我所知 @yhdthu 在这面做一阵子了
-
@李东岳 模拟的是一个二维算例,80mm*440mm,一共有30660个网格,感觉这个并不大,算着算着气泡就消失了:sad: ...不知道如果我增加nAlphaSubCycles能不能对alpha的运算结果有点好的影响
哎,三维算例很大,运算很慢,alpha有类似的问题... -
我也用interIsoFoam算过气泡上升,虚假流比MULES严重些,但是没出现你这种情况。isoAdvection我改过,对算法还算熟悉,你最好把算例设置介绍的详细点,要不没法判断哪里的问题
-
@yhdthu fvSolution里对alpha是如下这样设置的:
alpha.water { interfaceMethod "isoAdvector"; isoFaceTol 1e-8; surfCellTol 1e-8; nAlphaBounds 3; snapAlphaTol 1e-12; clip false; writeIsoFaces false; gradAlphaNormal false; nAlphaCorr 2; nAlphaSubCycles 1; cAlpha 1; }
对
PISO
的设置是{ pRefPoint (0 0 0); pRefValue 0; momentumPredictor true; nCorrectors 3; nOuterCorrectors 1; nNonOrthogonalCorrectors 0; }
controlDict
里maxCo 0.05; maxAlphaCo 0.05; maxDeltaT 1e-5;
求解器其实没用
interIsoFoam
,是以interFoam
为基础进行了修改,在src里加了isoAdvection
;压力速度耦合一开始想用PIMPLE
算,但有问题,就改成了PISO
。您在改isoAdvection
时遇到过哪些影响很大的设置呀? -
@sunjh 这跟你用什么耦合求解方法没啥关系,建议先把这两个调大一些
isoFaceTol 1e-6;
surfCellTol 1e-6;理由:isoadvection对alpha耗散小,但不代表没耗散
建议看看源代码,搞清楚后这些设置都很简单
不懂为啥不直接用interIsoFoam,有现成的自己写干嘛?
-
@yhdthu 因为用了moving reference frame (MRF) 来调整气泡纵向的速度,让它保持在空间域的中心,所以没用interIsoFoam。不过听了你说的,我会用interIsoFoam直接试试,谢谢:happy:
-
@sunjh 那我觉得很可能是因为守恒性出现了问题,你在强行的加约束
-
@yhdthu 你好!我也想尝试用isoAdvector模拟气泡,以你的经验不知道到相比MULES有什么优劣呢?听你的描述,感觉好像还不如MULES啊?
-
@linhan-ge 几何重构算法精度高,交界面处没有数值耗散,缺点是计算效率比代数方法低,因为要显式地重构出interface。参考:https://www.youtube.com/watch?v=AARnZrrIsEA
-
@linhan-ge 同等网格下,isoadvection计算量要比mules大,主要因为界面处曲率计算量,显式重构要比隐式重构大。如果土豪可以无限加密网格,用哪个方法计算得到的效果是一样的,就看你追求精度还是效率了
-
@yhdthu 明白了,因为我需要在计算过程中得到interface的位置。那应该还是isoadvector方便点,计算效率上可以牺牲下。
-
@队长别开枪 感谢分享!
-
@sunjh 您好,想请教下是怎么用MRF 来保持气泡在中心的呢?需要改动代码吗?还是有现成的功能。
-
他那个wobuqi我不清楚,不过你用这种方法也可以。上面给一个向下的速度(需要调节好)。气泡会在中心左右摆动
-
@东岳 嗯嗯,这也是个办法。两种方法速度都比较难调节。
-