diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.C b/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.C index a1993a7e33..0d9db92f1f 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.C +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.C @@ -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(); diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.H b/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.H index 01c9f5eedb..53c42769d3 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.H +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.H @@ -101,8 +101,8 @@ public: // Evolution - //- Correct - virtual void correct + //- Inject + virtual void inject ( scalarField& massToInject, scalarField& diameterToInject diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C b/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C index fe3e0d9e77..5e5d7e4077 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C @@ -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(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(injectedMass_, sumOp()) << nl; +} + + // ************************************************************************* // diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H b/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H index 539184c745..ca5b265101 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H @@ -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; }; diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelI.H b/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelI.H index 2f3bf02ef1..13455cee7b 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelI.H +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelI.H @@ -41,4 +41,11 @@ Foam::surfaceFilmModels::injectionModel::coeffs() const } +inline Foam::scalar Foam::surfaceFilmModels::injectionModel::injectedMass() +const +{ + return injectedMass_; +} + + // ************************************************************************* // diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C b/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C index f696f1a1bc..da8ee087f6 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C @@ -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; } diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.H b/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.H index 7b1446ebab..405b2ba085 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.H +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.H @@ -83,8 +83,8 @@ public: // Evolution - //- Correct - virtual void correct + //- Inject + virtual void inject ( scalarField& massToInject, scalarField& diameterToInject diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C b/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C index 97d9bb00aa..b7cf4d5952 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C @@ -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; } diff --git a/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H b/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H index 9c651560f8..c4b678e74c 100644 --- a/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H +++ b/src/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H @@ -83,8 +83,8 @@ public: // Evolution - //- Correct - virtual void correct + //- Inject + virtual void inject ( scalarField& massToInject, scalarField& diameterToInject