34 namespace diameterModels
46 tmp<volScalarField> tInvDsm
60 const sizeGroup& fi = sizeGroups_[i];
62 invDsm += fi.a()*fi/fi.x();
71 tmp<volScalarField> tN
85 N += phase()*sizeGroups_[i]/sizeGroups_[i].x();
93 Foam::diameterModels::velocityGroup::fSum()
const 95 tmp<volScalarField> tsumSizeGroups
109 sumSizeGroups += sizeGroups_[i];
112 return tsumSizeGroups;
116 void Foam::diameterModels::velocityGroup::scale()
118 Info<<
"Scaling sizeGroups for velocityGroup " << phase().name() <<
endl;
122 sizeGroups_[i].max(0);
129 sizeGroups_[i] /= f_;
131 sizeGroups_[i].correctBoundaryConditions();
140 const dictionary& diameterProperties,
141 const phaseModel& phase
144 diameterModel(diameterProperties, phase),
145 popBalName_(diameterProperties.
lookup(
"populationBalance")),
164 diameterProperties.
lookup(
"sizeGroups"),
165 sizeGroup::iNew(phase, *this)
167 d_(IOobject::groupName(
"d", phase.
name()), dsm())
187 tmp<volScalarField> tA
203 a += fi.a()*fi/fi.x();
212 const populationBalanceModel& popBal =
213 phase().
mesh().lookupObject<populationBalanceModel>(popBalName_);
215 const pimpleControl& pimple =
216 phase().
mesh().lookupObject<pimpleControl>(
"solutionControl");
218 if (!popBal.solveOnFinalIterOnly() || pimple.finalPimpleIter())
222 sizeGroups_[
i].correct();
227 phase().
mesh().solution().solverDict(popBalName_)
228 .lookupOrDefault<Switch>
240 f_.correctBoundaryConditions();
242 Info<<
phase().
name() <<
" sizeGroups-sum volume fraction, min, max = " 243 << f_.weightedAverage(
phase().
mesh().V()).value()
244 <<
' ' <<
min(f_).value()
245 <<
' ' <<
max(f_).value()
250 Info<< this->
phase().
name() <<
" Sauter mean diameter, min, max = " 251 << d_.weightedAverage(d_.mesh().V()).value()
252 <<
' ' <<
min(d_).value()
253 <<
' ' <<
max(d_).value()
261 const dictionary& phaseProperties
#define forAll(list, i)
Loop across all elements in list.
virtual tmp< volScalarField > d() const
Get the diameter field.
dimensionedSphericalTensor inv(const dimensionedSphericalTensor &dt)
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, const Internal &, const PtrList< fvPatchField< scalar >> &)
Return a temporary field constructed from name,.
Ostream & endl(Ostream &os)
Add newline and flush stream.
sizeGroup(const word &name, const dictionary &dict, const phaseModel &phase, const velocityGroup &velocityGroup, const fvMesh &mesh)
const word & name() const
const dimensionSet dimless
velocityGroup(const dictionary &diameterProperties, const phaseModel &phase)
Construct from dictionary and phase.
const phaseModel & phase() const
Return const-reference to the phase.
Macros for easy insertion into run-time selection tables.
virtual tmp< volScalarField > a() const
Get the surface area per unit volume field.
const dimensionSet dimLength
GeometricField< scalar, fvPatchField, volMesh > volScalarField
const tmp< volScalarField > a() const
Return representative surface area of the sizeGroup.
stressControl lookup("compactNormalStress") >> compactNormalStress
virtual bool read(const dictionary &phaseProperties)
Read phaseProperties dictionary.
virtual ~velocityGroup()
Destructor.
void min(const dimensioned< Type > &)
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
const Mesh & mesh() const
Return mesh.
defineTypeNameAndDebug(combustionModel, 0)
word name(const complex &)
Return a string representation of a complex.
Internal & ref()
Return a reference to the dimensioned internal field.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
void max(const dimensioned< Type > &)
const dimensionSet dimVolume
virtual bool read(const dictionary &diameterProperties)
Read diameterProperties dictionary.
A class for managing temporary objects.
virtual void correct()
Correct the model.
const label & i() const
Return index of the size group within the population balance.