如何人为将曲率给定为一个定值
-
问题简要: 如何将interFoam, interIsoFoam中每次计算界面曲率的时候,人为将曲率给定为一个定值,这个想法如何在interFoam中如何实现。
(我想这样就能代表微细在气泡浮升过程中一直不发生变形,从而通过自由浮升仿真的方式获得气泡浮升终速度。)
我们这篇帖子所提到的都是用固定气泡的方式来分析微气泡的阻力系数。
我导师一直倾向于用自由浮升的方式研究微气泡终速度和阻力系数(因为想的是自由浮升更加接近实际情况),但是测试过程中发现,当气泡尺寸过小时,特别是对于水中自由浮升的微气泡,就下面这篇帖子曾说到的,interFoam算不出来。
或者说不管是interFoam,还是interIsoFoam,他们都算的并不准。
此前我做过相关的计算测试:目的是想用interFoam和interIsoFoam复现出在纯水中1.82mm左右的气泡会发生路径失稳的实验现象(路径摇摆、偏离直线),但不论是速度形状都对的不准,因此当时的结果也并没有保留,感兴趣的朋友如果想复现的话可以从Bubble rising in a spiralling path in a large tank by Lionel Gamet给出的案例更改工质为水中气泡浮升,但是需要注意的是,这个的网格量非常大。纯水中1.82mm左右的气泡会发生路径失稳的说法来源于这篇文献: Duineveld, P.C., 1995. The rise velocity and shape of bubbles in pure water at high Reynolds number. J. Fluid Mech. 292, 325–332.
我想咨询的问题是:
在interFoam模拟微管道中气泡上升,为何气泡不上升?的这篇帖子中,谈论到仿真微气泡仿真为什么不移动,大家主要是从壁面效应带来的阻力,解释了微气泡无法浮升。仿真微气泡自由浮升算不准,除了壁面影响以外,具体是什么原因? 我首先想到会不会是一些文献经常提到虚假流导致的。
我首先想到的是一些文献经常提到虚假流问题,大概就是说表面张力计算不准确,导致在界面重构步骤和界面推进步骤中,表面张力的数值误差反而成为了驱动气泡界面运动的原因,因此使得气泡界面发生非物理的变形。
通过阅读东岳老师的interFoam解析我现在在想,既然微气泡几乎不变形,能不能在每次界面重构步骤中,也就是计算曲率的时候,人为的将微气泡的曲率指定为定值,这样气泡既不变形,又不会引入虚假流,因此想咨询下,人为的将微气泡的曲率指定为定值,这个想法如何实现。
从代码中来看:
void Foam::threePhaseInterfaceProperties::calculateK() { const volScalarField& alpha1 = mixture_.alpha1(); const fvMesh& mesh = alpha1.mesh(); const surfaceVectorField& Sf = mesh.Sf(); // Cell gradient of alpha volVectorField gradAlpha(fvc::grad(alpha1)); // Interpolated face-gradient of alpha surfaceVectorField gradAlphaf(fvc::interpolate(gradAlpha)); // Face unit interface normal surfaceVectorField nHatfv(gradAlphaf/(mag(gradAlphaf) + deltaN_)); correctContactAngle(nHatfv.boundaryFieldRef()); // Face unit interface normal flux nHatf_ = nHatfv & Sf; // Simple expression for curvature K_ = -fvc::div(nHatf_); //我看到interFoam好像是在这里能进行人为更改,因为没有太多C++基础,也没有OpenFOAM编程经验,想向东岳老师再请教确认一下。 // Complex expression for curvature. // Correction is formally zero but numerically non-zero. // volVectorField nHat = gradAlpha/(mag(gradAlpha) + deltaN_); // nHat.boundaryFieldRef() = nHatfv.boundaryField(); // K_ = -fvc::div(nHatf_) + (nHat & fvc::grad(nHatfv) & nHat); }
另外interIsoFoam不知道从哪里改起,没有理解到和curvature相关的计算公式,如果方便,想再麻烦各位老师指点,十分感谢。
-
@pengdi PengDi老师您好,请问您提到的颗粒流计算办法具体是?能否麻烦您略微展开说一下。
我看到了V版本的教程中Michael Alletto贡献了一个重叠网格仿真颗粒沉降的案例Settling Sphere by Michael Alletto,用的是overPimpleDyMFoam,我这段时间在看能不能根据这个将物性参数更改一下,从而把案例从圆球沉降改为气泡浮升。
另外,@李东岳 谢谢东岳老师特地帮忙新建帖子。
-
@Prometheus10 我感觉不用重叠网格吧,相当于欧拉-拉格朗日方法,OpenFoam9里面好像大多数求解器都支持这种方法,相对于对流体采用欧拉方法求解,对气泡采用拉格朗日方法求解,不用使用重叠网格。具体的我也忘记了,好久没用过了,需要在constant文件夹下面加入一个粒子属性文件。
-
@李东岳 好的,东岳老师,我试试按照您说得这样算一下。
另外我应该补充一下,100μm直径气泡的实验测得的浮升终速度大约是0.005~0.008m/s.
参考文献 Pawliszak, P., Ulaganathan, V., Bradshaw-Hajek, B.H., Manica, R., Beattie, D.A., Krasowska, M., 2019. Mobile or Immobile? Rise Velocity of Air Bubbles in High-Purity Water. J. Phys. Chem. C 123, 15131–15138.