mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Tidied surface film mapping functionality
This commit is contained in:
@ -227,7 +227,6 @@ void mappedFieldFvPatchField<Type>::updateCoeffs()
|
||||
|
||||
const fieldType& nbrField = sampleField();
|
||||
|
||||
const mapDistribute& distMap = mappedPatchBase::map();
|
||||
newValues = nbrField.boundaryField()[nbrPatchID];
|
||||
this->distribute(newValues);
|
||||
|
||||
|
||||
@ -114,8 +114,8 @@ bool Foam::SurfaceFilmModel<CloudType>::transferParcel
|
||||
"bool Foam::SurfaceFilmModel<CloudType>::transferParcel"
|
||||
"("
|
||||
"parcelType&, "
|
||||
"const label, "
|
||||
"const bool&"
|
||||
"const polyPatch&, "
|
||||
"bool&"
|
||||
")"
|
||||
);
|
||||
|
||||
@ -156,11 +156,9 @@ void Foam::SurfaceFilmModel<CloudType>::inject(TrackData& td)
|
||||
const label filmPatchI = filmPatches[i];
|
||||
const label primaryPatchI = primaryPatches[i];
|
||||
|
||||
const mappedPatchBase& mapPatch = filmModel.mappedPatches()[filmPatchI];
|
||||
|
||||
const labelList& injectorCellsPatch = pbm[primaryPatchI].faceCells();
|
||||
|
||||
cacheFilmFields(filmPatchI, primaryPatchI, mapPatch, filmModel);
|
||||
cacheFilmFields(filmPatchI, primaryPatchI, filmModel);
|
||||
|
||||
const vectorField& Cf = mesh.C().boundaryField()[primaryPatchI];
|
||||
const vectorField& Sf = mesh.Sf().boundaryField()[primaryPatchI];
|
||||
@ -172,13 +170,11 @@ void Foam::SurfaceFilmModel<CloudType>::inject(TrackData& td)
|
||||
{
|
||||
const label cellI = injectorCellsPatch[j];
|
||||
|
||||
// The position is at the cell centre, which could be
|
||||
// in any tet of the decomposed cell, so arbitrarily
|
||||
// choose the first face of the cell as the tetFace
|
||||
// and the first point on the face after the base
|
||||
// point as the tetPt. The tracking will
|
||||
// pick the cell consistent with the motion in the
|
||||
// first tracking step.
|
||||
// The position could bein any tet of the decomposed cell,
|
||||
// so arbitrarily choose the first face of the cell as the
|
||||
// tetFace and the first point on the face after the base
|
||||
// point as the tetPt. The tracking will pick the cell
|
||||
// consistent with the motion in the first tracking step.
|
||||
const label tetFaceI = this->owner().mesh().cells()[cellI][0];
|
||||
const label tetPtI = 1;
|
||||
|
||||
@ -208,14 +204,22 @@ void Foam::SurfaceFilmModel<CloudType>::inject(TrackData& td)
|
||||
|
||||
setParcelProperties(*pPtr, j);
|
||||
|
||||
// Check new parcel properties
|
||||
// td.cloud().checkParcelProperties(*pPtr, 0.0, true);
|
||||
td.cloud().checkParcelProperties(*pPtr, 0.0, false);
|
||||
if (pPtr->nParticle() > 0.001)
|
||||
{
|
||||
// Check new parcel properties
|
||||
// td.cloud().checkParcelProperties(*pPtr, 0.0, true);
|
||||
td.cloud().checkParcelProperties(*pPtr, 0.0, false);
|
||||
|
||||
// Add the new parcel to the cloud
|
||||
td.cloud().addParticle(pPtr);
|
||||
// Add the new parcel to the cloud
|
||||
td.cloud().addParticle(pPtr);
|
||||
|
||||
nParcelsInjected_++;
|
||||
nParcelsInjected_++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: cache mass and re-distribute?
|
||||
delete pPtr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -227,26 +231,25 @@ void Foam::SurfaceFilmModel<CloudType>::cacheFilmFields
|
||||
(
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mappedPatchBase& mapPatch,
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
)
|
||||
{
|
||||
massParcelPatch_ = filmModel.cloudMassTrans().boundaryField()[filmPatchI];
|
||||
mapPatch.distribute(massParcelPatch_);
|
||||
filmModel.toPrimary(filmPatchI, massParcelPatch_);
|
||||
|
||||
diameterParcelPatch_ =
|
||||
filmModel.cloudDiameterTrans().boundaryField()[filmPatchI];
|
||||
mapPatch.distribute(diameterParcelPatch_);
|
||||
filmModel.toPrimary(filmPatchI, diameterParcelPatch_);
|
||||
|
||||
UFilmPatch_ = filmModel.Us().boundaryField()[filmPatchI];
|
||||
mapPatch.distribute(UFilmPatch_);
|
||||
filmModel.toPrimary(filmPatchI, UFilmPatch_);
|
||||
|
||||
rhoFilmPatch_ = filmModel.rho().boundaryField()[filmPatchI];
|
||||
mapPatch.distribute(rhoFilmPatch_);
|
||||
filmModel.toPrimary(filmPatchI, rhoFilmPatch_);
|
||||
|
||||
deltaFilmPatch_[primaryPatchI] =
|
||||
filmModel.delta().boundaryField()[filmPatchI];
|
||||
mapPatch.distribute(deltaFilmPatch_[primaryPatchI]);
|
||||
filmModel.toPrimary(filmPatchI, deltaFilmPatch_[primaryPatchI]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -116,7 +116,6 @@ protected:
|
||||
(
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mappedPatchBase& mapPatch,
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
);
|
||||
|
||||
|
||||
@ -643,7 +643,6 @@ void Foam::ThermoSurfaceFilm<CloudType>::cacheFilmFields
|
||||
(
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mappedPatchBase& mapPatch,
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel
|
||||
)
|
||||
{
|
||||
@ -651,15 +650,14 @@ void Foam::ThermoSurfaceFilm<CloudType>::cacheFilmFields
|
||||
(
|
||||
filmPatchI,
|
||||
primaryPatchI,
|
||||
mapPatch,
|
||||
filmModel
|
||||
);
|
||||
|
||||
TFilmPatch_ = filmModel.Ts().boundaryField()[filmPatchI];
|
||||
mapPatch.distribute(TFilmPatch_);
|
||||
filmModel.toPrimary(filmPatchI, TFilmPatch_);
|
||||
|
||||
CpFilmPatch_ = filmModel.Cp().boundaryField()[filmPatchI];
|
||||
mapPatch.distribute(CpFilmPatch_);
|
||||
filmModel.toPrimary(filmPatchI, CpFilmPatch_);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -227,7 +227,6 @@ protected:
|
||||
(
|
||||
const label filmPatchI,
|
||||
const label primaryPatchI,
|
||||
const mappedPatchBase& distMap,
|
||||
const regionModels::surfaceFilmModels::surfaceFilmModel&
|
||||
filmModel
|
||||
);
|
||||
|
||||
@ -151,13 +151,11 @@ void Foam::filmPyrolysisTemperatureCoupledFvPatchScalarField::updateCoeffs()
|
||||
|
||||
const label filmPatchI = filmModel.regionPatchID(patchI);
|
||||
|
||||
const mappedPatchBase& filmMap = filmModel.mappedPatches()[filmPatchI];
|
||||
|
||||
scalarField deltaFilm = filmModel.delta().boundaryField()[filmPatchI];
|
||||
filmMap.distribute(deltaFilm);
|
||||
filmModel.toPrimary(filmPatchI, deltaFilm);
|
||||
|
||||
scalarField TFilm = filmModel.Ts().boundaryField()[filmPatchI];
|
||||
filmMap.distribute(TFilm);
|
||||
filmModel.toPrimary(filmPatchI, TFilm);
|
||||
|
||||
|
||||
// Retrieve pyrolysis model
|
||||
@ -166,10 +164,8 @@ void Foam::filmPyrolysisTemperatureCoupledFvPatchScalarField::updateCoeffs()
|
||||
|
||||
const label pyrPatchI = pyrModel.regionPatchID(patchI);
|
||||
|
||||
const mappedPatchBase& pyrMap = pyrModel.mappedPatches()[pyrPatchI];
|
||||
|
||||
scalarField TPyr = pyrModel.T().boundaryField()[pyrPatchI];
|
||||
pyrMap.distribute(TPyr);
|
||||
pyrModel.toPrimary(pyrPatchI, TPyr);
|
||||
|
||||
|
||||
forAll(deltaFilm, i)
|
||||
|
||||
@ -154,13 +154,11 @@ void Foam::filmPyrolysisVelocityCoupledFvPatchVectorField::updateCoeffs()
|
||||
|
||||
const label filmPatchI = filmModel.regionPatchID(patchI);
|
||||
|
||||
const mappedPatchBase& filmMap = filmModel.mappedPatches()[filmPatchI];
|
||||
|
||||
scalarField deltaFilm = filmModel.delta().boundaryField()[filmPatchI];
|
||||
filmMap.distribute(deltaFilm);
|
||||
filmModel.toPrimary(filmPatchI, deltaFilm);
|
||||
|
||||
vectorField UFilm = filmModel.Us().boundaryField()[filmPatchI];
|
||||
filmMap.distribute(UFilm);
|
||||
filmModel.toPrimary(filmPatchI, UFilm);
|
||||
|
||||
|
||||
// Retrieve pyrolysis model
|
||||
@ -172,10 +170,8 @@ void Foam::filmPyrolysisVelocityCoupledFvPatchVectorField::updateCoeffs()
|
||||
|
||||
const label pyrPatchI = pyrModel.regionPatchID(patchI);
|
||||
|
||||
const mappedPatchBase& pyrMap = pyrModel.mappedPatches()[pyrPatchI];
|
||||
|
||||
scalarField phiPyr = pyrModel.phiGas().boundaryField()[pyrPatchI];
|
||||
pyrMap.distribute(phiPyr);
|
||||
pyrModel.toPrimary(pyrPatchI, phiPyr);
|
||||
|
||||
|
||||
const surfaceScalarField& phi =
|
||||
|
||||
@ -93,8 +93,6 @@ void Foam::regionModels::regionModel::initialise()
|
||||
DynamicList<label> primaryPatchIDs;
|
||||
DynamicList<label> intCoupledPatchIDs;
|
||||
const polyBoundaryMesh& rbm = regionMesh().boundaryMesh();
|
||||
const polyBoundaryMesh& pbm = primaryMesh().boundaryMesh();
|
||||
mappedPatches_.setSize(rbm.size());
|
||||
|
||||
forAll(rbm, patchI)
|
||||
{
|
||||
@ -116,19 +114,6 @@ void Foam::regionModels::regionModel::initialise()
|
||||
|
||||
const label primaryPatchI = mapPatch.samplePolyPatch().index();
|
||||
primaryPatchIDs.append(primaryPatchI);
|
||||
|
||||
mappedPatches_.set
|
||||
(
|
||||
patchI,
|
||||
new mappedPatchBase
|
||||
(
|
||||
pbm[primaryPatchI],
|
||||
regionMesh().name(),
|
||||
mapPatch.mode(),
|
||||
regionPatch.name(),
|
||||
vector::zero
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -212,8 +197,7 @@ Foam::regionModels::regionModel::regionModel(const fvMesh& mesh)
|
||||
regionMeshPtr_(NULL),
|
||||
coeffs_(dictionary::null),
|
||||
primaryPatchIDs_(),
|
||||
intCoupledPatchIDs_(),
|
||||
mappedPatches_()
|
||||
intCoupledPatchIDs_()
|
||||
{}
|
||||
|
||||
|
||||
@ -244,8 +228,7 @@ Foam::regionModels::regionModel::regionModel
|
||||
regionMeshPtr_(NULL),
|
||||
coeffs_(subOrEmptyDict(modelName + "Coeffs")),
|
||||
primaryPatchIDs_(),
|
||||
intCoupledPatchIDs_(),
|
||||
mappedPatches_()
|
||||
intCoupledPatchIDs_()
|
||||
{
|
||||
if (active_)
|
||||
{
|
||||
@ -290,8 +273,7 @@ Foam::regionModels::regionModel::regionModel
|
||||
regionMeshPtr_(NULL),
|
||||
coeffs_(dict.subOrEmptyDict(modelName + "Coeffs")),
|
||||
primaryPatchIDs_(),
|
||||
intCoupledPatchIDs_(),
|
||||
mappedPatches_()
|
||||
intCoupledPatchIDs_()
|
||||
{
|
||||
if (active_)
|
||||
{
|
||||
|
||||
@ -117,9 +117,6 @@ protected:
|
||||
//- List of patch IDs internally coupled with the primary region
|
||||
labelList intCoupledPatchIDs_;
|
||||
|
||||
//- List of patch map info
|
||||
PtrList<mappedPatchBase> mappedPatches_;
|
||||
|
||||
|
||||
// Protected member functions
|
||||
|
||||
@ -212,13 +209,29 @@ public:
|
||||
// primary region
|
||||
inline const labelList& intCoupledPatchIDs() const;
|
||||
|
||||
//- Return the list of patch map info
|
||||
inline const PtrList<mappedPatchBase>& mappedPatches() const;
|
||||
|
||||
//- Return region ID corresponding to primaryPatchID
|
||||
inline label regionPatchID(const label primaryPatchID) const;
|
||||
|
||||
|
||||
// Helper
|
||||
|
||||
//- Convert a local region field to the primary region
|
||||
template<class Type>
|
||||
void toPrimary
|
||||
(
|
||||
const label regionPatchI,
|
||||
List<Type>& regionField
|
||||
) const;
|
||||
|
||||
//- Convert a primary region field to the local region
|
||||
template<class Type>
|
||||
void toRegion
|
||||
(
|
||||
const label regionPatchI,
|
||||
List<Type>& primaryFieldField
|
||||
) const;
|
||||
|
||||
|
||||
// Evolution
|
||||
|
||||
//- Pre-evolve region
|
||||
@ -249,6 +262,12 @@ public:
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
#include "regionModelTemplates.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -132,13 +132,6 @@ Foam::regionModels::regionModel::intCoupledPatchIDs() const
|
||||
}
|
||||
|
||||
|
||||
inline const Foam::PtrList<Foam::mappedPatchBase>&
|
||||
Foam::regionModels::regionModel::mappedPatches() const
|
||||
{
|
||||
return mappedPatches_;
|
||||
}
|
||||
|
||||
|
||||
inline Foam::label Foam::regionModels::regionModel::regionPatchID
|
||||
(
|
||||
const label primaryPatchID
|
||||
|
||||
@ -158,11 +158,9 @@ void alphatFilmWallFunctionFvPatchScalarField::updateCoeffs()
|
||||
|
||||
const label filmPatchI = filmModel.regionPatchID(patchI);
|
||||
|
||||
const mappedPatchBase& filmMap = filmModel.mappedPatches()[filmPatchI];
|
||||
|
||||
tmp<volScalarField> mDotFilm(filmModel.primaryMassTrans());
|
||||
scalarField mDotFilmp = mDotFilm().boundaryField()[filmPatchI];
|
||||
filmMap.distribute(mDotFilmp);
|
||||
filmModel.toPrimary(filmPatchI, mDotFilmp);
|
||||
|
||||
// Retrieve RAS turbulence model
|
||||
const RASModel& rasModel = db().lookupObject<RASModel>("RASProperties");
|
||||
|
||||
@ -70,11 +70,9 @@ tmp<scalarField> mutkFilmWallFunctionFvPatchScalarField::calcUTau
|
||||
|
||||
const label filmPatchI = filmModel.regionPatchID(patchI);
|
||||
|
||||
const mappedPatchBase& filmMap = filmModel.mappedPatches()[filmPatchI];
|
||||
|
||||
tmp<volScalarField> mDotFilm(filmModel.primaryMassTrans());
|
||||
scalarField mDotFilmp = mDotFilm().boundaryField()[filmPatchI];
|
||||
filmMap.distribute(mDotFilmp);
|
||||
filmModel.toPrimary(filmPatchI, mDotFilmp);
|
||||
|
||||
|
||||
// Retrieve RAS turbulence model
|
||||
|
||||
@ -705,12 +705,11 @@ tmp<DimensionedField<scalar, volMesh> > thermoSingleLayer::Srho() const
|
||||
forAll(intCoupledPatchIDs(), i)
|
||||
{
|
||||
const label filmPatchI = intCoupledPatchIDs()[i];
|
||||
const mappedPatchBase& filmMap = mappedPatches_[filmPatchI];
|
||||
|
||||
scalarField patchMass =
|
||||
primaryMassPCTrans_.boundaryField()[filmPatchI];
|
||||
|
||||
filmMap.distribute(patchMass);
|
||||
toPrimary(filmPatchI, patchMass);
|
||||
|
||||
const label primaryPatchI = primaryPatchIDs()[i];
|
||||
const unallocLabelList& cells =
|
||||
@ -761,12 +760,11 @@ tmp<DimensionedField<scalar, volMesh> > thermoSingleLayer::Srho
|
||||
forAll(intCoupledPatchIDs_, i)
|
||||
{
|
||||
const label filmPatchI = intCoupledPatchIDs_[i];
|
||||
const mappedPatchBase& filmMap = mappedPatches_[filmPatchI];
|
||||
|
||||
scalarField patchMass =
|
||||
primaryMassPCTrans_.boundaryField()[filmPatchI];
|
||||
|
||||
filmMap.distribute(patchMass);
|
||||
toPrimary(filmPatchI, patchMass);
|
||||
|
||||
const label primaryPatchI = primaryPatchIDs()[i];
|
||||
const unallocLabelList& cells =
|
||||
@ -812,12 +810,11 @@ tmp<DimensionedField<scalar, volMesh> > thermoSingleLayer::Sh() const
|
||||
forAll(intCoupledPatchIDs_, i)
|
||||
{
|
||||
const label filmPatchI = intCoupledPatchIDs_[i];
|
||||
const mappedPatchBase& filmMap = mappedPatches_[filmPatchI];
|
||||
|
||||
scalarField patchEnergy =
|
||||
primaryEnergyPCTrans_.boundaryField()[filmPatchI];
|
||||
|
||||
filmMap.distribute(patchEnergy);
|
||||
toPrimary(filmPatchI, patchEnergy);
|
||||
|
||||
const label primaryPatchI = primaryPatchIDs()[i];
|
||||
const unallocLabelList& cells =
|
||||
|
||||
Reference in New Issue
Block a user