32 template<
class CloudType>
35 atomizationModel_.reset
39 this->subModelProperties(),
48 this->subModelProperties(),
55 template<
class CloudType>
61 CloudType::cloudReset(c);
70 template<
class CloudType>
73 const word& cloudName,
81 CloudType(cloudName, rho, U, g, thermo,
false),
83 cloudCopyPtr_(
nullptr),
84 averageParcelMass_(0.0),
85 atomizationModel_(
nullptr),
86 breakupModel_(
nullptr)
92 averageParcelMass_ = this->injectors().averageParcelMass();
97 this->deleteLostParticles();
100 Info <<
"Average parcel mass: " << averageParcelMass_ <<
endl;
103 if (this->
solution().resetSourcesOnStartup())
105 CloudType::resetSourceTerms();
110 template<
class CloudType>
119 cloudCopyPtr_(
nullptr),
120 averageParcelMass_(c.averageParcelMass_),
126 template<
class CloudType>
136 cloudCopyPtr_(
nullptr),
137 averageParcelMass_(0.0),
138 atomizationModel_(
nullptr),
139 breakupModel_(
nullptr)
145 template<
class CloudType>
152 template<
class CloudType>
156 const scalar lagrangianDt
159 CloudType::setParcelThermoProperties(parcel, lagrangianDt);
165 const scalar pc = this->
p()[parcel.cell()];
168 parcel.Cp() = liqMix.
Cp(pc, parcel.T(), X);
169 parcel.rho() = liqMix.
rho(pc, parcel.T(), X);
170 parcel.sigma() = liqMix.
sigma(pc, parcel.T(), X);
171 parcel.mu() = liqMix.
mu(pc, parcel.T(), X);
175 template<
class CloudType>
179 const scalar lagrangianDt,
180 const bool fullyDescribed
183 CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed);
186 parcel.position0() = parcel.position();
187 parcel.d0() = parcel.d();
189 parcel.y() = breakup().y0();
190 parcel.yDot() = breakup().yDot0();
192 parcel.liquidCore() = atomization().initLiquidCore();
196 template<
class CloudType>
203 clone(this->
name() +
"Copy").ptr()
209 template<
class CloudType>
212 cloudReset(cloudCopyPtr_());
213 cloudCopyPtr_.clear();
217 template<
class CloudType>
222 typename parcelType::trackingData td(*
this);
224 this->
solve(*
this, td);
229 template<
class CloudType>
233 scalar d32 = 1.0e+6*this->Dij(3, 2);
234 scalar d10 = 1.0e+6*this->Dij(1, 0);
235 scalar dMax = 1.0e+6*this->Dmax();
236 scalar pen = this->penetration(0.95);
238 Info <<
" D10, D32, Dmax (mu) = " << d10 <<
", " << d32
239 <<
", " << dMax <<
nl 240 <<
" Liquid penetration 95% mass (m) = " << pen <<
endl;
scalar Cp(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture heat capacity [J/(kg K)].
DSMCCloud< dsmcParcel > CloudType
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.
void storeState()
Store the current cloud state.
basicSpecieMixture & composition
void restoreState()
Reset the current cloud to the previously stored state.
Templated atomization model class.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void setModels()
Set cloud sub-models.
void setParcelThermoProperties(parcelType &parcel, const scalar lagrangianDt)
Set parcel thermo properties.
scalar mu(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture viscosity [Pa s].
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
virtual ~SprayCloud()
Destructor.
scalar rho(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture density [kg/m^3].
void checkParcelProperties(parcelType &parcel, const scalar lagrangianDt, const bool fullyDescribed)
Check parcel properties.
scalarField X(const scalarField &Y) const
Returns the mole fractions corresponding to the given mass fractions.
A class for handling words, derived from string.
scalar sigma(const scalar p, const scalar T, const scalarField &X) const
Estimate mixture surface tension [N/m].
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package, and provides:
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Templated base class for spray cloud.
autoPtr< BreakupModel< SprayCloud< CloudType > > > breakupModel_
Break-up model.
void evolve()
Evolve the spray (inject, move)
word name(const complex &)
Return a string representation of a complex.
void info()
Print cloud information.
autoPtr< AtomizationModel< SprayCloud< CloudType > > > atomizationModel_
Atomization model.
PtrList< volScalarField > & Y
Mesh data needed to do the Finite Volume discretisation.
void cloudReset(SprayCloud< CloudType > &c)
Reset state of cloud.
Templated break-up model class.
Selector class for relaxation factors, solver type and solution.
Virtual abstract base class for templated SprayCloud.