44#ifndef ReactingParcel_H
45#define ReactingParcel_H
56template<
class ParcelType>
59template<
class ParcelType>
71template<
class ParcelType>
86 public ParcelType::constantProperties
133 inline scalar
pMin()
const;
145 public ParcelType::trackingData
165 typedef typename ParcelType::trackingData::trackPart
trackPart;
170 template<
class TrackCloudType>
173 const TrackCloudType&
cloud,
174 trackPart part = ParcelType::trackingData::tpLinearTrack
185 inline scalar
pc()
const;
208 template<
class TrackCloudType>
211 TrackCloudType&
cloud,
219 template<
class TrackCloudType>
222 TrackCloudType&
cloud,
278 const label tetFacei,
297 const label tetFacei,
300 const scalar nParticle0,
302 const scalar dTarget0,
305 const vector& angularMomentum0,
308 const constantProperties& constProps
317 bool newFormat =
true
369 inline scalar
mass0()
const;
390 inline scalar&
mass0();
399 template<
class TrackCloudType>
403 template<
class TrackCloudType>
406 TrackCloudType&
cloud,
412 template<
class TrackCloudType>
426 template<
class TrackCloudType>
429 TrackCloudType&
cloud,
438 template<
class CloudType,
class CompositionType>
442 const CompositionType& compModel
446 template<
class CloudType>
450 template<
class CloudType,
class CompositionType>
454 const CompositionType& compModel
458 template<
class CloudType>
467 const bool namesOnly =
false
472 template<
class CloudType>
480 template<
class CloudType,
class CompositionType>
484 const CompositionType& compModel,
490 template<
class CloudType>
498 template<
class CloudType,
class CompositionType>
502 const CompositionType& compModel,
509 friend Ostream& operator<< <ParcelType>
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
scalar Re(const trackingData &td) const
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Class to hold reacting parcel constant properties.
label volUpdateType() const
Return const access to the constant volume flag.
bool constantVolume() const
Return const access to the constant volume flag.
scalar pMin() const
Return const access to the minimum pressure.
constantProperties()
Null constructor.
volumeUpdateType
Type of activity coefficient models.
iNew(const polyMesh &mesh)
autoPtr< ReactingParcel< ParcelType > > operator()(Istream &is) const
scalar pc() const
Return the continuous phase pressure.
const interpolation< scalar > & pInterp() const
Return const access to the interpolator for continuous phase.
ParcelType::trackingData::trackPart trackPart
trackingData(const TrackCloudType &cloud, trackPart part=ParcelType::trackingData::tpLinearTrack)
Construct from components.
Reacting parcel class with one/two-way coupling with the continuous phase.
scalar & mass0()
Return access to initial mass [kg].
AddToPropertyList(ParcelType, " mass0"+" nPhases(Y1..YN)")
String representation of properties.
ReactingParcel(const polyMesh &mesh, const vector &position, const label celli)
Construct from a position and a cell, searching for the rest of the.
virtual autoPtr< particle > clone(const polyMesh &mesh) const
Return a (basic particle) clone.
static void writeObjects(const CloudType &c, const CompositionType &compModel, objectRegistry &obr)
Write particle fields as objects into the obr registry.
static void writeObjects(const CloudType &c, objectRegistry &obr)
Write particle fields as objects into the obr registry.
void cellValueSourceCorrection(TrackCloudType &cloud, trackingData &td, const scalar dt)
Correct cell values using latest transfer information.
virtual autoPtr< particle > clone() const
Return a (basic particle) clone.
ReactingParcel(const polyMesh &mesh, Istream &is, bool readFields=true, bool newFormat=true)
Construct from Istream.
static const std::size_t sizeofFields
ReactingParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from mesh, coordinates and topology.
static void writeFields(const CloudType &c, const CompositionType &compModel)
Write - composition supplied.
const scalarField & Y() const
scalar updatedDeltaVolume(TrackCloudType &cloud, const scalarField &dMass, const scalar p, const scalar T)
Return change of volume due to mass exchange.
static void readObjects(CloudType &c, const CompositionType &compModel, const objectRegistry &obr)
Read particle fields as objects from the obr registry.
ReactingParcel(const ReactingParcel &p, const polyMesh &mesh)
Construct as a copy.
void correctSurfaceValues(TrackCloudType &cloud, trackingData &td, const scalar T, const scalarField &Cs, scalar &rhos, scalar &mus, scalar &Prs, scalar &kappas)
Correct surface values due to emitted species.
static void readObjects(CloudType &c, const objectRegistry &obr)
Read particle fields as objects from the obr registry.
const scalarField & YGas() const
Return const access to mass fractions of gases.
scalar updateMassFraction(const scalar mass0, const scalarField &dMass, scalarField &Y) const
Update mass fraction.
ReactingParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti, const label typeId, const scalar nParticle0, const scalar d0, const scalar dTarget0, const vector &U0, const vector &f0, const vector &angularMomentum0, const vector &torque0, const scalarField &Y0, const constantProperties &constProps)
Construct from components.
static void writeFields(const CloudType &c)
Write - no composition.
scalarField & Y()
Return access to mass fractions of mixture [].
void setCellValues(TrackCloudType &cloud, trackingData &td)
Set cell values.
void calcPhaseChange(TrackCloudType &cloud, trackingData &td, const scalar dt, const scalar Re, const scalar Pr, const scalar Ts, const scalar nus, const scalar d, const scalar T, const scalar mass, const scalar rho, const label idPhase, const scalar YPhase, const scalarField &YLiq, const scalarField &YSol, scalarField &dMassPC, scalar &Sh, scalar &N, scalar &NCpW, scalarField &Cs)
Calculate Phase change.
void writeProperties(Ostream &os, const wordRes &filters, const word &delim, const bool namesOnly=false) const
Write individual parcel properties to stream.
const scalarField & YSolid() const
Return const access to mass fractions of solids.
static void readFields(CloudType &c)
Read - no composition.
const scalarField & YLiquid() const
Return const access to mass fractions of liquids.
static void readFields(CloudType &c, const CompositionType &compModel)
TypeName("ReactingParcel")
Runtime type information.
ReactingParcel(const ReactingParcel &p)
Construct as a copy.
void calc(TrackCloudType &cloud, trackingData &td, const scalar dt)
Update parcel properties over the time interval.
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,...
Abstract base class for volume field interpolation.
Registry of regIOobjects.
vector position() const
Return current particle position.
static autoPtr< particle > Clone(const Derived &p)
Clone a particle.
const polyMesh & mesh() const noexcept
Return the mesh database.
const barycentric & coordinates() const noexcept
Return current particle coordinates.
Mesh consisting of general polyhedral cells.
A List of wordRe with additional matching capabilities.
A class for handling words, derived from Foam::string.
OBJstream os(runTime.globalPath()/outputName)
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
DSMCCloud< dsmcParcel > CloudType
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
scalarField Re(const UList< complex > &cmplx)
Extract real component.
bool cp(const fileName &src, const fileName &dst, const bool followLink=true)
Copy the source to the destination (recursively if necessary).
Barycentric< scalar > barycentric
A scalar version of the templated Barycentric.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
#define AddToPropertyList(ParcelType, str)
Add to existing static 'propertyList' for particle properties.
scalarList Y0(nSpecie, Zero)
dimensionedScalar Pr("Pr", dimless, laminarTransport)
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
const Vector< label > N(dict.get< Vector< label > >("N"))