36template<
class CloudType>
43 this->subModelProperties(),
57 this->subModelProperties().readEntry(
"radiation",
radiation_);
118template<
class CloudType>
121 CloudType::cloudReset(c);
123 heatTransferModel_.reset(c.heatTransferModel_.ptr());
124 TIntegrator_.reset(c.TIntegrator_.ptr());
132template<
class CloudType>
133Foam::ThermoCloud<CloudType>::ThermoCloud
153 cloudCopyPtr_(nullptr),
154 constProps_(this->particleProperties()),
158 heatTransferModel_(nullptr),
159 TIntegrator_(nullptr),
163 radAreaPT4_(nullptr),
205 parcelType::readFields(*
this);
210 if (this->solution().resetSourcesOnStartup())
217template<
class CloudType>
218Foam::ThermoCloud<CloudType>::ThermoCloud
220 ThermoCloud<CloudType>& c,
226 cloudCopyPtr_(nullptr),
227 constProps_(c.constProps_),
231 heatTransferModel_(c.heatTransferModel_->clone()),
232 TIntegrator_(c.TIntegrator_->clone()),
233 radiation_(c.radiation_),
236 radAreaPT4_(nullptr),
239 new volScalarField::Internal
243 IOobject::scopedName(this->
name(),
"hsTrans"),
248 IOobject::NO_REGISTER
255 new volScalarField::Internal
259 IOobject::scopedName(this->
name(),
"hsCoeff"),
264 IOobject::NO_REGISTER
326template<
class CloudType>
327Foam::ThermoCloud<CloudType>::ThermoCloud
331 const ThermoCloud<CloudType>& c
336 cloudCopyPtr_(nullptr),
341 heatTransferModel_(nullptr),
342 TIntegrator_(nullptr),
346 radAreaPT4_(nullptr),
354template<
class CloudType>
358 const scalar lagrangianDt
361 CloudType::setParcelThermoProperties(parcel, lagrangianDt);
368template<
class CloudType>
372 const scalar lagrangianDt,
373 const bool fullyDescribed
376 CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed);
380template<
class CloudType>
393template<
class CloudType>
397 cloudCopyPtr_.clear();
401template<
class CloudType>
404 CloudType::resetSourceTerms();
405 hsTrans_->field() = 0.0;
406 hsCoeff_->field() = 0.0;
410 radAreaP_->field() = 0.0;
417template<
class CloudType>
420 const ThermoCloud<CloudType>& cloudOldTime
423 CloudType::relaxSources(cloudOldTime);
425 this->
relax(hsTrans_(), cloudOldTime.hsTrans(),
"h");
426 this->
relax(hsCoeff_(), cloudOldTime.hsCoeff(),
"h");
430 this->
relax(radAreaP_(), cloudOldTime.radAreaP(),
"radiation");
437template<
class CloudType>
440 CloudType::scaleSources();
454template<
class CloudType>
457 const typename parcelType::trackingData&
td
460 CloudType::preEvolve(
td);
462 this->pAmbient() =
thermo_.thermo().p().average().value();
466template<
class CloudType>
471 typename parcelType::trackingData
td(*
this);
473 this->
solve(*
this, td);
478template<
class CloudType>
487template<
class CloudType>
492 Log_<<
" Temperature min/max = " <<
Tmin() <<
", " <<
Tmax()
const word cloudName(propsDict.get< word >("cloud"))
const uniformDimensionedVectorField & g
void deleteLostParticles()
Remove lost particles from cloud and delete.
void autoMap(const mapPolyMesh &)
Remap the cells of particles corresponding to the.
void cloudReset(const Cloud< ParticleType > &c)
Reset the particles.
const word & cloudName() const
const IOdictionary & particleProperties() const
const fvMesh & mesh() const
DimensionedField< scalar, volMesh > Internal
Templated class to calculate the fluid-particle heat transfer coefficients based on a specified Nusse...
@ NO_REGISTER
Do not request registration (bool: false).
@ REGISTER
Request registration (bool: true).
@ NO_READ
Nothing to be read.
@ READ_IF_PRESENT
Reading is optional [identical to LAZY_READ].
@ NO_WRITE
Ignore writing from objectRegistry::writeObject().
@ AUTO_WRITE
Automatically write from objectRegistry::writeObject().
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const objectRegistry & db() const noexcept
Return the local objectRegistry.
static word scopedName(const std::string &scope, const word &name)
Create scope:name or scope_name string.
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package,...
Templated base class for thermodynamic cloud.
volScalarField::Internal & radAreaP()
Radiation sum of parcel projected areas [m2].
void setModels()
Set cloud sub-models.
volScalarField::Internal & hsCoeff()
Return coefficient for carrier phase hs equation.
volScalarField::Internal & radAreaPT4()
Radiation sum of parcel projected area*temperature^4 [m2K4].
void storeState()
Store the current cloud state.
const volScalarField & T() const
Return const access to the carrier temperature field.
void setParcelThermoProperties(parcelType &parcel, const scalar lagrangianDt)
Set parcel thermo properties.
void checkParcelProperties(parcelType &parcel, const scalar lagrangianDt, const bool fullyDescribed)
Check parcel properties.
const volScalarField & p_
Pressure [Pa].
volScalarField::Internal & radT4()
Radiation sum of parcel temperature^4 [K4].
void relaxSources(const ThermoCloud< CloudType > &cloudOldTime)
Apply relaxation to (steady state) cloud sources.
autoPtr< volScalarField::Internal > hsCoeff_
Coefficient for carrier phase hs equation [W/K].
autoPtr< volScalarField::Internal > radT4_
Radiation sum of parcel temperature^4.
void scaleSources()
Apply scaling to (transient) cloud sources.
autoPtr< integrationScheme > TIntegrator_
Temperature integration.
CloudType::particleType parcelType
Type of parcel the cloud was instantiated for.
Switch radiation_
Include radiation.
const SLGThermo & thermo() const
Return const access to thermo package.
virtual void autoMap(const mapPolyMesh &)
Remap the cells of particles corresponding to the.
virtual autoPtr< Cloud< parcelType > > clone(const word &name)
Construct and return clone based on (this) with new name.
void cloudReset(ThermoCloud< CloudType > &c)
Reset state of cloud.
void evolve()
Evolve the cloud.
autoPtr< HeatTransferModel< ThermoCloud< CloudType > > > heatTransferModel_
Heat transfer model.
parcelType::constantProperties constProps_
Thermo parcel constant properties.
autoPtr< volScalarField::Internal > radAreaPT4_
Radiation sum of parcel projected areas * temperature^4.
volScalarField::Internal & hsTrans()
Sensible enthalpy transfer [J/kg].
void preEvolve(const typename parcelType::trackingData &td)
Pre-evolve.
void info()
Print cloud information.
void restoreState()
Reset the current cloud to the previously stored state.
void resetSourceTerms()
Reset the cloud source terms.
const SLGThermo & thermo_
SLG thermodynamics package.
const volScalarField & T_
Temperature [K].
const volScalarField & p() const
Return const access to the carrier pressure field.
autoPtr< volScalarField::Internal > hsTrans_
Sensible enthalpy transfer [J/kg].
autoPtr< volScalarField::Internal > radAreaP_
Radiation sum of parcel projected areas.
Mesh data needed to do the Finite Volume discretisation.
static autoPtr< integrationScheme > New(const word &phiName, const dictionary &dict)
Select an integration scheme.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
const Time & time() const noexcept
Return time registry.
Selector class for relaxation factors, solver type and solution.
Virtual abstract base class for templated ThermoCloud.
thermoCloud()=default
Null constructor.
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.
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
#define Log_
Report write to Foam::Info if the class log switch is true.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
DSMCCloud< dsmcParcel > CloudType
GeometricField< vector, fvPatchField, volMesh > volVectorField
void readFields(const typename GeoFieldType::Mesh &mesh, const IOobjectList &objects, const NameMatchPredicate &selectedFields, DynamicList< regIOobject * > &storedObjects)
Read the selected GeometricFields of the templated type and store on the objectRegistry.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimEnergy
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
const dimensionSet dimArea(sqr(dimLength))
Ostream & endl(Ostream &os)
Add newline and flush stream.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
dimensionedScalar pow4(const dimensionedScalar &ds)
static constexpr const zero Zero
Global zero (0).
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.