32 template<
class CloudType>
39 this->subModelProperties(),
46 template<
class CloudType>
47 template<
class TrackCloudType>
50 TrackCloudType& cloud,
51 typename parcelType::trackingData& td,
55 td.part() = parcelType::trackingData::tpVelocityHalfStep;
56 CloudType::move(cloud, td, deltaT);
58 td.part() = parcelType::trackingData::tpLinearTrack;
59 CloudType::move(cloud, td, deltaT);
64 this->updateCellOccupancy();
66 this->collision().collide();
68 td.part() = parcelType::trackingData::tpVelocityHalfStep;
69 CloudType::move(cloud, td, deltaT);
74 template<
class CloudType>
77 CloudType::cloudReset(c);
85 template<
class CloudType>
88 const word& cloudName,
96 CloudType(cloudName, rho, U, mu, g,
false),
97 constProps_(this->particleProperties()),
98 collisionModel_(
nullptr)
107 this->deleteLostParticles();
117 <<
"Collision modelling not currently available " 124 template<
class CloudType>
136 template<
class CloudType>
145 collisionModel_(
nullptr)
151 template<
class CloudType>
158 template<
class CloudType>
171 template<
class CloudType>
174 cloudReset(cloudCopyPtr_());
175 cloudCopyPtr_.clear();
179 template<
class CloudType>
184 typename parcelType::trackingData td(*
this);
186 this->
solve(*
this, td);
191 template<
class CloudType>
192 template<
class TrackCloudType>
195 TrackCloudType& cloud,
196 typename parcelType::trackingData& td
205 label nSubCycles = collision().nSubCycles();
209 Info<<
" " << nSubCycles <<
" move-collide subCycles" <<
endl;
213 const_cast<Time&>(this->db().time()),
217 while(!(++moveCollideSubCycle).end())
219 moveCollide(cloud, td, this->db().time().deltaTValue());
226 moveCollide(cloud, td, this->db().time().deltaTValue());
231 template<
class CloudType>
236 scalar rotationalKineticEnergy = rotationalKineticEnergyOfSystem();
239 Info<<
" Rotational kinetic energy = " 240 << rotationalKineticEnergy <<
nl;
void cloudReset(CollidingCloud< CloudType > &c)
Reset state of cloud.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
DSMCCloud< dsmcParcel > CloudType
errorManipArg< error, int > exit(error &err, const int errNo=1)
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.
CollidingCloud(const word &cloudName, const volScalarField &rho, const volVectorField &U, const volScalarField &mu, const dimensionedVector &g, bool readFields=true)
Construct given carrier gas fields.
autoPtr< BasicCompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const typename BasicCompressibleMomentumTransportModel::transportModel &transport)
A class for handling words, derived from string.
void motion(TrackCloudType &cloud, typename parcelType::trackingData &td)
Particle motion.
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 kinematic 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.
A class for managing sub-cycling times.
autoPtr< CollisionModel< CollidingCloud< CloudType > > > collisionModel_
Collision model.
void storeState()
Store the current cloud state.