mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Updated lagrangian coupling to surface film models
This commit is contained in:
@ -17,7 +17,8 @@ EXE_INC = \
|
||||
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \
|
||||
-I$(LIB_SRC)/turbulenceModels/LES/LESdeltas/lnInclude \
|
||||
-I$(LIB_SRC)/turbulenceModels/compressible/LES/lnInclude \
|
||||
-I$(LIB_SRC)/surfaceFilmModels/lnInclude \
|
||||
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
|
||||
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
|
||||
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
|
||||
|
||||
LIB_LIBS = \
|
||||
|
||||
@ -133,29 +133,33 @@ void Foam::SurfaceFilmModel<CloudType>::inject(TrackData& td)
|
||||
}
|
||||
|
||||
// Retrieve the film model from the owner database
|
||||
const surfaceFilmModels::surfaceFilmModel& filmModel =
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel =
|
||||
this->owner().db().objectRegistry::template lookupObject
|
||||
<surfaceFilmModels::surfaceFilmModel>
|
||||
<regionModels::surfaceFilmModels::surfaceFilmModel>
|
||||
(
|
||||
"surfaceFilmProperties"
|
||||
);
|
||||
|
||||
const labelList& filmPatches = filmModel.filmBottomPatchIDs();
|
||||
if (!filmModel.active())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const labelList& filmPatches = filmModel.intCoupledPatchIDs();
|
||||
const labelList& primaryPatches = filmModel.primaryPatchIDs();
|
||||
|
||||
const polyBoundaryMesh& pbm = this->owner().mesh().boundaryMesh();
|
||||
|
||||
forAll(filmPatches, i)
|
||||
{
|
||||
const label primaryPatchI = primaryPatches[i];
|
||||
const directMappedWallPolyPatch& wpp =
|
||||
refCast<const directMappedWallPolyPatch>
|
||||
(
|
||||
this->owner().mesh().boundaryMesh()[primaryPatchI]
|
||||
);
|
||||
|
||||
const labelList& injectorCellsPatch = wpp.faceCells();
|
||||
|
||||
const label filmPatchI = filmPatches[i];
|
||||
const mapDistribute& distMap = wpp.map();
|
||||
const label primaryPatchI = primaryPatches[i];
|
||||
const directMappedPatchBase& mapPatch =
|
||||
filmModel.mappedPatches()[filmPatchI];
|
||||
const mapDistribute& distMap = mapPatch.map();
|
||||
|
||||
const labelList& injectorCellsPatch = pbm[primaryPatchI].faceCells();
|
||||
|
||||
cacheFilmFields(filmPatchI, primaryPatchI, distMap, filmModel);
|
||||
|
||||
forAll(injectorCellsPatch, j)
|
||||
@ -209,7 +213,7 @@ void Foam::SurfaceFilmModel<CloudType>::cacheFilmFields
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mapDistribute& distMap,
|
||||
const surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
)
|
||||
{
|
||||
massParcelPatch_ = filmModel.massForPrimary().boundaryField()[filmPatchI];
|
||||
|
||||
@ -47,9 +47,12 @@ namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of classes
|
||||
namespace surfaceFilmModels
|
||||
namespace regionModels
|
||||
{
|
||||
class surfaceFilmModel;
|
||||
namespace surfaceFilmModels
|
||||
{
|
||||
class surfaceFilmModel;
|
||||
}
|
||||
}
|
||||
|
||||
class mapDistribute;
|
||||
@ -114,7 +117,7 @@ protected:
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mapDistribute& distMap,
|
||||
const surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
);
|
||||
|
||||
//- Set the individual parcel properties
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -141,7 +141,7 @@ Foam::vector Foam::ThermoSurfaceFilm<CloudType>::splashDirection
|
||||
template<class CloudType>
|
||||
void Foam::ThermoSurfaceFilm<CloudType>::absorbInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
const parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -218,7 +218,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::bounceInteraction
|
||||
template<class CloudType>
|
||||
void Foam::ThermoSurfaceFilm<CloudType>::drySplashInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
const parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -274,7 +274,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::drySplashInteraction
|
||||
template<class CloudType>
|
||||
void Foam::ThermoSurfaceFilm<CloudType>::wetSplashInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -331,6 +331,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::wetSplashInteraction
|
||||
U = -epsilon*(Un) + 5/7*(Ut);
|
||||
|
||||
keepParticle = true;
|
||||
return;
|
||||
}
|
||||
else if ((We >= 20) && (We < Wec)) // spread - assume absorb
|
||||
{
|
||||
@ -350,7 +351,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::wetSplashInteraction
|
||||
template<class CloudType>
|
||||
void Foam::ThermoSurfaceFilm<CloudType>::splashInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
const parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -390,8 +391,8 @@ void Foam::ThermoSurfaceFilm<CloudType>::splashInteraction
|
||||
const scalar dBarSplash = 1/cbrt(6.0)*cbrt(mRatio/Ns)*d + ROOTVSMALL;
|
||||
|
||||
// cumulative diameter splash distribution
|
||||
const scalar dMin = 0.01*d;
|
||||
const scalar dMax = d;
|
||||
const scalar dMax = cbrt(mRatio)*d;
|
||||
const scalar dMin = 0.001*dMax;
|
||||
const scalar K = exp(-dMin/dBarSplash) - exp(-dMax/dBarSplash);
|
||||
|
||||
// surface energy of secondary parcels [J]
|
||||
@ -567,11 +568,11 @@ bool Foam::ThermoSurfaceFilm<CloudType>::transferParcel
|
||||
)
|
||||
{
|
||||
// Retrieve the film model from the owner database
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel =
|
||||
const_cast<surfaceFilmModels::surfaceFilmModel&>
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel =
|
||||
const_cast<regionModels::surfaceFilmModels::surfaceFilmModel&>
|
||||
(
|
||||
this->owner().db().objectRegistry::template
|
||||
lookupObject<surfaceFilmModels::surfaceFilmModel>
|
||||
lookupObject<regionModels::surfaceFilmModels::surfaceFilmModel>
|
||||
(
|
||||
"surfaceFilmProperties"
|
||||
)
|
||||
@ -579,7 +580,7 @@ bool Foam::ThermoSurfaceFilm<CloudType>::transferParcel
|
||||
|
||||
const label patchI = pp.index();
|
||||
|
||||
if (filmModel.isFilmPatch(patchI))
|
||||
if (filmModel.isRegionPatch(patchI))
|
||||
{
|
||||
const label faceI = pp.whichFace(p.face());
|
||||
|
||||
@ -627,10 +628,11 @@ bool Foam::ThermoSurfaceFilm<CloudType>::transferParcel
|
||||
}
|
||||
}
|
||||
|
||||
// transfer parcel/parcel interactions complete
|
||||
return true;
|
||||
}
|
||||
|
||||
// do not transfer parcel
|
||||
// parcel not interacting with film
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -641,7 +643,7 @@ void Foam::ThermoSurfaceFilm<CloudType>::cacheFilmFields
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mapDistribute& distMap,
|
||||
const surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
)
|
||||
{
|
||||
SurfaceFilmModel<CloudType>::cacheFilmFields
|
||||
|
||||
@ -104,7 +104,7 @@ protected:
|
||||
const SLGThermo& thermo_;
|
||||
|
||||
|
||||
// Cached injector fields per film patch
|
||||
// Cached injector fields per film patch
|
||||
|
||||
//- Film temperature / patch face
|
||||
scalarList TFilmPatch_;
|
||||
@ -168,7 +168,7 @@ protected:
|
||||
//- Absorb parcel into film
|
||||
void absorbInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
const parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -188,7 +188,7 @@ protected:
|
||||
//- Parcel interaction with dry surface
|
||||
void drySplashInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
const parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -198,7 +198,7 @@ protected:
|
||||
//- Parcel interaction with wetted surface
|
||||
void wetSplashInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -208,7 +208,7 @@ protected:
|
||||
//- Bai parcel splash interaction model
|
||||
void splashInteraction
|
||||
(
|
||||
surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
regionModels::surfaceFilmModels::surfaceFilmModel& filmModel,
|
||||
const parcelType& p,
|
||||
const polyPatch& pp,
|
||||
const label faceI,
|
||||
@ -228,7 +228,7 @@ protected:
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mapDistribute& distMap,
|
||||
const surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
);
|
||||
|
||||
//- Set the individual parcel properties
|
||||
@ -247,7 +247,7 @@ public:
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
//- Construct from components
|
||||
ThermoSurfaceFilm
|
||||
(
|
||||
const dictionary& dict,
|
||||
|
||||
Reference in New Issue
Block a user