33 template<
class CloudType>
50 template<
class CloudType>
58 TFilmPatch_(sfm.TFilmPatch_),
59 CpFilmPatch_(sfm.CpFilmPatch_)
65 template<
class CloudType>
66 template<
class filmType>
77 DebugInfo<<
"Parcel " <<
p.origId() <<
" absorbInteraction" <<
endl;
83 const vector& Up = this->owner().U().boundaryField()[
pp.index()][facei];
104 this->nParcelsTransferred()++;
106 this->totalMassTransferred() += mass;
108 keepParticle =
false;
112 template<
class CloudType>
120 const label patchi =
pp.index();
121 const label meshFacei =
p.face();
122 const label facei =
pp.whichFace(meshFacei);
124 this->initFilmModels();
127 if (this->filmModel_ && this->filmModel_->isRegionPatch(patchi))
129 auto& film = *(this->filmModel_);
131 switch (this->interactionType_)
135 this->bounceInteraction(
p,
pp, facei, keepParticle);
142 const scalar m =
p.nParticle()*
p.mass();
144 this->absorbInteraction
145 (film,
p,
pp, facei, m, keepParticle);
153 const scalar pc = thermo_.thermo().p()[
p.cell()];
156 const scalar
mu = liq.
mu(pc,
p.
T());
160 this->deltaFilmPatch_[patchi][facei] < this->deltaWet_
165 this->drySplashInteraction
166 (film,
sigma,
mu,
p,
pp, facei, keepParticle);
170 this->wetSplashInteraction
171 (film,
sigma,
mu,
p,
pp, facei, keepParticle);
180 <<
"Unknown interaction type enumeration" 191 for (areaFilm& film : this->areaFilms_)
193 const label filmFacei
206 switch (this->interactionType_)
210 this->bounceInteraction(
p,
pp, facei, keepParticle);
217 const scalar m =
p.nParticle()*
p.mass();
219 this->absorbInteraction
221 film,
p,
pp, facei, m, keepParticle
229 const scalar pc = thermo_.thermo().p()[
p.cell()];
230 const liquidProperties& liq = thermo_.liquids().properties()[0];
231 const scalar
sigma = liq.sigma(pc,
p.
T());
232 const scalar
mu = liq.mu(pc,
p.
T());
236 film.
h()[filmFacei] < this->deltaWet_
241 this->drySplashInteraction
242 (film,
sigma,
mu,
p,
pp, facei, keepParticle);
246 this->wetSplashInteraction
247 (film,
sigma,
mu,
p,
pp, facei, keepParticle);
256 <<
"Unknown interaction type enumeration" 270 template<
class CloudType>
273 const label filmPatchi,
274 const label primaryPatchi,
286 filmModel.
toPrimary(filmPatchi, TFilmPatch_);
289 filmModel.
toPrimary(filmPatchi, CpFilmPatch_);
293 template<
class CloudType>
309 template<
class CloudType>
313 const label filmFacei
319 p.
T() = TFilmPatch_[filmFacei];
320 p.Cp() = CpFilmPatch_[filmFacei];
324 template<
class CloudType>
Thermo parcel surface film model.
virtual void info()
Write surface film info.
bool isRegionPatch(const label patchi) const
True if patchi on the primary region is coupled to this region.
const Internal::FieldType & primitiveField() const noexcept
Return a const-reference to the internal field values.
Base class for surface film models.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
virtual void setParcelProperties(parcelType &p, const label filmFacei) const
Set the individual parcel properties.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
void absorbInteraction(filmType &, const parcelType &p, const polyPatch &pp, const label facei, const scalar mass, bool &keepParticle)
Absorb parcel into film.
ThermoSurfaceFilm(const dictionary &dict, CloudType &owner)
Construct from components.
Ostream & endl(Ostream &os)
Add newline and flush stream.
label whichFace(const label meshFacei) const
The area-face corresponding to the mesh-face, -1 if not found.
virtual const areaScalarField & Cp() const =0
Access const reference Cp.
virtual void setParcelProperties(parcelType &p, const label filmFacei) const
Set the individual parcel properties.
dimensionedScalar sigma("sigma", dimMass/sqr(dimTime), transportProperties)
virtual scalar sigma(scalar p, scalar T) const =0
Surface tension [N/m].
const Field< point_type > & faceNormals() const
Return face unit normals for patch.
CloudType::parcelType parcelType
Convenience typedef to the cloud's parcel type.
void toPrimary(const label regionPatchi, List< Type > ®ionField) const
Convert a local region field to the primary region.
virtual void cacheFilmFields(const areaFilm &film)
Cache the film fields in preparation for injection.
const areaScalarField & h() const noexcept
Access const reference h.
virtual void cacheFilmFields(const label filmPatchi, const label primaryPatchi, const regionFilm &)
Cache the film fields in preparation for injection.
const faMesh & regionMesh() const
Return the region mesh database.
The thermophysical properties of a liquid.
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package, and provides:
errorManip< error > abort(error &err)
#define DebugInfo
Report an information message using Foam::Info.
tmp< GeometricField< Type, PatchField, GeoMesh > > T() const
Return transpose (only if it is a tensor field)
Kinematic parcel surface film model.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
virtual const areaScalarField & Tf() const =0
Access const reference Tf.
virtual const volScalarField & Ts() const =0
Return the film surface temperature [K].
const dimensionedScalar mu
Atomic mass unit.
virtual const volScalarField & Cp() const =0
Return the film specific heat capacity [J/kg/K].
Registry of regIOobjects.
A patch is a list of labels that address the faces in the global face list.
virtual scalar mu(scalar p, scalar T) const =0
Liquid viscosity [Pa s].
virtual bool transferParcel(parcelType &p, const polyPatch &pp, bool &keepParticle)
Transfer parcel from cloud to surface film.
Templated base class for dsmc cloud.
const Boundary & boundaryField() const noexcept
Return const-reference to the boundary field.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
virtual void info()
Write surface film info.