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:
@ -210,8 +210,16 @@ void Foam::diameterModels::shapeModels::fractal::correct()
|
|||||||
- sinteringModel_->R()
|
- sinteringModel_->R()
|
||||||
+ Su_
|
+ Su_
|
||||||
- fvm::Sp(popBal.Sp(fi.i()())*fi, kappa_)
|
- 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();
|
kappaEqn.relax();
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration | Website: https://openfoam.org
|
\\ / O peration | Website: https://openfoam.org
|
||||||
\\ / A nd | Copyright (C) 2015-2021 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2015-2022 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -110,8 +110,15 @@ Foam::MultiComponentPhaseModel<BasePhaseModel>::YiEqn(volScalarField& Yi)
|
|||||||
==
|
==
|
||||||
alpha*this->R(Yi)
|
alpha*this->R(Yi)
|
||||||
|
|
||||||
+ fvc::ddt(residualAlpha_*rho, Yi)
|
- correction
|
||||||
- fvm::ddt(residualAlpha_*rho, Yi)
|
(
|
||||||
|
fvm::Sp
|
||||||
|
(
|
||||||
|
max(residualAlpha_ - alpha, scalar(0))*rho
|
||||||
|
/this->mesh().time().deltaT(),
|
||||||
|
Yi
|
||||||
|
)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1066,7 +1066,6 @@ void Foam::diameterModels::populationBalanceModel::solve()
|
|||||||
sizeGroup& fi = sizeGroups_[i];
|
sizeGroup& fi = sizeGroups_[i];
|
||||||
const phaseModel& phase = fi.phase();
|
const phaseModel& phase = fi.phase();
|
||||||
const volScalarField& alpha = phase;
|
const volScalarField& alpha = phase;
|
||||||
const dimensionedScalar& residualAlpha = phase.residualAlpha();
|
|
||||||
const volScalarField& rho = phase.thermo().rho();
|
const volScalarField& rho = phase.thermo().rho();
|
||||||
|
|
||||||
fvScalarMatrix sizeGroupEqn
|
fvScalarMatrix sizeGroupEqn
|
||||||
@ -1077,8 +1076,16 @@ void Foam::diameterModels::populationBalanceModel::solve()
|
|||||||
Su_[i]
|
Su_[i]
|
||||||
- fvm::Sp(Sp_[i], fi)
|
- fvm::Sp(Sp_[i], fi)
|
||||||
+ fluid_.fvModels().source(alpha, rho, fi)/rho
|
+ 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();
|
sizeGroupEqn.relax();
|
||||||
|
|||||||
Reference in New Issue
Block a user