Some changes to drag and pressure force in the presence of fines.

This commit is contained in:
Thomas Lichtenegger
2021-10-20 09:02:25 +02:00
parent e871612ac7
commit f12fef0f85
4 changed files with 55 additions and 17 deletions

View File

@ -52,7 +52,8 @@ BeetstraDragPoly::BeetstraDragPoly
dFine_(1.0),
alphaP_(NULL),
alphaSt_(NULL),
dSauter_(NULL)
dSauter_(NULL),
dSauterMix_(NULL)
{
// if fines are present, take mixture dSauter, otherwise normal dSauter
if (fines_)
@ -63,13 +64,11 @@ BeetstraDragPoly::BeetstraDragPoly
volScalarField& alphaSt(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField> ("alphaSt")));
alphaSt_ = &alphaSt;
volScalarField& dSauter(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField> ("dSauterMix")));
dSauter_ = &dSauter;
}
else
{
volScalarField& dSauter(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField> ("dSauter")));
dSauter_ = &dSauter;
dSauterMix_ = &dSauter;
}
volScalarField& dSauter(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField> ("dSauter")));
dSauter_ = &dSauter;
}
@ -84,15 +83,19 @@ scalar BeetstraDragPoly::effDiameter(double d, label cellI, label index) const
{
scalar dS = (*dSauter_)[cellI];
scalar effD = d*d / dS + 0.064*d*d*d*d / (dS*dS*dS);
if (fines_)
{
scalar fineCorr = dFine_*dFine_ / dS + 0.064*dFine_*dFine_*dFine_*dFine_ / (dS*dS*dS);
fineCorr *= d*d*d / (dFine_*dFine_*dFine_) * (*alphaSt_)[cellI] / (*alphaP_)[cellI];
effD += fineCorr;
scalar dSMix = (*dSauterMix_)[cellI];
scalar aP = (*alphaP_)[cellI];
scalar aSt = (*alphaSt_)[cellI];
effD = d*d*dS + 0.064*d*d*d*d / dS;
effD *= 1.0 / (dSMix*dSMix);
effD *= (aP + aSt)/aP;
}
if (particleCloud_.getParticleEffVolFactors())
if (particleCloud_.getParticleEffVolFactors())
{
scalar effVolFac = particleCloud_.particleEffVolFactor(index);
effD *= effVolFac;
@ -103,7 +106,14 @@ scalar BeetstraDragPoly::effDiameter(double d, label cellI, label index) const
scalar BeetstraDragPoly::meanSauterDiameter(double d, label cellI) const
{
return (*dSauter_)[cellI];
if (fines_)
{
return (*dSauterMix_)[cellI];
}
else
{
return (*dSauter_)[cellI];
}
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

View File

@ -43,17 +43,19 @@ class BeetstraDragPoly
protected:
const bool fines_;
scalar dFine_;
volScalarField* alphaP_;
volScalarField* alphaSt_;
volScalarField* dSauter_;
volScalarField* dSauterMix_;
scalar effDiameter(double, label, label) const;
scalar meanSauterDiameter(double, label) const;
public:

View File

@ -66,6 +66,9 @@ gradPForce::gradPForce
p_(sm.mesh().lookupObject<volScalarField> (pFieldName_)),
velocityFieldName_(propsDict_.lookup("velocityFieldName")),
U_(sm.mesh().lookupObject<volVectorField> (velocityFieldName_)),
alphaP_(NULL),
alphaSt_(NULL),
fines_(propsDict_.lookupOrDefault<bool>("fines",false)),
useRho_(false),
useU_(false),
addedMassCoeff_(0.0)
@ -102,6 +105,14 @@ gradPForce::gradPForce
}
}
if (fines_)
{
volScalarField& alphaP(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField> ("alphaP")));
alphaP_ = &alphaP;
volScalarField& alphaSt(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField> ("alphaSt")));
alphaSt_ = &alphaSt;
}
if (propsDict_.found("useU"))
useU_ = true;
@ -148,6 +159,8 @@ void gradPForce::setForce() const
vector gradP;
scalar Vs;
scalar rho;
scalar aP;
scalar aSt;
vector position;
vector force;
label cellI;
@ -179,6 +192,13 @@ void gradPForce::setForce() const
Vs = particleCloud_.particleVolume(index);
rho = forceSubM(0).rhoField()[cellI];
if (fines_)
{
aP = (*alphaP_)[cellI];
aSt = (*alphaSt_)[cellI];
Vs *= (1+aSt/aP);
}
// calc particle's pressure gradient force
if (useRho_)
force = -Vs*gradP*rho*(1.0+addedMassCoeff_);

View File

@ -71,6 +71,12 @@ private:
const volVectorField& U_;
volScalarField* alphaP_;
volScalarField* alphaSt_;
bool fines_;
bool useRho_;
bool useU_; // if false: substitution p=0.5*rho*U^2