57#ifndef KinematicCloud_H
58#define KinematicCloud_H
83template<
class CloudType>
86template<
class CloudType>
89template<
class CloudType>
92template<
class CloudType>
95template<
class CloudType>
98template<
class CloudType>
101template<
class CloudType>
104template<
class CloudType>
112template<
class CloudType>
150 KinematicCloud(
const KinematicCloud&) =
delete;
153 void operator=(
const KinematicCloud&) =
delete;
173 typename parcelType::constantProperties
constProps_;
277 template<
class TrackCloudType>
280 TrackCloudType&
cloud,
281 typename parcelType::trackingData&
td
292 template<
class TrackCloudType>
295 TrackCloudType&
cloud,
296 typename parcelType::trackingData&
td
303 void cloudReset(KinematicCloud<CloudType>& c);
330 KinematicCloud<CloudType>& c,
339 const KinematicCloud<CloudType>& c
347 new KinematicCloud(*
this,
name)
370 inline const KinematicCloud&
cloudCopy()
const;
394 inline const typename parcelType::constantProperties&
398 inline typename parcelType::constantProperties&
constProps();
534 const typename parcelType::trackingData&
td
593 inline scalar
Dij(
const label i,
const label j)
const;
596 inline scalar
Dmax()
const;
623 const scalar lagrangianDt
630 const scalar lagrangianDt,
631 const bool fullyDescribed
661 void relaxSources(
const KinematicCloud<CloudType>& cloudOldTime);
669 const typename parcelType::trackingData&
td
676 template<
class TrackCloudType>
679 TrackCloudType&
cloud,
680 typename parcelType::trackingData&
td
const word cloudName(propsDict.get< word >("cloud"))
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
List of cloud function objects.
virtual label nParcels() const
Return the number of particles in the cloud.
ParticleType particleType
Base class for collisional damping models.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Base class for dispersion modelling.
DimensionedField< scalar, volMesh > Internal
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
autoPtr< IOobject > clone() const
Clone.
List of injection models.
Base class for collisional return-to-isotropy models.
Templated base class for kinematic cloud.
DispersionModel< KinematicCloud< CloudType > > & dispersion()
Return reference to the dispersion model.
DampingModel< KinematicCloud< CloudType > > & dampingModel()
Return a reference to the damping model.
const parcelType::constantProperties & constProps() const
Return the constant properties.
scalar & pAmbient()
Return reference to the ambient pressure.
const dictionary & subModelProperties() const
Return reference to the sub-models dictionary.
SurfaceFilmModel< KinematicCloud< CloudType > > & surfaceFilm()
Return reference to the surface film model.
autoPtr< volScalarField::Internal > rhokTrans_
autoPtr< DampingModel< KinematicCloud< CloudType > > > dampingModel_
autoPtr< volVectorField::Internal > UTrans_
void setModels()
Set cloud sub-models.
scalar massInSystem() const
Total mass in system.
scalar rotationalKineticEnergyOfSystem() const
Total rotational kinetic energy in the system.
scalar totalParticlePerParcel() const
Average particle per parcel.
virtual label nParcels() const
Total number of parcels.
InjectionModelList< KinematicCloud< CloudType > > & injectors()
Return reference to the injection model.
void relaxSources(const KinematicCloud< CloudType > &cloudOldTime)
Apply relaxation to (steady state) cloud sources.
PatchInteractionModel< KinematicCloud< CloudType > > & patchInteraction()
Return reference to the patch interaction model.
void motion(TrackCloudType &cloud, typename parcelType::trackingData &td)
Particle motion.
void scale(DimensionedField< Type, volMesh > &field, const word &name) const
Scale field.
tmp< volScalarField::Internal > Srhok() const
Return tmp mass source for kinematic.
const tmp< volScalarField > theta() const
Return the particle volume fraction field.
void storeState()
Store the current cloud state.
autoPtr< SurfaceFilmModel< KinematicCloud< CloudType > > > surfaceFilmModel_
const tmp< volScalarField > alpha() const
Return the particle mass fraction field.
void patchData(const parcelType &p, const polyPatch &pp, vector &normal, vector &Up) const
Calculate the patch normal and velocity to interact with,.
const scalarField & cellLengthScale() const
Return the cell length scale.
void setParcelThermoProperties(parcelType &parcel, const scalar lagrangianDt)
Set parcel thermo properties.
const SurfaceFilmModel< KinematicCloud< CloudType > > & surfaceFilm() const
Return const-access to the surface film model.
virtual void readObjects(const objectRegistry &obr)
Read particle fields from objects in the obr registry.
scalarField cellLengthScale_
IsotropyModel< KinematicCloud< CloudType > > & isotropyModel()
Return a reference to the isotropy model.
void cloudReset(KinematicCloud< CloudType > &c)
Reset state of cloud.
const PatchInteractionModel< KinematicCloud< CloudType > > & patchInteraction() const
Return const-access to the patch interaction model.
void checkParcelProperties(parcelType &parcel, const scalar lagrangianDt, const bool fullyDescribed)
Check parcel properties.
KinematicCloud(const word &cloudName, const volScalarField &rho, const volVectorField &U, const volScalarField &mu, const dimensionedVector &g, bool readFields=true)
Construct given carrier gas fields.
autoPtr< integrationScheme > UIntegrator_
vector linearMomentumOfSystem() const
Total linear momentum of the system.
const volVectorField & U() const
StochasticCollisionModel< KinematicCloud< CloudType > > & stochasticCollision()
Return reference to the stochastic collision model.
scalar pAmbient() const
Return const-access to the ambient pressure.
void relax(DimensionedField< Type, volMesh > &field, const DimensionedField< Type, volMesh > &field0, const word &name) const
Relax field.
const KinematicCloud & cloudCopy() const
Return a reference to the cloud copy.
InjectionModelList< KinematicCloud< CloudType > > injectors_
const volScalarField & rho() const
PackingModel< KinematicCloud< CloudType > > & packingModel()
Return a reference to the packing model.
autoPtr< IsotropyModel< KinematicCloud< CloudType > > > isotropyModel_
autoPtr< DispersionModel< KinematicCloud< CloudType > > > dispersionModel_
void scaleSources()
Apply scaling to (transient) cloud sources.
KinematicCloud< CloudType > kinematicCloudType
autoPtr< PatchInteractionModel< KinematicCloud< CloudType > > > patchInteractionModel_
const volVectorField & U_
const integrationScheme & UIntegrator() const
Return reference to velocity integration.
List< DynamicList< parcelType * > > & cellOccupancy()
Return the cell occupancy information for each.
const volScalarField & mu_
const dimensionedVector & g_
functionType & functions()
Optional cloud function objects.
Cloud< basicKinematicParcel >::particleType parcelType
const tmp< volScalarField > rhoEff() const
Return the particle effective density field.
const cloudSolution & solution() const
Return const access to the solution properties.
void updateCellOccupancy()
Update (i.e. build) the cellOccupancy if it has.
const dictionary subModelProperties_
const tmp< volScalarField > vDotSweep() const
Volume swept rate of parcels per cell.
const PackingModel< KinematicCloud< CloudType > > & packingModel() const
Return const access to the packing model.
Cloud< basicKinematicParcel > cloudType
virtual void autoMap(const mapPolyMesh &)
Remap the cells of particles corresponding to the.
virtual autoPtr< Cloud< parcelType > > clone(const word &name)
Construct and return clone based on (this) with new name.
const DispersionModel< KinematicCloud< CloudType > > & dispersion() const
Return const-access to the dispersion model.
virtual autoPtr< Cloud< parcelType > > cloneBare(const word &name) const
Construct and return bare clone based on (this) with new name.
void evolve()
Evolve the cloud.
forceType & forces()
Return the optional particle forces.
void postEvolve(const typename parcelType::trackingData &td)
Post-evolve.
volScalarField::Internal & UCoeff()
Return coefficient for carrier phase U equation.
const StochasticCollisionModel< KinematicCloud< CloudType > > & stochasticCollision() const
Return const-access to the stochastic collision model.
void evolveCloud(TrackCloudType &cloud, typename parcelType::trackingData &td)
Evolve the cloud.
parcelType::constantProperties constProps_
scalar Dmax() const
Max diameter.
autoPtr< List< DynamicList< parcelType * > > > cellOccupancyPtr_
const DampingModel< KinematicCloud< CloudType > > & dampingModel() const
Return const access to the damping model.
const volScalarField & rho_
CloudFunctionObjectList< KinematicCloud< CloudType > > functionType
scalar Dij(const label i, const label j) const
Mean diameter Dij.
IOdictionary particleProperties_
parcelType::constantProperties & constProps()
Return access to the constant properties.
const IOdictionary & particleProperties() const
Return particle properties dictionary.
volVectorField::Internal & UTrans()
Return reference to momentum source.
void preEvolve(const typename parcelType::trackingData &td)
Pre-evolve.
void info()
Print cloud information.
void restoreState()
Reset the current cloud to the previously stored state.
tmp< fvVectorMatrix > SU(volVectorField &U, bool incompressible=false) const
Return tmp momentum source term (compressible).
const dimensionedVector & g() const
virtual ~KinematicCloud()=default
Destructor.
void transferToCarrier(const parcelType &p, const typename parcelType::trackingData &td)
Transfer the effect of parcel to the carrier phase.
const volScalarField::Internal & rhokTrans() const
Return const reference to mass for kinematic source.
const fvMesh & mesh() const
const InjectionModelList< KinematicCloud< CloudType > > & injectors() const
Return const access to the injection model.
Random & rndGen() const
Return reference to the random object.
void resetSourceTerms()
Reset the cloud source terms.
volScalarField::Internal & rhokTrans()
Return reference to mass for kinematic source.
const forceType & forces() const
Optional particle forces.
ParticleForceList< KinematicCloud< CloudType > > forceType
KinematicCloud(const fvMesh &mesh, const word &name, const KinematicCloud< CloudType > &c)
Copy constructor with new name - creates bare cloud.
autoPtr< PackingModel< KinematicCloud< CloudType > > > packingModel_
const IOdictionary & outputProperties() const
Return output properties dictionary.
const IsotropyModel< KinematicCloud< CloudType > > & isotropyModel() const
Return const access to the isotropy model.
KinematicCloud(KinematicCloud< CloudType > &c, const word &name)
Copy constructor with new name.
void buildCellOccupancy()
Build the cellOccupancy.
autoPtr< volScalarField::Internal > UCoeff_
IOdictionary & outputProperties()
Return non-const access to the output properties dictionary.
void updateMesh()
Update mesh.
IOdictionary outputProperties_
const volScalarField::Internal & UCoeff() const
Return const coefficient for carrier phase U equation.
scalar linearKineticEnergyOfSystem() const
Total linear kinetic energy in the system.
const volScalarField & mu() const
autoPtr< StochasticCollisionModel< KinematicCloud< CloudType > > > stochasticCollisionModel_
const volVectorField::Internal & UTrans() const
Return const reference to momentum source.
cloudSolution & solution()
Return access to the solution properties.
void solve(TrackCloudType &cloud, typename parcelType::trackingData &td)
Solve the cloud - calls all evolution functions.
virtual void writeObjects(objectRegistry &obr) const
Write particle fields as objects into the obr registry.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Base class for packing models.
Templated patch interaction model class.
Templated stochastic collision model class.
Templated wall surface film model class.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Stores all relevant solution info for cloud.
A cloud is a registry collection of lagrangian particles.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Mesh data needed to do the Finite Volume discretisation.
Base for a set of schemes which integrate simple ODEs which arise from semi-implcit rate expressions.
kinematicCloud()=default
Null constructor.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Registry of regIOobjects.
A patch is a list of labels that address the faces in the global face list.
A class for managing temporary objects.
A class for handling words, derived from Foam::string.
A special matrix type and solver, designed for finite volume solutions of scalar equations.
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
DSMCCloud< dsmcParcel > CloudType
GeometricField< vector, fvPatchField, volMesh > volVectorField
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const NameMatchPredicate &selectedFields, DynamicList< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type and store on the objectRegistry.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.