multiphaseEulerFoam: Improved stabilisation of Yi, fi and kappa when alpha -> 0

The new stabilisation approach avoids any conservation error where the
phase-fraction is greater than residualAlpha by only applying the stabilising
terms to the transport equations in regions where the phase-fraction is less
than residualAlpha.
This commit is contained in:
Henry Weller
2022-02-28 19:08:28 +00:00
parent f6e8193553
commit 3df883d7e6
3 changed files with 30 additions and 8 deletions

View File

@ -210,8 +210,16 @@ void Foam::diameterModels::shapeModels::fractal::correct()
- sinteringModel_->R()
+ Su_
- fvm::Sp(popBal.Sp(fi.i()())*fi, kappa_)
+ fvc::ddt(fi.phase().residualAlpha(), kappa_)
- fvm::ddt(fi.phase().residualAlpha(), kappa_)
- correction
(
fvm::Sp
(
max(phase.residualAlpha() - alpha, scalar(0))
/sizeGroup_.mesh().time().deltaT(),
kappa_
)
)
);
kappaEqn.relax();

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2015-2021 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2015-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -110,8 +110,15 @@ Foam::MultiComponentPhaseModel<BasePhaseModel>::YiEqn(volScalarField& Yi)
==
alpha*this->R(Yi)
+ fvc::ddt(residualAlpha_*rho, Yi)
- fvm::ddt(residualAlpha_*rho, Yi)
- correction
(
fvm::Sp
(
max(residualAlpha_ - alpha, scalar(0))*rho
/this->mesh().time().deltaT(),
Yi
)
)
);
}

View File

@ -1066,7 +1066,6 @@ void Foam::diameterModels::populationBalanceModel::solve()
sizeGroup& fi = sizeGroups_[i];
const phaseModel& phase = fi.phase();
const volScalarField& alpha = phase;
const dimensionedScalar& residualAlpha = phase.residualAlpha();
const volScalarField& rho = phase.thermo().rho();
fvScalarMatrix sizeGroupEqn
@ -1077,8 +1076,16 @@ void Foam::diameterModels::populationBalanceModel::solve()
Su_[i]
- fvm::Sp(Sp_[i], fi)
+ fluid_.fvModels().source(alpha, rho, fi)/rho
+ fvc::ddt(residualAlpha, fi)
- fvm::ddt(residualAlpha, fi)
- correction
(
fvm::Sp
(
max(phase.residualAlpha() - alpha, scalar(0))
/this->mesh().time().deltaT(),
fi
)
)
);
sizeGroupEqn.relax();