Skip to content
Snippets Groups Projects
Commit 255aecb5 authored by Andrew Heather's avatar Andrew Heather
Browse files

ENH: partial restructure of film injection models

parent 617e030a
Branches
Tags
No related merge requests found
Showing
with 111 additions and 15 deletions
...@@ -72,12 +72,14 @@ Foam::surfaceFilmModels::cloudInjection::~cloudInjection() ...@@ -72,12 +72,14 @@ Foam::surfaceFilmModels::cloudInjection::~cloudInjection()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::surfaceFilmModels::cloudInjection::correct void Foam::surfaceFilmModels::cloudInjection::inject
( (
scalarField& massToInject, scalarField& massToInject,
scalarField& diameterToInject scalarField& diameterToInject
) )
{ {
correctDetachedFilm(massToInject);
const scalar pi = constant::mathematical::pi; const scalar pi = constant::mathematical::pi;
const scalarField& rhoFilm = owner().rho(); const scalarField& rhoFilm = owner().rho();
......
...@@ -101,8 +101,8 @@ public: ...@@ -101,8 +101,8 @@ public:
// Evolution // Evolution
//- Correct //- Inject
virtual void correct virtual void inject
( (
scalarField& massToInject, scalarField& massToInject,
scalarField& diameterToInject scalarField& diameterToInject
......
...@@ -24,6 +24,7 @@ License ...@@ -24,6 +24,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "injectionModel.H" #include "injectionModel.H"
#include "kinematicSingleLayer.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
...@@ -37,6 +38,35 @@ namespace Foam ...@@ -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 * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::surfaceFilmModels::injectionModel::injectionModel Foam::surfaceFilmModels::injectionModel::injectionModel
...@@ -45,7 +75,8 @@ Foam::surfaceFilmModels::injectionModel::injectionModel ...@@ -45,7 +75,8 @@ Foam::surfaceFilmModels::injectionModel::injectionModel
) )
: :
owner_(owner), owner_(owner),
coeffs_(dictionary::null) coeffs_(dictionary::null),
injectedMass_(0.0)
{} {}
...@@ -57,7 +88,9 @@ Foam::surfaceFilmModels::injectionModel::injectionModel ...@@ -57,7 +88,9 @@ Foam::surfaceFilmModels::injectionModel::injectionModel
) )
: :
owner_(owner), 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() ...@@ -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;
}
// ************************************************************************* // // ************************************************************************* //
...@@ -82,6 +82,18 @@ protected: ...@@ -82,6 +82,18 @@ protected:
//- Model coefficients dictionary //- Model coefficients dictionary
dictionary coeffs_; 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: public:
...@@ -141,15 +153,31 @@ public: ...@@ -141,15 +153,31 @@ public:
//- Return the model coefficients dictionary //- Return the model coefficients dictionary
inline const dictionary& coeffs() const; inline const dictionary& coeffs() const;
//- Return access to the injected mass [kg]
inline scalar injectedMass() const;
// Evolution // Evolution
//- Correct //- Correct - wrapper around inject(...)
virtual void correct virtual void correct
(
volScalarField& massToInject,
volScalarField& diameterToInject
);
//- Inject
virtual void inject
( (
scalarField& massToInject, scalarField& massToInject,
scalarField& diameterToInject scalarField& diameterToInject
) = 0; ) = 0;
// Input/output
//- Output model statistics
virtual void info() const;
}; };
......
...@@ -41,4 +41,11 @@ Foam::surfaceFilmModels::injectionModel::coeffs() const ...@@ -41,4 +41,11 @@ Foam::surfaceFilmModels::injectionModel::coeffs() const
} }
inline Foam::scalar Foam::surfaceFilmModels::injectionModel::injectedMass()
const
{
return injectedMass_;
}
// ************************************************************************* // // ************************************************************************* //
...@@ -58,7 +58,7 @@ Foam::surfaceFilmModels::noInjection::~noInjection() ...@@ -58,7 +58,7 @@ Foam::surfaceFilmModels::noInjection::~noInjection()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::surfaceFilmModels::noInjection::correct void Foam::surfaceFilmModels::noInjection::inject
( (
scalarField& massToInject, scalarField& massToInject,
scalarField& diameterToInject scalarField& diameterToInject
...@@ -66,6 +66,7 @@ void Foam::surfaceFilmModels::noInjection::correct ...@@ -66,6 +66,7 @@ void Foam::surfaceFilmModels::noInjection::correct
{ {
// no mass injected // no mass injected
massToInject = 0.0; massToInject = 0.0;
diameterToInject = -1.0;
} }
......
...@@ -83,8 +83,8 @@ public: ...@@ -83,8 +83,8 @@ public:
// Evolution // Evolution
//- Correct //- Inject
virtual void correct virtual void inject
( (
scalarField& massToInject, scalarField& massToInject,
scalarField& diameterToInject scalarField& diameterToInject
......
...@@ -58,13 +58,15 @@ Foam::surfaceFilmModels::removeInjection::~removeInjection() ...@@ -58,13 +58,15 @@ Foam::surfaceFilmModels::removeInjection::~removeInjection()
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
void Foam::surfaceFilmModels::removeInjection::correct void Foam::surfaceFilmModels::removeInjection::inject
( (
scalarField&, scalarField& massToInject,
scalarField& scalarField& diameterToInject
) )
{ {
// do nothing - all mass available to be removed // all mass available to be removed
correctDetachedFilm(massToInject);
diameterToInject = -1;
} }
......
...@@ -83,8 +83,8 @@ public: ...@@ -83,8 +83,8 @@ public:
// Evolution // Evolution
//- Correct //- Inject
virtual void correct virtual void inject
( (
scalarField& massToInject, scalarField& massToInject,
scalarField& diameterToInject scalarField& diameterToInject
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment