31 template<
class CloudType>
38 this->subModelProperties(),
45 template<
class CloudType>
46 template<
class TrackData>
53 td.part() = TrackData::tpVelocityHalfStep;
54 CloudType::move(td, deltaT);
56 td.part() = TrackData::tpLinearTrack;
57 CloudType::move(td, deltaT);
62 this->updateCellOccupancy();
64 this->collision().collide();
66 td.part() = TrackData::tpVelocityHalfStep;
67 CloudType::move(td, deltaT);
72 template<
class CloudType>
75 CloudType::cloudReset(c);
83 template<
class CloudType>
86 const word& cloudName,
94 CloudType(cloudName, rho, U, mu, g,
false),
95 constProps_(this->particleProperties()),
101 <<
"Collision modelling not currently available for steady state " 117 template<
class CloudType>
129 template<
class CloudType>
138 collisionModel_(NULL)
144 template<
class CloudType>
151 template<
class CloudType>
154 return !collision().controlsWallInteraction();
158 template<
class CloudType>
165 clone(this->
name() +
"Copy").ptr()
171 template<
class CloudType>
174 cloudReset(cloudCopyPtr_());
175 cloudCopyPtr_.clear();
179 template<
class CloudType>
184 typename parcelType::template
185 TrackingData<CollidingCloud<CloudType>> td(*
this);
192 template<
class CloudType>
193 template<
class TrackData>
202 label nSubCycles = collision().nSubCycles();
206 Info<<
" " << nSubCycles <<
" move-collide subCycles" <<
endl;
210 const_cast<Time&>(this->db().time()),
214 while(!(++moveCollideSubCycle).end())
216 moveCollide(td, this->db().time().deltaTValue());
223 moveCollide(td, this->db().time().deltaTValue());
228 template<
class CloudType>
233 scalar rotationalKineticEnergy = rotationalKineticEnergyOfSystem();
236 Info<<
" Rotational kinetic energy = " 237 << 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)
virtual bool hasWallImpactDistance() const
If the collision model controls the wall interaction,.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
void evolve()
Evolve the cloud.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void moveCollide(TrackData &td, const scalar deltaT)
Move-collide particles.
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.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
A class for handling words, derived from string.
Templated collision model class.
void endSubCycle()
End the sub-cycling and reset the time-state.
Adds coolisions to kinematic clouds.
void motion(TrackData &td)
Particle motion.
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.
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.