@capillaryFix 谢谢老师您的回复。
如果可以的话,您植入过的contact line pinning可以分享一份吗?巨蟹!
763400067@qq.com
此外,我发现把气泡底部的网格SHM多加密一道(就是涉及接触角的周围网格),影响就会小很多,您需要的话可以试试。
@capillaryFix 谢谢老师您的回复。
如果可以的话,您植入过的contact line pinning可以分享一份吗?巨蟹!
763400067@qq.com
此外,我发现把气泡底部的网格SHM多加密一道(就是涉及接触角的周围网格),影响就会小很多,您需要的话可以试试。
@李东岳 东岳老师好,感谢您的关注和回复。
这个是需要植入一个新的接触角条件,具体的是(Yuming Chen, 2009IJMF)那张截图中框起来的那个。
另外,我还没太关注原生 interFoam 是怎么处理这个问题的,我尽快再调研下,然后补充回复您。
东岳老师@李东岳 各位大佬@capillaryFix ,大家好。
我对这个问题调研有一段时间了。最开始发帖咨询这个问题,是源于在使用第三方求解器仿真浸没孔口注气气泡生长的时候,发现孔口周围的接触线那里有点奇怪。这两天在站里又逛了下,觉得这个帖子的问题也有点类似。结合最近的调研,我觉得原因可能在接触角边界条件。
现在简单总结一下自己的思考和想法,可能有错,新看到的朋友一定要慎重参考。
/·························分割线·························/
先汇报一下和Henning博士(TwoPhaseFlow求解器作者)在github上的沟通情况。
Henning博士的回复其实可以总结为两点:
/·························分割线·························/
现在整体调研下来后,我的观点是Henning博士的求解器没有问题,问题出在边界条件上。解决的办法是要新写一个边界条件,以实现接触线“钉扎效应”。
💡先介绍一下接触线钉扎效应,flow3d公司的这个仿真案例用液滴做了个很好的介绍:
这篇文献专门对液滴的钉扎效应做了边界条件处理,其所提供的附加材料更直观。
Cai, Z., Song, Y., 2021. Implementing Contact Angle Hysteresis in Moving Mesh-Based Two-Phase Flow Numerical Simulations. ACS Omega 6, 35711–35717.
简单来说,我理解的钉扎效应就是允许接触角在指定的范围内角度值可以任意变,但是接触线的位置不能动。
💡那么对于气泡,当注气针管的管壁无限薄,或者润湿性特别高的浸没孔口注气(许多文献称之为Mode A气泡,如下图a),也属于接触线钉扎效应的问题,因为其接触线固定在孔口,接触角可以随意改变,因此不该用constantAlphaContactAngle静态接触角边界条件仿真这个问题。
更细节的,用constantAlphaContactAngle静态接触角边界条件,仿真注气气泡生长会导致的问题可以借助(Albadawi et al., 2013CES)的水中注气气泡生长的实验参数进行的OpenFOAM仿真结果来说明,在注气流量非常低,即表面张力作用影响显著的工况下:
1.气泡生长阶段:可以看到使用constantAlphaContactAngle边界条件,因为interFlow求解器几何VOF方法要更正界面接触角,但是这种更正相当于强行按压界面回到指定接触角度,这就导致了气泡生长过程中界面不断在波动,并且速度分布也特别奇怪。强调一下这里展示的还是楔形计算的结果,三维结果会更加明显。
2.气泡颈缩脱离阶段,就更奇怪了,颈缩期间出现了十分明显的褶皱,并且在这些褶皱的地方,由于曲率变化太大,很多点出现压力激增,最终导致气泡界面变得扭曲,没法看。
所以我认为问题出在边界条件上。对于这种Mode A 气泡的生长,解决的办法是要新写一个边界条件,以实现接触线“钉扎效应”。
/·························分割线·························/
OK,紧接着从文献里看看几个学术团队对于这种Mode A 气泡的接触线边界条件是怎么处理的:
①💡 Yuming Chen,University of Stuttgart
Chen, Y., Mertz, R., Kulenovic, R., 2009. Numerical simulation of bubble formation on orifice plates with a moving contact line. Int. J. Multiphase Flow 35, 66–77.
(注意框起来的是模型B,这里是在介绍模型,和Mode A气泡没有必然联系,即:并不是Mode A气泡就对应Model A接触线模型)
②💡 Kuipers团队,Eindhoven University of Technology
Mirsandi, H., Rajkotwala, A.H., Baltussen, M.W., Peters, E.A.J.F., Kuipers, J.A.M., 2018. Numerical simulation of bubble formation with a moving contact line using Local Front Reconstruction Method. Chem. Eng. Sci. 187, 415–431.
然后...然后就开始有点吃力了,之前还编译了这个帖子中的边界条件dynamicAlphaContactAngleMikeWorth,结果他那个好像说得不是一回事。
现在自己想基于OpenFOAM自带的两个基础的接触角边界条件来改,但对constantAlphaContactAngle 和dynamicAlphaContactAngle的代码有点看不懂,请东岳老师,以及各位大佬出手指点,巨蟹!
此外,贴子码了一大篇,有很多自己的不严谨观点,请大家批评指正,这样能尽快学到东西。
@capillaryFix 下午好,铁子。您那边有新的解决方案和想法吗?
@浪迹天大 老师您好,按照这个方法,我需要更改controlDict中的maxDeltaT。但是会发现文件更新不起作用。
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application interFlowVb1;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 0.3;
deltaT 0.00005;
writeControl adjustableRunTime;
writeInterval 0.05;
purgeWrite 0;
writeFormat binary;
writePrecision 8;
writeCompression off;
timeFormat general;
timePrecision 8;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 0.5;
maxAlphaCo 0.5;
maxCapillaryNum 10; // stability criteria is 1
maxDeltaT 2e-5;//controlDict.a;
// maxDeltaT 1e-5;//controlDict.b;
// maxDeltaT 5e-6;//controlDict.c;
functions
{
fileUpdate1
{
type timeActivatedFileUpdate;
libs ("libutilityFunctionObjects.so");
writeControl timeStep;
writeInterval 1;
fileToUpdate "$FOAM_CASE/system/controlDict";
timeVsFile
(
(-1 "$FOAM_CASE/system/controlDict.a")
(1e-4 "$FOAM_CASE/system/controlDict.b")
(2e-4 "$FOAM_CASE/system/controlDict.c")
);
}
}
三个文件只有maxDeltaT有差别,请老师捞捞@李东岳 @浪迹天大
运行后结果提示:
timeActivatedFileUpdate: copying file
"~/orifice3Da/system/controlDict.c"
to:
"~/orifice3Da/system/controlDict"
Courant Number mean: 2.0171174e-08 max: 0.3369988
Interface Courant Number mean: 2.978204e-10 max: 0.22052861
Capillary Number: 2.4526254
deltaT = 2e-05
Time = 0.00022
文件有更新,并且maxDeltaT也更新为了1e-5; 但是它没有发挥作用,可以看到文件更新后的deltaT 依然是 2e-05,如果是我自己运行过程中手动改小maxDeltaT,它会马上从deltaT = 2e-05,便为deltaT = 1e-05。
@好运来辣 我以前测试的时候,记得paraview不支持中文路径,注意检查这个影响因素。
包括paraview的安装路径(盘符有中文名称不影响),以及仿真文件的所在路径,并且文件名中的特殊符号最好也避免一下。
@好运来辣
直接去paraview的官方网页下载
paraview官网
最好下载绿色版的直接解压就能用,win服务器没试过,需要你自己试一试。可以的话回来跟帖和大家分享一下
具体的见图
没看懂你具体问的是啥问题,是不是问windows下的wsl2的具体地址?
你在wsl2命令行输这个命令试试:
explorer.exe .
@李东岳 谢谢东岳老师,我用的就是v2106,然后我看了下我按照v2106的211215的补丁,用wmake -build-info看了下补丁版本是0,自己尝试手动打补丁(替换文件),但是最终没起效果。
最后干脆用了简单粗暴的办法,把openfoam-OpenFOAM-v2106.211215这个版本下载下来之后直接编译。
依然感谢东岳老师。
各位老师,最近在GitHub发现一位作者开源了它的求解器,其中明确提到需要用OpenFOAM v2106
我尝试用东岳老师提供的OpenFOAM全系列虚拟机下载中的v2106编译,一直报错,通过不了。
后来查询到作者有这么一句提示:
If using a pre-compiled version of OpenFOAM v2106, use pre-compiled patch 211215.
我对应去看了这个v2106的211215的补丁
请问一下各位老师,怎么打这个补丁,甚至是如何查看自己的版本是否已经打过这个补丁了?
谢谢各位老师 这个打补丁 完全不知道怎么下手
感谢东岳老师的全系列全集 非常好用@李东岳
@chengan-wang 投影不清楚怎么弄,缩放行不行?用transform把x轴的缩放因子改成0.00001,你看看效果?
@lyc 你好,我很少遇到。即便遇到都是重启就能解决的那种。
@lwjetmann 老师您好,再请教一下您。
1. 用wallshearstress后处理算壁面粘性剪切力,然后在paraview中计算出在壁面各点法向和切向的投影;
2. 基于wallshearstress functionObject进行修改,输出投影后的结果
按照您提到的上述方案1,对于圆球绕流(球体界面是“noSlip”边界条件),我顺利的输出了粘性剪切力,结果也验证的上。
想请您再帮忙看看另外一种情况:绕流气泡,即将边界条件改为Symmetry:
因为wallshearstress只对wall类型的边界计算粘性剪应力,因此不能再通过【方案1】输出界面上的粘性剪应力结果。
关于设置Symmetry边界条件的原因是源于这里:Stokes流中的圆球绕流的阻力系数,怎么设置才能算准。
对此,针对绕流气泡的结果(边界条件为Symmetry):
我尝试手动在结果中将Symmetry边界条件改为Wall,然后执行一次wallshearstress;
通过对比文献中气泡的压差阻力系数、法向粘性应力和切向粘性应力结果,输出的结果并不对
除此以外,是否只有像您提到的【方案二】基于wallshearstress functionObject进行修改,才能输出“绕流气泡”的粘性剪切力结果。
如果您方便的话,能否请您指点一些修改思路,谢谢老师。
@小泽同学 我此前还在想是否需要重新考虑从右下角的CD/DVD中加载一个适用于Ubuntu14.04版本的linux.iso,里面有vm-tools的安装包,相当于也是用里面写好的脚本重装VMware-tools。
emm... 总之,能用上就太好了,祝收敛!
@小泽同学 你好,不好意思今天出差回来,所以现在才回复。
目前可以确定关于剪切板的问题基本上就是出在这个open-vm-tools上,
因为open-vm-tools的各式各样的问题总是出现,也不好描述具体的处理方案。
因此,我建议按照以下代码重装一下open-vm-tools:
然后关闭虚拟机,接着重启再试试!
sudo apt-get autoremove open-vm-tools
sudo apt-get autoremove open-vm-tools-desktop
sudo apt-get update
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop
@小泽同学 能否大致描述下你的执行过程,以及目前的情况?
@lwjetmann 感谢老师,组里同学大家都不太会OpenFOAM,我马上也看一下。再次感谢。
@李东岳 好的,谢谢东岳老师。
我也自己看了下[forces.C、forces.H,forceCoeffs.C、forceCoeffs.H]四个文件,
正如您得教材里所说的,在forceCoeffs.C中,总阻力的计算是:
$Cd=\frac{F_{drag}}{(\sum|\mathbf{S}_f|)\frac{1}{2}\rho|\mathbf{U}|^2}$
顺着这个我在forces.C中找了下各个力的计算公式:
其关系到的几个变量fN、fT、fP以及Md,在forces.H最先出现,
但是整个文档都看了下,好像都没有给出这几个量的定义,类似的还有pf、pm等:
东岳老师,各位大佬,能否指点一下这几个变量通常要去如何理解它的物理意义?
谢谢!
各位老师好!
最近计算圆球绕流,通过在controlDict中添加functions,能在每步输出周围流体对界面施加的总阻力系数。
由于总阻力系数是“压差阻力系数”和“粘性阻力系数”两个分量的总和,进一步开启log选项后,能分别显示出这两项,如下:
也就是说:
总阻力系数$C_D=C_{D,p}+C_{D,\tau}$
其中压差阻力系数$C_{D,p}=-4\int_0^\pi p\cos\theta\sin\theta d\theta $
粘性阻力系数$\begin{aligned}
C_{D,\tau}& =C_{D,\tau1}+C_{D_{\tau2}} \
&=4\int_0^\pi\tau_{r\theta}\sin\theta\sin\theta d\theta+4\int_0^\pi\tau_{rr}\cos\theta\sin\theta d\theta
\end{aligned}$
我想运行的时候输出切向粘性阻力系数$C_{D,\tau1}$ 和法向粘性阻力系数$C_{D,\tau2}$
或是从运行完之后的流场结果中计算出来。
forces.C和forces.H,forceCoeffs.C以及forceCoeffs.H文件还不太看得明白,希望能有老师指点,谢谢!
@Qing 感谢老师!您说的特别清楚,这对我特别有帮助。再次谢谢您!