diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C index 8dcc59d9850b6c67ee7d978567103ef755497492..47f84119005744f43030d1ff5d7723da92c85b6b 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C @@ -339,6 +339,8 @@ void curvatureSeparation::correct diameterToInject = separated*delta; availableMass -= separated*availableMass; + addToInjectedMass(sum(separated*availableMass)); + if (debug && mesh.time().outputTime()) { volScalarField volFnet @@ -358,6 +360,8 @@ void curvatureSeparation::correct volFnet.correctBoundaryConditions(); volFnet.write(); } + + injectionModel::correct(); } diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C index d970b1a34741802c8feeccb75b1bc7895346699b..905477378cad342c7c6faec04bf2ac9be0a784dc 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C @@ -137,6 +137,8 @@ void drippingInjection::correct // Retrieve new particle diameter sample diam = parcelDistribution_->sample(); + + addToInjectedMass(massDrip[cellI]); } else { @@ -151,6 +153,8 @@ void drippingInjection::correct diameterToInject[cellI] = 0.0; } } + + injectionModel::correct(); } diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C index 54fe38147e763e812de787958e6ca10170e7b185..ceac59285e052da058f11f33450192614d271f11 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C @@ -39,11 +39,20 @@ namespace surfaceFilmModels defineTypeNameAndDebug(injectionModel, 0); defineRunTimeSelectionTable(injectionModel, dictionary); +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +void injectionModel::addToInjectedMass(const scalar dMass) +{ + injectedMass_ += dMass; +} + + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // injectionModel::injectionModel(surfaceFilmModel& owner) : - filmSubModelBase(owner) + filmSubModelBase(owner), + injectedMass_(0.0) {} @@ -54,7 +63,8 @@ injectionModel::injectionModel const dictionary& dict ) : - filmSubModelBase(owner, dict, typeName, modelType) + filmSubModelBase(owner, dict, typeName, modelType), + injectedMass_(0.0) {} @@ -64,6 +74,27 @@ injectionModel::~injectionModel() {} +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void injectionModel::correct() +{ + if (outputTime()) + { + scalar injectedMass0 = getModelProperty<scalar>("injectedMass"); + injectedMass0 += returnReduce(injectedMass_, sumOp<scalar>()); + setModelProperty<scalar>("injectedMass", injectedMass0); + injectedMass_ = 0.0; + } +} + + +scalar injectionModel::injectedMassTotal() const +{ + scalar injectedMass0 = getModelProperty<scalar>("injectedMass"); + return injectedMass0 + returnReduce(injectedMass_, sumOp<scalar>()); +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace surfaceFilmModels diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H index ea47866b0bc0731dbe7c5c39d93609b22ef611e8..bd7850894d5f5ee2d26f53cc8d174b3ec9c78850 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H @@ -59,6 +59,12 @@ class injectionModel { private: + // Private data + + //- Injected mass + scalar injectedMass_; + + // Private Member Functions //- Disallow default bitwise copy construct @@ -68,6 +74,17 @@ private: void operator=(const injectionModel&); +protected: + + // Protected Member Functions + + //- Add to injected mass + void addToInjectedMass(const scalar dMass); + + //- Correct + void correct(); + + public: //- Runtime type information @@ -128,6 +145,9 @@ public: scalarField& massToInject, scalarField& diameterToInject ) = 0; + + //- Return the total mass injected + scalar injectedMassTotal() const; }; diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C index cd72677ae6bb4e32022e0d74b8b294b112ad09a7..667fe2d8100dd36ba6056f1845e3aa751c682ed0 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C @@ -40,8 +40,7 @@ injectionModelList::injectionModelList(surfaceFilmModel& owner) : PtrList<injectionModel>(), owner_(owner), - dict_(dictionary::null), - injectedMassTotal_(0.0) + dict_(dictionary::null) {} @@ -53,8 +52,7 @@ injectionModelList::injectionModelList : PtrList<injectionModel>(), owner_(owner), - dict_(dict), - injectedMassTotal_(0.0) + dict_(dict) { const wordList activeModels(dict.lookup("injectionModels")); @@ -109,9 +107,6 @@ void injectionModelList::correct im.correct(availableMass, massToInject, diameterToInject); } - injectedMassTotal_ += sum(massToInject.internalField()); - - // Push values to boundaries ready for transfer to the primary region massToInject.correctBoundaryConditions(); diameterToInject.correctBoundaryConditions(); @@ -120,8 +115,14 @@ void injectionModelList::correct void injectionModelList::info(Ostream& os) const { - os << indent << "injected mass = " - << returnReduce<scalar>(injectedMassTotal_, sumOp<scalar>()) << nl; + scalar injectedMass = 0.0; + forAll(*this, i) + { + const injectionModel& im = operator[](i); + injectedMass += im.injectedMassTotal(); + } + + os << indent << "injected mass = " << injectedMass << nl; } diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H index be62ba45b8b0f7c8cff5acdbb98f73170010dec0..c58f85a65328a5c52c613e600929ba8d0f607381 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H @@ -65,9 +65,6 @@ private: //- Dictionary dictionary dict_; - //- Cumulative mass injected total - scalar injectedMassTotal_; - // Private Member Functions diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C index 500962636aaf0d6f7e07f7b7f3fbe8914226827f..fe6b5730b34e29548cc4f67afef6e7f36099aeb5 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C @@ -103,8 +103,12 @@ void removeInjection::correct scalar dMass = ddelta*rho[cellI]*magSf[cellI]; massToInject[cellI] += dMass; availableMass[cellI] -= dMass; + + addToInjectedMass(dMass); } } + + injectionModel::correct(); } diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C index da6c0236345dfadb2c3fc6b85321efe114f9494d..ffc66761be3d6bdb8d0bd17815cf1ce778f5b66e 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C @@ -94,6 +94,14 @@ void phaseChangeModel::correct availableMass -= dMass; dMass.correctBoundaryConditions(); + + if (outputTime()) + { + scalar phaseChangeMass = getModelProperty<scalar>("phaseChangeMass"); + phaseChangeMass += returnReduce(totalMassPC_, sumOp<scalar>()); + setModelProperty<scalar>("phaseChangeMass", phaseChangeMass); + totalMassPC_ = 0.0; + } } @@ -103,8 +111,10 @@ void phaseChangeModel::info(Ostream& os) const returnReduce(latestMassPC_, sumOp<scalar>()) /owner_.time().deltaTValue(); - os << indent << "mass phase change = " - << returnReduce(totalMassPC_, sumOp<scalar>()) << nl + scalar phaseChangeMass = getModelProperty<scalar>("phaseChangeMass"); + phaseChangeMass += returnReduce(totalMassPC_, sumOp<scalar>()); + + os << indent << "mass phase change = " << phaseChangeMass << nl << indent << "vapourisation rate = " << massPCRate << nl; }