mirror of
https://github.com/ParticulateFlow/CFDEMcoupling-PFM.git
synced 2025-12-08 06:37:44 +00:00
Allow turbulentDispersion model to use kinetic energy either from object registry or calculated from turbulence models.
This commit is contained in:
@ -74,7 +74,10 @@ turbulentDispersion::turbulentDispersion
|
||||
sm.mesh(),
|
||||
dimensionedScalar("zero", dimensionSet(0,0,0,0,0,0,0), 0.0)
|
||||
),
|
||||
minTurbKinetcEnergy_(propsDict_.lookupOrDefault<scalar>("minTurbKinetcEnergy", 0.0)),
|
||||
minTurbKineticEnergy_(propsDict_.lookupOrDefault<scalar>("minTurbKineticEnergy", 0.0)),
|
||||
turbKineticEnergyFieldName_(propsDict_.lookupOrDefault<word>("turbKineticEnergyFieldName","")),
|
||||
turbKineticEnergy_(NULL),
|
||||
existTurbKineticEnergyInObjReg_(false),
|
||||
voidfractionFieldName_(propsDict_.lookupOrDefault<word>("voidfractionFieldName","voidfraction")),
|
||||
voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),
|
||||
critVoidfraction_(propsDict_.lookupOrDefault<scalar>("critVoidfraction", 0.9)),
|
||||
@ -102,6 +105,29 @@ turbulentDispersion::turbulentDispersion
|
||||
}
|
||||
}
|
||||
|
||||
if (turbKineticEnergyFieldName_ != "")
|
||||
{
|
||||
existTurbKineticEnergyInObjReg_ = true;
|
||||
volScalarField& k(const_cast<volScalarField&>(sm.mesh().lookupObject<volScalarField> (turbKineticEnergyFieldName_)));
|
||||
turbKineticEnergy_ = &k;
|
||||
}
|
||||
else
|
||||
{
|
||||
turbKineticEnergy_ = new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"turbKinEnergy",
|
||||
mesh_.time().timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar("zero", dimensionSet(0,2,-2,0,0), 0)
|
||||
);
|
||||
}
|
||||
|
||||
// make sure this is the last force model in list so that fluid velocity does not get overwritten
|
||||
label numLastForceModel = sm.nrForceModels();
|
||||
word lastForceModel = sm.forceModels()[numLastForceModel-1];
|
||||
@ -116,6 +142,7 @@ turbulentDispersion::turbulentDispersion
|
||||
|
||||
turbulentDispersion::~turbulentDispersion()
|
||||
{
|
||||
if (!existTurbKineticEnergyInObjReg_) delete turbKineticEnergy_;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * private Member Functions * * * * * * * * * * * * * //
|
||||
@ -130,7 +157,10 @@ bool turbulentDispersion::ignoreCell(label cell) const
|
||||
|
||||
void turbulentDispersion::setForce() const
|
||||
{
|
||||
const volScalarField turbKinetcEnergy(particleCloud_.turbulence().k());
|
||||
if (!existTurbKineticEnergyInObjReg_)
|
||||
{
|
||||
*turbKineticEnergy_ = particleCloud_.turbulence().k()();
|
||||
}
|
||||
|
||||
label cellI = -1;
|
||||
label patchID = -1;
|
||||
@ -142,7 +172,7 @@ void turbulentDispersion::setForce() const
|
||||
vector position = vector::zero;
|
||||
word patchName("");
|
||||
|
||||
interpolationCellPoint<scalar> turbKinetcEnergyInterpolator_(turbKinetcEnergy);
|
||||
interpolationCellPoint<scalar> turbKineticEnergyInterpolator_(*turbKineticEnergy_);
|
||||
|
||||
for(int index = 0;index < particleCloud_.numberOfParticles(); ++index)
|
||||
{
|
||||
@ -156,14 +186,14 @@ void turbulentDispersion::setForce() const
|
||||
if (interpolate_)
|
||||
{
|
||||
position = particleCloud_.position(index);
|
||||
k = turbKinetcEnergyInterpolator_.interpolate(position,cellI);
|
||||
k = turbKineticEnergyInterpolator_.interpolate(position,cellI);
|
||||
}
|
||||
else
|
||||
{
|
||||
k = turbKinetcEnergy[cellI];
|
||||
k = (*turbKineticEnergy_)[cellI];
|
||||
}
|
||||
|
||||
if (k < minTurbKinetcEnergy_) k = minTurbKinetcEnergy_;
|
||||
if (k < minTurbKineticEnergy_) k = minTurbKineticEnergy_;
|
||||
|
||||
flucU=unitFlucDir()*Foam::sqrt(2.0*k);
|
||||
|
||||
|
||||
@ -60,7 +60,13 @@ protected:
|
||||
|
||||
mutable volScalarField wallIndicatorField_;
|
||||
|
||||
scalar minTurbKinetcEnergy_;
|
||||
scalar minTurbKineticEnergy_;
|
||||
|
||||
word turbKineticEnergyFieldName_;
|
||||
|
||||
volScalarField* turbKineticEnergy_;
|
||||
|
||||
bool existTurbKineticEnergyInObjReg_;
|
||||
|
||||
word voidfractionFieldName_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user