56 lines
1.5 KiB
C
56 lines
1.5 KiB
C
{
|
|
word alphaScheme("div(phi,alpha)");
|
|
word alpharScheme("div(phirb,alpha)");
|
|
|
|
// New formulation of phir: Co condition
|
|
surfaceScalarField phir
|
|
(
|
|
"phir",
|
|
faceIbMask*interface.cAlpha()*interface.nHatf()*
|
|
min
|
|
(
|
|
scalar(0.5)/ // This is ref compression Co number for cAlpha = 1
|
|
(
|
|
mesh.surfaceInterpolation::deltaCoeffs()*
|
|
mesh.time().deltaT()
|
|
),
|
|
mag(phi/mesh.magSf())
|
|
+ dimensionedScalar("small", dimVelocity, 1e-3)
|
|
)
|
|
);
|
|
|
|
fvScalarMatrix alpha1Eqn
|
|
(
|
|
fvm::ddt(alpha1)
|
|
+ fvm::div(phi, alpha1, alphaScheme)
|
|
+ fvm::div
|
|
(
|
|
-fvc::flux(-phir, scalar(1) - alpha1, alpharScheme),
|
|
alpha1,
|
|
alpharScheme
|
|
)
|
|
);
|
|
|
|
alpha1Eqn.relax();
|
|
alpha1Eqn.solve();
|
|
|
|
Info<< "Liquid phase volume fraction = "
|
|
<< alpha1.weightedAverage(mesh.V()).value()
|
|
<< " Min(alpha1) = " << min(cellIbMask*alpha1).value()
|
|
<< " Max(alpha1) = " << max(cellIbMask*alpha1).value()
|
|
<< endl;
|
|
|
|
rhoPhi = faceIbMask*(alpha1Eqn.flux()*(rho1 - rho2) + phi*rho2);
|
|
|
|
// Limit alpha to handle IB cells
|
|
// alpha1.max(0);
|
|
// alpha1.min(1);
|
|
|
|
// Update of interface and density
|
|
interface.correct();
|
|
twoPhaseProperties.correct();
|
|
|
|
// Calculate density using limited alpha1
|
|
rho = twoPhaseProperties.rho();
|
|
rho.correctBoundaryConditions();
|
|
}
|