30 template<
class ParcelType>
31 template<
class CloudType>
45 cloud.
name() +
":volumeAverage",
49 cloud.solution().dict(),
59 cloud.
name() +
":radiusAverage",
63 cloud.solution().dict(),
73 cloud.
name() +
":rhoAverage",
77 cloud.solution().dict(),
87 cloud.
name() +
":uAverage",
91 cloud.solution().dict(),
101 cloud.
name() +
":uSqrAverage",
105 cloud.solution().dict(),
115 cloud.
name() +
":frequencyAverage",
119 cloud.solution().dict(),
129 cloud.
name() +
":massAverage",
133 cloud.solution().dict(),
141 template<
class ParcelType>
142 template<
class CloudType>
150 volumeAverage_() = 0;
151 radiusAverage_() = 0;
155 frequencyAverage_() = 0;
165 cloud.
name() +
":weightAverage",
169 cloud.solution().dict(),
179 const tetIndices tetIs = p.currentTetIndices();
181 const scalar m = p.nParticle()*p.mass();
183 volumeAverage_->add(p.coordinates(), tetIs, p.nParticle()*p.volume());
184 rhoAverage_->add(p.coordinates(), tetIs, m*p.rho());
185 uAverage_->add(p.coordinates(), tetIs, m*p.U());
186 massAverage_->add(p.coordinates(), tetIs, m);
188 volumeAverage_->average();
189 massAverage_->average();
190 rhoAverage_->average(massAverage_);
191 uAverage_->average(massAverage_);
197 const tetIndices tetIs = p.currentTetIndices();
199 const vector u = uAverage_->interpolate(p.coordinates(), tetIs);
205 p.nParticle()*p.mass()*
magSqr(p.U() - u)
208 uSqrAverage_->average(massAverage_);
211 radiusAverage_() = volumeAverage_();
216 const tetIndices tetIs = p.currentTetIndices();
222 p.nParticle()*
pow(p.volume(), 2.0/3.0)
226 radiusAverage_->average(weightAverage);
233 const tetIndices tetIs = p.currentTetIndices();
235 const scalar a = volumeAverage_->interpolate(p.coordinates(), tetIs);
236 const scalar r = radiusAverage_->interpolate(p.coordinates(), tetIs);
237 const vector u = uAverage_->interpolate(p.coordinates(), tetIs);
239 const scalar
f = 0.75*a/
pow3(r)*
sqr(0.5*p.d() + r)*
mag(p.U() - u);
241 frequencyAverage_->add(p.coordinates(), tetIs, p.nParticle()*f*
f);
243 weightAverage.
add(p.coordinates(), tetIs, p.nParticle()*
f);
245 frequencyAverage_->average(weightAverage);
249 template<
class ParcelType>
250 template<
class CloudType>
259 template<
class ParcelType>
260 template<
class CloudType>
const word & name() const
Return name.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
static word timeName(const scalar, const int precision=precision_)
Return time name of given scalar time.
virtual void add(const barycentric &coordinates, const tetIndices &tetIs, const Type &value)=0
Member Functions.
Wrapper around kinematic parcel types to add MPPIC modelling.
Base class for lagrangian averaging methods.
Storage and named access for the indices of a tet which is part of the decomposition of a cell...
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
ParcelType parcelType
Type of parcel the cloud was instantiated for.
dimensioned< scalar > magSqr(const dimensioned< Type > &)
const Time & time() const
Return time.
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
const fvMesh & mesh() const
Return refernce to the mesh.
dimensionedScalar pow3(const dimensionedScalar &ds)
virtual void average()
Calculate the average.
dimensioned< scalar > mag(const dimensioned< Type > &)
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
const objectRegistry & db() const
Return the local objectRegistry.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Templated base class for dsmc cloud.