33 template<
class CloudType>
36 atomisationModel_.reset
40 this->subModelProperties(),
49 this->subModelProperties(),
56 template<
class CloudType>
62 CloudType::cloudReset(c);
71 template<
class CloudType>
74 const word& cloudName,
82 CloudType(cloudName, rho, U, g, carrierThermo,
false),
83 cloudCopyPtr_(
nullptr),
84 averageParcelMass_(0.0),
85 atomisationModel_(
nullptr),
86 breakupModel_(
nullptr)
90 averageParcelMass_ = this->injectors().averageParcelMass();
95 this->deleteLostParticles();
98 Info <<
"Average parcel mass: " << averageParcelMass_ <<
endl;
100 if (this->
solution().resetSourcesOnStartup())
102 CloudType::resetSourceTerms();
107 template<
class CloudType>
115 cloudCopyPtr_(
nullptr),
116 averageParcelMass_(c.averageParcelMass_),
122 template<
class CloudType>
131 cloudCopyPtr_(
nullptr),
132 averageParcelMass_(0.0),
133 atomisationModel_(
nullptr),
134 breakupModel_(
nullptr)
140 template<
class CloudType>
147 template<
class CloudType>
151 const scalar lagrangianDt
154 CloudType::setParcelThermoProperties(parcel, lagrangianDt);
160 const scalar pc = this->
p()[parcel.cell()];
163 parcel.Cp() = liqMix.
Cp(pc, parcel.T(), X);
164 parcel.rho() = liqMix.
rho(pc, parcel.T(), X);
165 parcel.sigma() = liqMix.
sigma(pc, parcel.T(), X);
166 parcel.mu() = liqMix.
mu(pc, parcel.T(), X);
170 template<
class CloudType>
174 const scalar lagrangianDt,
175 const bool fullyDescribed
178 CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed);
181 parcel.position0() = parcel.position();
182 parcel.d0() = parcel.d();
184 parcel.y() = breakup().y0();
185 parcel.yDot() = breakup().yDot0();
187 parcel.liquidCore() = atomisation().initLiquidCore();
191 template<
class CloudType>
204 template<
class CloudType>
207 cloudReset(cloudCopyPtr_());
208 cloudCopyPtr_.clear();
212 template<
class CloudType>
217 typename parcelType::trackingData td(*
this);
219 this->
solve(*
this, td);
224 template<
class CloudType>
228 scalar d32 = 1.0e+6*this->Dij(3, 2);
229 scalar d10 = 1.0e+6*this->Dij(1, 0);
230 scalar dMax = 1.0e+6*this->Dmax();
231 scalar pen = this->penetration(0.95);
233 Info <<
" D10, D32, Dmax (mu) = " << d10 <<
", " << d32
234 <<
", " << dMax <<
nl 235 <<
" 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.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void setModels()
Set cloud sub-models.
Templated atomisation model class.
void setParcelThermoProperties(parcelType &parcel, const scalar lagrangianDt)
Set parcel thermo properties.
SprayCloud(const word &cloudName, const volScalarField &rho, const volVectorField &U, const dimensionedVector &g, const fluidThermo &carrierThermo, bool readFields=true)
Construct given carrier gas fields.
scalar mu(const scalar p, const scalar T, const scalarField &X) const
Calculate the mixture viscosity [Pa s].
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.
autoPtr< BasicCompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const typename BasicCompressibleMomentumTransportModel::transportModel &transport)
scalarField X(const scalarField &Y) const
Returns the mole fractions corresponding to the given mass fractions.
A class for handling words, derived from string.
Base-class for fluid thermodynamic properties.
scalar sigma(const scalar p, const scalar T, const scalarField &X) const
Estimate mixture surface tension [N/m].
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.
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.
autoPtr< AtomisationModel< SprayCloud< CloudType > > > atomisationModel_
Atomisation model.