35 template<
class CloudType>
42 this->subModelProperties(),
50 this->subModelProperties(),
58 this->subModelProperties(),
67 template<
class CloudType>
70 const word& cloudName,
78 CloudType(cloudName, rho, U, mu, g,
false),
87 "Foam::MPPICCloud<CloudType>::MPPICCloud" 90 "const volScalarField&, " 91 "const volVectorField&, " 92 "const volScalarField&, " 93 "const dimensionedVector&, " 96 ) <<
"MPPIC modelling not available for steady state calculations" 112 template<
class CloudType>
126 template<
class CloudType>
143 template<
class CloudType>
150 template<
class CloudType>
157 clone(this->
name() +
"Copy").ptr()
163 template<
class CloudType>
166 this->cloudReset(cloudCopyPtr_());
167 cloudCopyPtr_.clear();
171 template<
class CloudType>
176 typename parcelType::template
177 TrackingData<MPPICCloud<CloudType> > td(*
this);
184 template<
class CloudType>
185 template<
class TrackData>
192 td.part() = TrackData::tpLinearTrack;
193 CloudType::move(td, this->db().time().deltaTValue());
200 this->
forces().setCalcNonCoupled(
false);
201 this->
forces().setCalcCoupled(
false);
207 if (dampingModel_->active())
210 td.updateAverages(*
this);
213 dampingModel_->cacheFields(
true);
216 td.part() = TrackData::tpDampingNoTrack;
217 CloudType::move(td, this->db().time().deltaTValue());
220 td.part() = TrackData::tpCorrectTrack;
221 CloudType::move(td, this->db().time().deltaTValue());
224 dampingModel_->cacheFields(
false);
231 if (packingModel_->active())
234 td.updateAverages(*
this);
235 packingModel_->cacheFields(
true);
236 td.part() = TrackData::tpPackingNoTrack;
237 CloudType::move(td, this->db().time().deltaTValue());
238 td.part() = TrackData::tpCorrectTrack;
239 CloudType::move(td, this->db().time().deltaTValue());
240 packingModel_->cacheFields(
false);
247 if (isotropyModel_->active())
250 td.updateAverages(*
this);
253 isotropyModel_->calculate();
261 this->updateCellOccupancy();
264 this->
forces().setCalcNonCoupled(
true);
269 template<
class CloudType>
279 Info<<
" Min cell volume fraction = " << alphaMin <<
endl;
280 Info<<
" Max cell volume fraction = " << alphaMax <<
endl;
282 if (alphaMax < SMALL)
295 const scalar nPack = n*alphaMax/
alpha()[cellI];
306 Info<<
" Min dense number of parcels = " << nMin <<
endl;
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
Adds MPPIC modelling to kinematic clouds.
virtual ~MPPICCloud()
Destructor.
Base class for collisional damping models.
Mesh data needed to do the Finite Volume discretisation.
void evolve()
Evolve the cloud.
word name(const complex &)
Return a string representation of a complex.
void motion(TrackData &td)
Particle motion.
This function object calculates the forces and moments by integrating the pressure and skin-friction ...
void storeState()
Store the current cloud state.
A class for handling words, derived from string.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
errorManipArg< error, int > exit(error &err, const int errNo=1)
DSMCCloud< dsmcParcel > CloudType
Base class for packing models.
Selector class for relaxation factors, solver type and solution.
autoPtr< BasicCompressibleTurbulenceModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const typename BasicCompressibleTurbulenceModel::transportModel &transport, const word &propertiesName)
void setModels()
Set cloud sub-models.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void readFields(const Mesh &mesh, const IOobjectList &objects, PtrList< GeoField > &fields)
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
autoPtr< IsotropyModel< MPPICCloud< CloudType > > > isotropyModel_
Exchange model.
autoPtr< DampingModel< MPPICCloud< CloudType > > > dampingModel_
Damping model.
dimensionedScalar alphaMax(laminarTransport.lookup("alphaMax"))
Type gMin(const FieldField< Field, Type > &f)
void restoreState()
Reset the current cloud to the previously stored state.
#define FatalErrorIn(functionName)
Report an error message using Foam::FatalError.
const cellShapeList & cells
const List< DynamicList< molecule * > > & cellOccupancy
autoPtr< PackingModel< MPPICCloud< CloudType > > > packingModel_
Packing model.
Type gMax(const FieldField< Field, Type > &f)
A class for managing temporary objects.
Base class for collisional return-to-isotropy models.
conserve internalField()+