50#ifndef KinematicParcel_H
51#define KinematicParcel_H
66template<
class ParcelType>
74template<
class ParcelType>
85template<
class ParcelType>
93 static label maxTrackAttempts;
154 inline scalar
rhoMin()
const;
157 inline scalar
rho0()
const;
243 template <
class TrackCloudType>
246 const TrackCloudType&
cloud,
266 inline scalar
rhoc()
const;
269 inline scalar&
rhoc();
278 inline scalar
muc()
const;
281 inline scalar&
muc();
284 inline const vector&
g()
const;
293 template<
class TrackCloudType>
343 template<
class TrackCloudType>
346 TrackCloudType&
cloud,
378 +
" (UTurbx UTurby UTurbz)"
379 +
" (UCorrectx UCorrecty UCorrectz)"
392 const label tetFacei,
411 const label tetFacei,
414 const scalar nParticle0,
416 const scalar dTarget0,
427 bool newFormat =
true
476 inline bool active()
const;
479 inline label
typeId()
const;
485 inline scalar
d()
const;
491 inline const vector&
U()
const;
494 inline scalar
rho()
const;
497 inline scalar
age()
const;
500 inline scalar
tTurb()
const;
512 inline void active(
const bool state);
530 inline scalar&
rho();
533 inline scalar&
age();
536 inline scalar&
tTurb();
548 inline scalar
massCell(
const trackingData& td)
const;
551 inline scalar
mass()
const;
557 inline scalar
volume()
const;
560 inline static scalar
volume(
const scalar
d);
563 inline scalar
areaP()
const;
566 inline static scalar
areaP(
const scalar
d);
569 inline scalar
areaS()
const;
572 inline static scalar
areaS(
const scalar
d);
575 inline scalar
Re(
const trackingData& td)
const;
578 inline static scalar
Re
590 const trackingData& td,
595 inline static scalar
We
607 const trackingData& td,
612 inline static scalar
Eo
626 template<
class TrackCloudType>
631 template<
class TrackCloudType>
634 TrackCloudType&
cloud,
640 template<
class TrackCloudType>
643 TrackCloudType&
cloud,
649 template<
class TrackCloudType>
652 TrackCloudType&
cloud,
658 template<
class TrackCloudType>
661 TrackCloudType&
cloud,
670 template<
class TrackCloudType>
673 TrackCloudType&
cloud,
675 const scalar trackTime
683 template<
class TrackCloudType>
688 template<
class TrackCloudType>
692 template<
class TrackCloudType>
707 template<
class TrackCloudType>
711 template<
class TrackCloudType>
720 const bool namesOnly =
false
724 template<
class CloudType>
728 template<
class CloudType>
734 friend Ostream& operator<< <ParcelType>
const uniformDimensionedVectorField & g
Templated base class for dsmc cloud.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Class to hold kinematic particle constant properties.
constantProperties()
Default construct.
scalar minParcelMass() const
Return const access to the minimum parcel mass.
scalar rho0() const
Return const access to the particle density.
label parcelTypeId() const
Return const access to the parcel type id.
const dictionary dict_
Constant properties dictionary.
const dictionary & dict() const
Return const access to the constant properties dictionary.
scalar rhoMin() const
Return const access to the minimum density.
Factory class to read-construct particles used for.
iNew(const polyMesh &mesh)
autoPtr< KinematicParcel< ParcelType > > operator()(Istream &is) const
const vector & Uc() const
Return the continuous phase velocity.
scalar muc() const
Return the continuous phase viscosity.
const interpolation< vector > & UInterp() const
scalar rhoc() const
Return the continuous phase density.
const interpolation< scalar > & muInterp() const
const interpolation< scalar > & rhoInterp() const
trackPart part() const
Return the part of the tracking operation taking place.
void updateAverages(const TrackCloudType &cloud)
Update the MPPIC averages.
Kinematic parcel class with rotational motion (as spherical particles only) and one/two-way coupling ...
const vector & UCorrect() const
Return const access to correction velocity.
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
void calcUCorrection(TrackCloudType &cloud, trackingData &td, const scalar dt)
Correct U following MP-PIC sub-models.
label typeId_
Parcel type id.
label typeId() const
Return const access to type id.
vector UTurb_
Turbulent velocity fluctuation [m/s].
scalar momentOfInertia() const
Particle moment of inertia around diameter axis.
void calcDispersion(TrackCloudType &cloud, trackingData &td, const scalar dt)
Apply dispersion to the carrier phase velocity and update.
scalar tTurb() const
Return const access to time spent in turbulent eddy.
virtual autoPtr< particle > clone(const polyMesh &mesh) const
Construct and return a (basic particle) clone.
scalar rho_
Density [kg/m3].
const vector & U() const
Return const access to velocity.
static void writeObjects(const CloudType &c, objectRegistry &obr)
Write particle fields as objects into the obr registry.
label active_
Active flag - tracking inactive when active = false.
KinematicParcel(const KinematicParcel &p)
Construct as a copy.
static void readFields(TrackCloudType &c)
Read.
scalar d() const
Return const access to diameter.
void cellValueSourceCorrection(TrackCloudType &cloud, trackingData &td, const scalar dt)
Correct cell values using latest transfer information.
scalar Re(const trackingData &td) const
Reynolds number.
scalar tTurb_
Time spent in turbulent eddy [s].
virtual autoPtr< particle > clone() const
Construct and return a (basic particle) clone.
scalar volume() const
Particle volume.
scalar dTarget_
Target diameter [m].
const vector calcVelocity(TrackCloudType &cloud, trackingData &td, const scalar dt, const scalar Re, const scalar mu, const scalar mass, const vector &Su, vector &dUTrans, scalar &Spu) const
Calculate new particle velocity.
static const std::size_t sizeofFields
Size in bytes of the fields.
scalar nParticle() const
Return const access to number of particles.
scalar massCell(const trackingData &td) const
Cell owner mass.
scalar dTarget() const
Return const access to target diameter.
static void readObjects(CloudType &c, const objectRegistry &obr)
Read particle fields as objects from the obr registry.
scalar We(const trackingData &td, const scalar sigma) const
Weber number.
scalar areaP() const
Particle projected area.
scalar rho() const
Return const access to density.
scalar mass() const
Particle mass.
AddToPropertyList(ParcelType, " active"+" typeId"+" nParticle"+" d"+" dTarget"+" (Ux Uy Uz)"+" rho"+" age"+" tTurb"+" (UTurbx UTurby UTurbz)"+" (UCorrectx UCorrecty UCorrectz)")
String representation of properties.
static void writeFields(const TrackCloudType &c)
Write.
void hitProcessorPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a.
bool hitPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a patch.
vector UCorrect_
Velocity correction due to collisions MPPIC [m/s].
void setCellValues(TrackCloudType &cloud, trackingData &td)
Set cell values.
scalar areaS() const
Particle surface area.
bool move(TrackCloudType &cloud, trackingData &td, const scalar trackTime)
Move the parcel.
void hitWallPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a wallPatch.
scalar Eo(const trackingData &td, const scalar sigma) const
Eotvos number.
void writeProperties(Ostream &os, const wordRes &filters, const word &delim, const bool namesOnly=false) const
Write individual parcel properties to stream.
TypeName("KinematicParcel")
Runtime type information.
bool active() const
Return const access to active flag.
KinematicParcel(const KinematicParcel &p, const polyMesh &mesh)
Construct as a copy.
scalar age() const
Return const access to the age.
vector U_
Velocity of Parcel [m/s].
const vector & UTurb() const
Return const access to turbulent velocity fluctuation.
scalar nParticle_
Number of particles in Parcel.
void calc(TrackCloudType &cloud, trackingData &td, const scalar dt)
Update parcel properties over the time interval.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
A cloud is a registry collection of lagrangian particles.
Class for demand-driven dictionary entries.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Class used to pass data into container.
Abstract base class for volume field interpolation.
Registry of regIOobjects.
Mesh consisting of general polyhedral cells.
A List of wordRe with additional matching capabilities.
A class for handling words, derived from Foam::string.
const volScalarField & mu
PtrList< coordinateSystem > coordinates(solidRegions.size())
OBJstream os(runTime.globalPath()/outputName)
#define AddToPropertyList(ParcelType, str)
Add to existing static 'propertyList' for particle properties.
const volScalarField & cp
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.