50 #ifndef KinematicParcel_H 51 #define KinematicParcel_H 65 template<
class ParcelType>
73 template<
class ParcelType>
84 template<
class ParcelType>
92 static label maxTrackAttempts;
153 inline scalar
rhoMin()
const;
156 inline scalar
rho0()
const;
165 public ParcelType::trackingData
242 template <
class TrackCloudType>
245 const TrackCloudType&
cloud,
265 inline scalar
rhoc()
const;
268 inline scalar&
rhoc();
277 inline scalar
muc()
const;
280 inline scalar&
muc();
283 inline const vector&
g()
const;
292 template<
class TrackCloudType>
342 template<
class TrackCloudType>
345 TrackCloudType&
cloud,
377 +
" (UTurbx UTurby UTurbz)" 378 +
" (UCorrectx UCorrecty UCorrectz)" 391 const label tetFacei,
410 const label tetFacei,
413 const scalar nParticle0,
415 const scalar dTarget0,
426 bool newFormat =
true 459 autoPtr<KinematicParcel<ParcelType>>
operator()(Istream& is)
const 461 return autoPtr<KinematicParcel<ParcelType>>
463 new KinematicParcel<ParcelType>(mesh_, is,
true)
474 inline bool active()
const;
477 inline label
typeId()
const;
483 inline scalar
d()
const;
489 inline const vector&
U()
const;
492 inline scalar
rho()
const;
495 inline scalar
age()
const;
498 inline scalar
tTurb()
const;
510 inline void active(
const bool state);
528 inline scalar&
rho();
531 inline scalar&
age();
534 inline scalar&
tTurb();
546 inline scalar
massCell(
const trackingData&
td)
const;
549 inline scalar
mass()
const;
555 inline scalar
volume()
const;
558 inline static scalar
volume(
const scalar
d);
561 inline scalar
areaP()
const;
564 inline static scalar
areaP(
const scalar
d);
567 inline scalar
areaS()
const;
570 inline static scalar
areaS(
const scalar
d);
576 inline static scalar
Re 593 inline static scalar
We 610 inline static scalar
Eo 624 template<
class TrackCloudType>
629 template<
class TrackCloudType>
632 TrackCloudType&
cloud,
638 template<
class TrackCloudType>
641 TrackCloudType&
cloud,
647 template<
class TrackCloudType>
650 TrackCloudType&
cloud,
656 template<
class TrackCloudType>
659 TrackCloudType&
cloud,
668 template<
class TrackCloudType>
671 TrackCloudType&
cloud,
673 const scalar trackTime
681 template<
class TrackCloudType>
686 template<
class TrackCloudType>
690 template<
class TrackCloudType>
705 template<
class TrackCloudType>
709 template<
class TrackCloudType>
718 const bool namesOnly =
false 722 template<
class CloudType>
726 template<
class CloudType>
732 friend Ostream& operator<< <ParcelType>
scalar massCell(const trackingData &td) const
Cell owner mass.
const vector & U() const
Return const access to velocity.
static void writeFields(const TrackCloudType &c)
Write.
scalar tTurb() const
Return const access to time spent in turbulent eddy.
scalar rhoMin() const
Return const access to the minimum density.
const vector & UTurb() const
Return const access to turbulent velocity fluctuation.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Kinematic parcel class with rotational motion (as spherical particles only) and one/two-way coupling ...
autoPtr< KinematicParcel< ParcelType > > operator()(Istream &is) const
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
TypeName("KinematicParcel")
Runtime type information.
scalar nParticle() const
Return const access to number of particles.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Class to hold kinematic particle constant properties.
scalar mass() const
Particle mass.
scalar d() const
Return const access to diameter.
scalar tTurb_
Time spent in turbulent eddy [s].
scalar rho() const
Return const access to density.
bool cp(const fileName &src, const fileName &dst, const bool followLink=true)
Copy the source to the destination (recursively if necessary).
const interpolation< vector > & UInterp() const
Return const access to the interpolator for continuous phase velocity field.
scalar rho0() const
Return const access to the particle density.
void setCellValues(TrackCloudType &cloud, trackingData &td)
Set cell values.
constantProperties()
Default construct.
scalar areaP() const
Particle projected area.
dimensionedScalar sigma("sigma", dimMass/sqr(dimTime), transportProperties)
KinematicParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from mesh, coordinates and topology.
const vector & UCorrect() const
Return const access to correction velocity.
scalar dTarget() const
Return const access to target diameter.
label parcelTypeId() const
Return const access to the parcel type id.
scalar dTarget_
Target diameter [m].
scalar age() const
Return const access to the age.
trackPart part() const
Return the part of the tracking operation taking place.
void cellValueSourceCorrection(TrackCloudType &cloud, trackingData &td, const scalar dt)
Correct cell values using latest transfer information.
scalar Eo(const trackingData &td, const scalar sigma) const
Eotvos number.
AddToPropertyList(ParcelType, " active"+" typeId"+" nParticle"+" d"+" dTarget"+" (Ux Uy Uz)"+" rho"+" age"+" tTurb"+" (UTurbx UTurby UTurbz)"+" (UCorrectx UCorrecty UCorrectz)")
String representation of properties.
scalar rho_
Density [kg/m3].
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
scalar momentOfInertia() const
Particle moment of inertia around diameter axis.
A class for handling words, derived from Foam::string.
static void writeObjects(const CloudType &c, objectRegistry &obr)
Write particle fields as objects into the obr registry.
const dictionary dict_
Constant properties dictionary.
A cloud is a registry collection of lagrangian particles.
label typeId_
Parcel type id.
void writeProperties(Ostream &os, const wordRes &filters, const word &delim, const bool namesOnly=false) const
Write individual parcel properties to stream.
vector UTurb_
Turbulent velocity fluctuation [m/s].
Base class for lagrangian averaging methods.
A List of wordRe with additional matching capabilities.
static void readFields(TrackCloudType &c)
Read.
void calc(TrackCloudType &cloud, trackingData &td, const scalar dt)
Update parcel properties over the time interval.
bool active() const
Return const access to active flag.
static const std::size_t sizeofFields
Size in bytes of the fields.
static autoPtr< particle > Clone(const Derived &p)
Clone a particle.
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.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
const uniformDimensionedVectorField & g
static void readObjects(CloudType &c, const objectRegistry &obr)
Read particle fields as objects from the obr registry.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
scalar rhoc() const
Return the continuous phase density.
OBJstream os(runTime.globalPath()/outputName)
scalar muc() const
Return the continuous phase viscosity.
scalar nParticle_
Number of particles in Parcel.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
scalar minParcelMass() const
Return const access to the minimum parcel mass.
trackingData(const TrackCloudType &cloud, trackPart part=tpLinearTrack)
Construct from components.
const dimensionedScalar mu
Atomic mass unit.
iNew(const polyMesh &mesh)
vector U_
Velocity of Parcel [m/s].
virtual autoPtr< particle > clone() const
Return a (basic particle) clone.
PtrList< coordinateSystem > coordinates(solidRegions.size())
const dimensionedScalar c
Speed of light in a vacuum.
scalar volume() const
Particle volume.
const interpolation< scalar > & rhoInterp() const
Return const access to the interpolator for continuous phase density field.
const interpolation< scalar > & muInterp() const
Return const access to the interpolator for continuous phase dynamic viscosity field.
scalar Re(const trackingData &td) const
Reynolds number.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Mesh consisting of general polyhedral cells.
bool move(TrackCloudType &cloud, trackingData &td, const scalar trackTime)
Move the parcel.
label active_
Active flag - tracking inactive when active = false.
Registry of regIOobjects.
label typeId() const
Return const access to type id.
Tensor of scalars, i.e. Tensor<scalar>.
Templated base class for dsmc cloud.
void hitProcessorPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a.
scalar areaS() const
Particle surface area.
bool hitPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a patch.
const vector & Uc() const
Return the continuous phase velocity.
vector UCorrect_
Velocity correction due to collisions MPPIC [m/s].
void calcUCorrection(TrackCloudType &cloud, trackingData &td, const scalar dt)
Correct U following MP-PIC sub-models.
scalar We(const trackingData &td, const scalar sigma) const
Weber number.
void calcDispersion(TrackCloudType &cloud, trackingData &td, const scalar dt)
Apply dispersion to the carrier phase velocity and update.
const dictionary & dict() const
Return const access to the constant properties dictionary.
void hitWallPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a wallPatch.
void updateAverages(const TrackCloudType &cloud)
Update the MPPIC averages.