fvModels::filmCloudTransfer: Ensure film->cloud transfer consistency

This commit is contained in:
Henry Weller
2023-05-17 14:34:12 +01:00
parent 00cb37652f
commit 18dd1e5b5b
5 changed files with 24 additions and 26 deletions

View File

@ -527,9 +527,6 @@ void Foam::CloudFilmTransfer<CloudType>::cacheFilmFields(const label filmi)
this->deltaFilmPatch_ = filmCloudTransfer.deltaToCloud(); this->deltaFilmPatch_ = filmCloudTransfer.deltaToCloud();
// Ensure the film->cloud ejection transfer is up-to-date
filmCloudTransfer.correct();
if (filmCloudTransfer.ejecting()) if (filmCloudTransfer.ejecting())
{ {
this->massParcelPatch_ = filmCloudTransfer.ejectedMassToCloud(); this->massParcelPatch_ = filmCloudTransfer.ejectedMassToCloud();

View File

@ -58,7 +58,7 @@ Foam::fv::filmCloudTransfer::filmCloudTransfer
: :
fvModel(sourceName, modelType, mesh, dict), fvModel(sourceName, modelType, mesh, dict),
film_(mesh.lookupObject<solvers::isothermalFilm>(solver::typeName)), film_(mesh.lookupObject<solvers::isothermalFilm>(solver::typeName)),
curTimeIndex_(-1), correctEjection_(false),
ejection_ ejection_
( (
dict.found("ejection") dict.found("ejection")
@ -84,16 +84,13 @@ Foam::wordList Foam::fv::filmCloudTransfer::addSupFields() const
void Foam::fv::filmCloudTransfer::correct() void Foam::fv::filmCloudTransfer::correct()
{ {
if (curTimeIndex_ == mesh().time().timeIndex()) if (ejection_.valid() && correctEjection_)
{
return;
}
curTimeIndex_ = mesh().time().timeIndex();
if (ejection_.valid())
{ {
ejection_->correct(); ejection_->correct();
// Do not correct ejection rate until the cloud has evolved
// to include the last set of ejected parcels
correctEjection_ = false;
} }
} }
@ -270,6 +267,9 @@ void Foam::fv::filmCloudTransfer::resetFromCloudFields()
momentumFromCloud_ = Zero; momentumFromCloud_ = Zero;
pressureFromCloud_ = 0; pressureFromCloud_ = 0;
energyFromCloud_ = 0; energyFromCloud_ = 0;
// Enable ejection correction on next call to correct()
correctEjection_ = true;
} }

View File

@ -70,9 +70,6 @@ class filmCloudTransfer
//- The film model //- The film model
const solvers::isothermalFilm& film_; const solvers::isothermalFilm& film_;
//- Current time index (used for updating)
mutable label curTimeIndex_;
// Transfers from cloud // Transfers from cloud
scalarField massFromCloud_; scalarField massFromCloud_;
@ -80,6 +77,10 @@ class filmCloudTransfer
scalarField pressureFromCloud_; scalarField pressureFromCloud_;
scalarField energyFromCloud_; scalarField energyFromCloud_;
//- Switch to ensure the ejection rate is not updated until
// the last set of ejected parcels have been included in the cloud
bool correctEjection_;
//- Pointer to the ejection model //- Pointer to the ejection model
autoPtr<ejectionModel> ejection_; autoPtr<ejectionModel> ejection_;

View File

@ -176,7 +176,7 @@ void Foam::fv::VoFFilmTransfer::correct()
&& alpha[facei] < alphaToFilm_ && alpha[facei] < alphaToFilm_
) )
{ {
transferRate_[celli] = -transferRateCoeff_/deltaT; transferRate_[celli] = transferRateCoeff_/deltaT;
} }
} }
} }
@ -260,7 +260,7 @@ void Foam::fv::VoFFilmTransfer::addSup
&filmVoFTransfer::transferRate, &filmVoFTransfer::transferRate,
dimVolume dimVolume
) )
+ fvm::Sp(transferRate_, eqn.psi()); - fvm::Sp(transferRate_, eqn.psi());
} }
else else
{ {
@ -291,7 +291,7 @@ void Foam::fv::VoFFilmTransfer::addSup
&filmVoFTransfer::rhoTransferRate, &filmVoFTransfer::rhoTransferRate,
dimMass dimMass
) )
+ fvm::Sp(alpha()*transferRate_, eqn.psi()); - fvm::Sp(alpha()*transferRate_, eqn.psi());
} }
else else
{ {
@ -323,7 +323,7 @@ void Foam::fv::VoFFilmTransfer::addSup
&filmVoFTransfer::heTransferRate, &filmVoFTransfer::heTransferRate,
dimEnergy dimEnergy
) )
+ fvm::Sp(alpha()*rho()*transferRate_, eqn.psi()); - fvm::Sp(alpha()*rho()*transferRate_, eqn.psi());
} }
else else
{ {
@ -352,7 +352,7 @@ void Foam::fv::VoFFilmTransfer::addSup
&filmVoFTransfer::UTransferRate, &filmVoFTransfer::UTransferRate,
dimMass*dimVelocity dimMass*dimVelocity
) )
+ fvm::Sp(alpha_()*thermo_.rho()()*transferRate_, eqn.psi()); - fvm::Sp(alpha_()*thermo_.rho()()*transferRate_, eqn.psi());
} }
@ -370,7 +370,7 @@ inline Foam::tmp<Foam::Field<Type>> Foam::fv::VoFFilmTransfer::TransferRate
( (
UIndirectList<Type> UIndirectList<Type>
( (
-alpha_()*transferRate_*mesh().V()*f, alpha_()*transferRate_*mesh().V()*f,
faceCells faceCells
) )
) )

View File

@ -159,7 +159,7 @@ void Foam::fv::filmVoFTransfer::correct()
|| alphaVoF[facei] > alphaToVoF_ || alphaVoF[facei] > alphaToVoF_
) )
{ {
transferRate_[celli] = -transferRateCoeff_/deltaT; transferRate_[celli] = transferRateCoeff_/deltaT;
} }
} }
} }
@ -260,7 +260,7 @@ void Foam::fv::filmVoFTransfer::addSup
&VoFFilmTransfer::rhoTransferRate, &VoFFilmTransfer::rhoTransferRate,
dimMass dimMass
) )
+ fvm::Sp(transferRate_*rho(), eqn.psi()); - fvm::Sp(transferRate_*rho(), eqn.psi());
} }
else else
{ {
@ -292,7 +292,7 @@ void Foam::fv::filmVoFTransfer::addSup
&VoFFilmTransfer::heTransferRate, &VoFFilmTransfer::heTransferRate,
dimEnergy dimEnergy
) )
+ fvm::Sp(alpha()*rho()*transferRate_, eqn.psi()); - fvm::Sp(alpha()*rho()*transferRate_, eqn.psi());
} }
else else
{ {
@ -322,7 +322,7 @@ void Foam::fv::filmVoFTransfer::addSup
&VoFFilmTransfer::UTransferRate, &VoFFilmTransfer::UTransferRate,
dimMomentum dimMomentum
) )
+ fvm::Sp(alpha()*rho()*transferRate_, eqn.psi()); - fvm::Sp(alpha()*rho()*transferRate_, eqn.psi());
} }
@ -340,7 +340,7 @@ inline Foam::tmp<Foam::Field<Type>> Foam::fv::filmVoFTransfer::TransferRate
( (
UIndirectList<Type> UIndirectList<Type>
( (
-film_.alpha()*transferRate_*mesh().V()*f, film_.alpha()*transferRate_*mesh().V()*f,
faceCells faceCells
) )
) )