openfoam中interinterPhaseChangeFoam的动量方程代码
时间: 2023-06-18 17:02:02 浏览: 64
在 OpenFOAM 中,InterPhaseChangeFoam solver 的动量方程主要分为两部分:气相和液相。具体代码如下:
气相部分:
```c++
fvVectorMatrix UEqn
(
fvm::ddt(U)
+ fvm::div(phi, U)
- fvm::laplacian(muEff, U)
);
UEqn.relax();
solve(UEqn == -fvc::grad(p));
```
其中,UEqn 表示动量方程,U 表示速度向量,phi 表示速度通量,muEff 表示粘性系数,p 表示压力。`fvm::ddt` 表示时间导数,`fvm::div` 表示散度,`fvm::laplacian` 表示拉普拉斯算子,`fvc::grad` 表示梯度。
液相部分:
```c++
fvVectorMatrix UEql
(
fvm::ddt(UL)
+ fvm::div(phiL, UL)
- fvm::laplacian(muEffL, UL)
);
UEql.relax();
solve(UEql == -fvc::grad(pL));
```
其中,UEql 表示液相动量方程,UL 表示液相速度向量,phiL 表示液相速度通量,muEffL 表示液相粘性系数,pL 表示液相压力。
需要注意的是,在 InterPhaseChangeFoam solver 中,气相和液相之间的速度通量通过一个额外的边界条件联系在一起,具体实现如下:
```c++
surfaceScalarField alpha1
(
"alpha1",
fvc::interpolate(alpha1_)
);
surfaceScalarField alpha2
(
"alpha2",
1.0 - alpha1
);
phi = fvc::interpolate(alpha1*UEqn.flux()
+ alpha2*UEql.flux()
+ (1.0 - alpha1 - alpha2)*U*magSf);
```
其中,alpha1 和 alpha2 表示两相的体积分数,phi 表示总的速度通量。