ENH: Updated lagrangian coupling to surface film models

This commit is contained in:
andy
2011-01-26 12:24:02 +00:00
parent 101285018b
commit b89e017cc9
5 changed files with 48 additions and 38 deletions

View File

@ -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 = \

View File

@ -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];

View File

@ -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

View File

@ -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

View File

@ -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,