34 template<
class CloudType>
41 this->subModelProperties(),
48 template<
class CloudType>
49 template<
class TrackCloudType>
52 TrackCloudType& cloud,
53 typename parcelType::trackingData& td,
57 td.part() = parcelType::trackingData::tpVelocityHalfStep;
58 CloudType::move(cloud, td, deltaT);
60 td.part() = parcelType::trackingData::tpLinearTrack;
61 CloudType::move(cloud, td, deltaT);
66 this->updateCellOccupancy();
68 this->collision().collide();
70 td.part() = parcelType::trackingData::tpVelocityHalfStep;
71 CloudType::move(cloud, td, deltaT);
76 template<
class CloudType>
79 CloudType::cloudReset(c);
87 template<
class CloudType>
90 const word& cloudName,
98 CloudType(cloudName, rho, U, mu, g,
false),
99 constProps_(this->particleProperties()),
100 collisionModel_(
nullptr)
107 this->deleteLostParticles();
117 <<
"Collision modelling not currently available " 123 template<
class CloudType>
126 const word& cloudName,
131 const bool readFields
138 template<
class CloudType>
150 template<
class CloudType>
159 collisionModel_(
nullptr)
165 template<
class CloudType>
172 template<
class CloudType>
185 template<
class CloudType>
188 cloudReset(cloudCopyPtr_());
189 cloudCopyPtr_.clear();
193 template<
class CloudType>
198 typename parcelType::trackingData td(*
this);
200 this->
solve(*
this, td);
205 template<
class CloudType>
206 template<
class TrackCloudType>
209 TrackCloudType& cloud,
210 typename parcelType::trackingData& td
219 label nSubCycles = collision().nSubCycles();
223 Info<<
" " << nSubCycles <<
" move-collide subCycles" <<
endl;
227 const_cast<Time&>(this->db().time()),
231 while(!(++moveCollideSubCycle).end())
233 moveCollide(cloud, td, this->db().time().deltaTValue());
240 moveCollide(cloud, td, this->db().time().deltaTValue());
245 template<
class CloudType>
250 scalar rotationalKineticEnergy = rotationalKineticEnergyOfSystem();
253 Info<<
" Rotational kinetic energy = " 254 << rotationalKineticEnergy <<
nl;
void cloudReset(CollidingCloud< CloudType > &c)
Reset state of cloud.
virtual tmp< volScalarField > mu() const =0
Dynamic viscosity of mixture [kg/m/s].
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
DSMCCloud< dsmcParcel > CloudType
errorManipArg< error, int > exit(error &err, const int errNo=1)
CollidingCloud(const word &cloudName, const volScalarField &rho, const volVectorField &U, const volScalarField &mu, const dimensionedVector &g, const bool readFields=true)
Construct given carrier fields.
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const HashSet< word > &selectedFields, LIFOStack< regIOobject *> &storedObjects)
Read the selected GeometricFields of the specified type.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
void evolve()
Evolve the cloud.
Ostream & endl(Ostream &os)
Add newline and flush stream.
A class for handling words, derived from string.
void motion(TrackCloudType &cloud, typename parcelType::trackingData &td)
Particle motion.
Base-class for fluid thermodynamic properties.
void moveCollide(TrackCloudType &cloud, typename parcelType::trackingData &td, const scalar deltaT)
Move-collide particles.
bool isType(const Type &t)
Check the typeid.
Templated collision model class.
void endSubCycle()
End the sub-cycling and reset the time-state.
Adds collisions to clouds.
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
word name(const complex &)
Return a string representation of a complex.
Place holder for 'none' option.
void restoreState()
Reset the current cloud to the previously stored state.
void info()
Print cloud information.
Mesh data needed to do the Finite Volume discretisation.
Selector class for relaxation factors, solver type and solution.
void setModels()
Set cloud sub-models.
virtual ~CollidingCloud()
Destructor.
const dimensionedVector & g
A class for managing sub-cycling times.
autoPtr< CollisionModel< CollidingCloud< CloudType > > > collisionModel_
Collision model.
void storeState()
Store the current cloud state.