34template<
class CloudType>
37 atomizationModel_.reset
41 this->subModelProperties(),
50 this->subModelProperties(),
57template<
class CloudType>
63 CloudType::cloudReset(c);
65 atomizationModel_.reset(c.atomizationModel_.ptr());
66 breakupModel_.reset(c.breakupModel_.ptr());
72template<
class CloudType>
85 cloudCopyPtr_(nullptr),
86 averageParcelMass_(0.0),
87 atomizationModel_(nullptr),
88 breakupModel_(nullptr)
94 averageParcelMass_ = this->injectors().averageParcelMass();
102 Info <<
"Average parcel mass: " << averageParcelMass_ <<
endl;
105 if (this->
solution().resetSourcesOnStartup())
112template<
class CloudType>
121 cloudCopyPtr_(nullptr),
122 averageParcelMass_(c.averageParcelMass_),
123 atomizationModel_(c.atomizationModel_->clone()),
124 breakupModel_(c.breakupModel_->clone())
128template<
class CloudType>
138 cloudCopyPtr_(nullptr),
139 averageParcelMass_(0.0),
140 atomizationModel_(nullptr),
141 breakupModel_(nullptr)
147template<
class CloudType>
154template<
class CloudType>
158 const scalar lagrangianDt
167 const scalar pc = this->
p()[parcel.cell()];
170 parcel.Cp() = liqMix.
Cp(pc, parcel.T(), X);
171 parcel.rho() = liqMix.
rho(pc, parcel.T(), X);
172 parcel.sigma() = liqMix.
sigma(pc, parcel.T(), X);
173 parcel.mu() = liqMix.
mu(pc, parcel.T(), X);
177template<
class CloudType>
181 const scalar lagrangianDt,
182 const bool fullyDescribed
188 parcel.position0() = parcel.position();
189 parcel.d0() = parcel.d();
191 parcel.y() = breakup().y0();
192 parcel.yDot() = breakup().yDot0();
194 parcel.liquidCore() = atomization().initLiquidCore();
198template<
class CloudType>
205 clone(this->
name() +
"Copy").ptr()
211template<
class CloudType>
214 cloudReset(cloudCopyPtr_());
215 cloudCopyPtr_.clear();
219template<
class CloudType>
226 this->
solve(*
this, td);
231template<
class CloudType>
235 scalar d32 = 1.0e+6*this->Dij(3, 2);
236 scalar d10 = 1.0e+6*this->Dij(1, 0);
237 scalar dMax = 1.0e+6*this->Dmax();
238 scalar pen = this->penetration(0.95);
240 Info <<
" D10, D32, Dmax (mu) = " << d10 <<
", " << d32
241 <<
", " << dMax <<
nl
242 <<
" Liquid penetration 95% mass (m) = " << pen <<
endl;
const uniformDimensionedVectorField & g
Templated atomization model class.
Templated break-up model class.
void deleteLostParticles()
Remove lost particles from cloud and delete.
Templated base class for dsmc cloud.
void info() const
Print cloud information.
void setParcelThermoProperties(parcelType &parcel, const scalar lagrangianDt)
Set parcel thermo properties.
void checkParcelProperties(parcelType &parcel, const scalar lagrangianDt, const bool fullyDescribed)
Check parcel properties.
void resetSourceTerms()
Reset the cloud source terms.
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package,...
Templated base class for spray cloud.
virtual ~SprayCloud()
Destructor.
void setModels()
Set cloud sub-models.
void storeState()
Store the current cloud state.
void setParcelThermoProperties(parcelType &parcel, const scalar lagrangianDt)
Set parcel thermo properties.
void checkParcelProperties(parcelType &parcel, const scalar lagrangianDt, const bool fullyDescribed)
Check parcel properties.
void cloudReset(SprayCloud< CloudType > &c)
Reset state of cloud.
CloudType::particleType parcelType
Type of parcel the cloud was instantiated for.
void evolve()
Evolve the spray (inject, move)
void info()
Print cloud information.
void restoreState()
Reset the current cloud to the previously stored state.
Class used to pass data into container.
Reads fields from the time directories and adds them to the mesh database for further post-processing...
Mesh data needed to do the Finite Volume discretisation.
scalar mu(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture viscosity [Pa s].
scalar sigma(const scalar p, const scalar T, const scalarField &X) const
Estimate mixture surface tension [N/m].
scalarField X(const scalarField &Y) const
Returns the mole fractions corresponding to the given mass fractions.
scalar Cp(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture heat capacity [J/(kg K)].
scalar rho(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture density [kg/m^3].
Selector class for relaxation factors, solver type and solution.
Virtual abstract base class for templated SprayCloud.
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
A class for handling words, derived from Foam::string.
basicSpecieMixture & composition
PtrList< volScalarField > & Y
messageStream Info
Information stream (stdout output on master, null elsewhere)
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const wordHashSet &selectedFields, LIFOStack< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type.
Ostream & endl(Ostream &os)
Add newline and flush stream.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
constexpr char nl
The newline '\n' character (0x0a)
const word cloudName(propsDict.get< word >("cloud"))