34 template<
class CloudType>
41 this->subModelProperties(),
48 template<
class CloudType>
51 CloudType::cloudReset(
c);
53 collisionModel_.reset(
c.collisionModel_.ptr());
59 template<
class CloudType>
71 constProps_(this->particleProperties()),
72 collisionModel_(nullptr)
89 <<
"Collision modelling not currently available "
95 template<
class CloudType>
110 template<
class CloudType>
118 collisionModel_(
c.collisionModel_->
clone())
122 template<
class CloudType>
131 collisionModel_(nullptr)
137 template<
class CloudType>
144 template<
class CloudType>
157 template<
class CloudType>
160 cloudReset(cloudCopyPtr_());
161 cloudCopyPtr_.clear();
165 template<
class CloudType>
170 typename parcelType::trackingData td(*
this);
172 this->
solve(*
this, td);
177 template<
class CloudType>
178 template<
class TrackCloudType>
181 TrackCloudType&
cloud,
182 typename parcelType::trackingData& td
191 const label nSubCycles = collision().nSubCycles();
195 Info<<
" " << nSubCycles <<
" move-collide subCycles" <<
endl;
198 for (
label subCyclei = 0; subCyclei < nSubCycles; ++ subCyclei)
200 td.stepFractionRange() =
203 scalar(subCyclei)/nSubCycles,
204 scalar(subCyclei + 1)/nSubCycles
207 td.part() = parcelType::trackingData::tpVelocityHalfStep;
210 td.part() = parcelType::trackingData::tpLinearTrack;
216 this->updateCellOccupancy();
218 this->collision().collide();
220 td.part() = parcelType::trackingData::tpVelocityHalfStep;
228 template<
class CloudType>
233 scalar rotationalKineticEnergy = rotationalKineticEnergyOfSystem();
236 Info<<
" Rotational kinetic energy = "
237 << rotationalKineticEnergy <<
nl;
void deleteLostParticles()
Remove lost particles from cloud and delete.
void move(TrackCloudType &cloud, typename ParticleType::trackingData &td)
Move the particles.
Adds collisions to clouds.
void setModels()
Set cloud sub-models.
void motion(TrackCloudType &cloud, typename parcelType::trackingData &td)
Particle motion.
void storeState()
Store the current cloud state.
autoPtr< CollisionModel< CollidingCloud< CloudType > > > collisionModel_
Collision model.
void cloudReset(CollidingCloud< CloudType > &c)
Reset state of cloud.
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 evolve()
Evolve the cloud.
void info()
Print cloud information.
void restoreState()
Reset the current cloud to the previously stored state.
virtual ~CollidingCloud()
Destructor.
Templated collision model class.
Templated base class for dsmc cloud.
void info() const
Print cloud information.
Generic GeometricField class.
Place holder for 'none' option.
A cloud is a collection of lagrangian particles.
Base-class for fluid thermodynamic properties.
Mesh data needed to do the Finite Volume discretisation.
Selector class for relaxation factors, solver type and solution.
A class for handling words, derived from string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
autoPtr< CompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const viscosity &viscosity)
const dimensionedScalar mu
Atomic mass unit.
const dimensionedScalar c
Speed of light in a vacuum.
errorManipArg< error, int > exit(error &err, const int errNo=1)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
word name(const bool)
Return a word representation of a bool.
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.
bool isType(const Type &t)
Check the typeid.
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
SolverPerformance< Type > solve(fvMatrix< Type > &, const word &)
Solve returning the solution statistics given convergence tolerance.
const word cloudName(propsDict.lookup("cloudName"))