Euler 多相流如何获取综合速度

我现在使用 reactingTwoPhaseEulerFoam,所获取的速度分别为 U.gas 和 U.liquid,我想获取一个综合的速度,请问下各位大神,如何操作?

所使用的 OpenFOAM 的版本是 v1912。

获取综合速度,要看综合速度如何定义。一般情况下,可以把多相流综合速度定义为

U = \dfrac{\sum U_i\rho_i\alpha_i}{\sum\rho_i\alpha_i}=\dfrac{U_g\rho_g\alpha_g+U_\ell\rho_\ell\alpha_\ell}{\rho_g \alpha_g + \rho_\ell\alpha_\ell}

因此,针对你说的 reactingTwoPhaseEulerFoam,就需要设定一个变量存储综合速度,在该求解器的源代码 applications/reactingEulerFoam/reactingTwoPhaseEulerFoam/createFieldRefs.H 末尾添加

volVectorField U
(
    IOobject
    (
        "U",
        runTime.timeName(),
        mesh,
        IOobject::READ_IF_PRESENT,
        IOobject::AUTO_WRITE
    ),
    U1
);

然后,在主程序源代码上添加

        U = (U1 * rho1 * alpha1 + U2 * rho2 * alpha2 )/(rho1*alpha1 + rho2*alpha2);

        runTime.write(); // 原来有的

一般说来,不会直接在源代码上进行改动,而将 reactingTwoPhaseEulerFoam 整个 copy 到用户目录下后,进行上述修改源码的操作,并对 Make/files 修改为编译到自己的用户目录下

EXE = $(FOAM_USER_APPBIN)/reactingTwoPhaseEulerFoam.user

为了避免混淆,可以在执行文件的名称后面加个用户名。然后使用 wmake 进行编译就可以了。