ENH: partial restructure of film injection models

This commit is contained in:
andy
2010-09-17 13:22:40 +01:00
parent 617e030a5e
commit 255aecb58b
9 changed files with 111 additions and 15 deletions

View File

@ -72,12 +72,14 @@ Foam::surfaceFilmModels::cloudInjection::~cloudInjection()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::surfaceFilmModels::cloudInjection::correct
void Foam::surfaceFilmModels::cloudInjection::inject
(
scalarField& massToInject,
scalarField& diameterToInject
)
{
correctDetachedFilm(massToInject);
const scalar pi = constant::mathematical::pi;
const scalarField& rhoFilm = owner().rho();

View File

@ -101,8 +101,8 @@ public:
// Evolution
//- Correct
virtual void correct
//- Inject
virtual void inject
(
scalarField& massToInject,
scalarField& diameterToInject

View File

@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/
#include "injectionModel.H"
#include "kinematicSingleLayer.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -37,6 +38,35 @@ namespace Foam
}
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
void Foam::surfaceFilmModels::injectionModel::correctDetachedFilm
(
scalarField& mass
) const
{
mass = 0.0;
const kinematicSingleLayer& film =
refCast<const kinematicSingleLayer>(owner_);
const scalarField gNorm = film.gNorm();
const scalarField& delta = film.delta();
const scalarField& rho = film.rho();
const scalarField& magSf = film.magSf();
const scalarField& massPhaseChange = film.massPhaseChangeForPrimary();
forAll(gNorm, i)
{
if (gNorm[i] > SMALL)
{
const scalar ddelta = max(0.0, delta[i] - deltaStable_);
mass[i] = max(0.0, ddelta*rho[i]*magSf[i] - massPhaseChange[i]);
}
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::surfaceFilmModels::injectionModel::injectionModel
@ -45,7 +75,8 @@ Foam::surfaceFilmModels::injectionModel::injectionModel
)
:
owner_(owner),
coeffs_(dictionary::null)
coeffs_(dictionary::null),
injectedMass_(0.0)
{}
@ -57,7 +88,9 @@ Foam::surfaceFilmModels::injectionModel::injectionModel
)
:
owner_(owner),
coeffs_(dict.subDict(type + "Coeffs"))
coeffs_(dict.subDict(type + "Coeffs")),
injectedMass_(0.0),
deltaStable_(readScalar(coeffs_.lookup("deltaStable")))
{}
@ -67,4 +100,27 @@ Foam::surfaceFilmModels::injectionModel::~injectionModel()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::surfaceFilmModels::injectionModel::correct
(
volScalarField& massToInject,
volScalarField& diameterToInject
)
{
inject(massToInject, diameterToInject);
massToInject.correctBoundaryConditions();
diameterToInject.correctBoundaryConditions();
injectedMass_ += sum(massToInject.internalField());
}
void Foam::surfaceFilmModels::injectionModel::info() const
{
Info<< indent << "injected mass = "
<< returnReduce<scalar>(injectedMass_, sumOp<scalar>()) << nl;
}
// ************************************************************************* //

View File

@ -82,6 +82,18 @@ protected:
//- Model coefficients dictionary
dictionary coeffs_;
//- Cumulative injected mass
scalar injectedMass_;
//- Stable film thickness - film cannot detach until reached
scalar deltaStable_;
// Protected Member Functions
//- Correct film detached mass
void correctDetachedFilm(scalarField& mass) const;
public:
@ -141,15 +153,31 @@ public:
//- Return the model coefficients dictionary
inline const dictionary& coeffs() const;
//- Return access to the injected mass [kg]
inline scalar injectedMass() const;
// Evolution
//- Correct
//- Correct - wrapper around inject(...)
virtual void correct
(
volScalarField& massToInject,
volScalarField& diameterToInject
);
//- Inject
virtual void inject
(
scalarField& massToInject,
scalarField& diameterToInject
) = 0;
// Input/output
//- Output model statistics
virtual void info() const;
};

View File

@ -41,4 +41,11 @@ Foam::surfaceFilmModels::injectionModel::coeffs() const
}
inline Foam::scalar Foam::surfaceFilmModels::injectionModel::injectedMass()
const
{
return injectedMass_;
}
// ************************************************************************* //

View File

@ -58,7 +58,7 @@ Foam::surfaceFilmModels::noInjection::~noInjection()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::surfaceFilmModels::noInjection::correct
void Foam::surfaceFilmModels::noInjection::inject
(
scalarField& massToInject,
scalarField& diameterToInject
@ -66,6 +66,7 @@ void Foam::surfaceFilmModels::noInjection::correct
{
// no mass injected
massToInject = 0.0;
diameterToInject = -1.0;
}

View File

@ -83,8 +83,8 @@ public:
// Evolution
//- Correct
virtual void correct
//- Inject
virtual void inject
(
scalarField& massToInject,
scalarField& diameterToInject

View File

@ -58,13 +58,15 @@ Foam::surfaceFilmModels::removeInjection::~removeInjection()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::surfaceFilmModels::removeInjection::correct
void Foam::surfaceFilmModels::removeInjection::inject
(
scalarField&,
scalarField&
scalarField& massToInject,
scalarField& diameterToInject
)
{
// do nothing - all mass available to be removed
// all mass available to be removed
correctDetachedFilm(massToInject);
diameterToInject = -1;
}

View File

@ -83,8 +83,8 @@ public:
// Evolution
//- Correct
virtual void correct
//- Inject
virtual void inject
(
scalarField& massToInject,
scalarField& diameterToInject