diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index e65329296b..b43c3fc690 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -28,8 +28,8 @@ License #include "interpolation.H" #include "subCycleTime.H" +#include "InjectionModelList.H" #include "DispersionModel.H" -#include "InjectionModel.H" #include "PatchInteractionModel.H" #include "SurfaceFilmModel.H" @@ -47,15 +47,6 @@ void Foam::KinematicCloud::setModels() ).ptr() ); - injectionModel_.reset - ( - InjectionModel >::New - ( - subModelProperties_, - *this - ).ptr() - ); - patchInteractionModel_.reset ( PatchInteractionModel >::New @@ -193,7 +184,8 @@ void Foam::KinematicCloud::evolveCloud(TrackData& td) preInjectionSize = this->size(); } - this->injection().inject(td); + + injectors_.inject(td); // Assume that motion will update the cellOccupancy as necessary @@ -204,7 +196,7 @@ void Foam::KinematicCloud::evolveCloud(TrackData& td) { // this->surfaceFilm().injectSteadyState(td); - this->injection().injectSteadyState(td, solution_.trackTime()); + injectors_.injectSteadyState(td, solution_.trackTime()); td.part() = TrackData::tpLinearTrack; CloudType::move(td, solution_.trackTime()); @@ -253,8 +245,9 @@ void Foam::KinematicCloud::cloudReset(KinematicCloud& c) functions_.transfer(c.functions_); + injectors_.transfer(c.injectors_); + dispersionModel_.reset(c.dispersionModel_.ptr()); - injectionModel_.reset(c.injectionModel_.ptr()); patchInteractionModel_.reset(c.patchInteractionModel_.ptr()); surfaceFilmModel_.reset(c.surfaceFilmModel_.ptr()); @@ -338,8 +331,12 @@ Foam::KinematicCloud::KinematicCloud particleProperties_.subOrEmptyDict("cloudFunctions"), solution_.active() ), + injectors_ + ( + subModelProperties_.subOrEmptyDict("injectionModels"), + *this + ), dispersionModel_(NULL), - injectionModel_(NULL), patchInteractionModel_(NULL), surfaceFilmModel_(NULL), UIntegrator_(NULL), @@ -418,8 +415,8 @@ Foam::KinematicCloud::KinematicCloud pAmbient_(c.pAmbient_), forces_(c.forces_), functions_(c.functions_), + injectors_(c.injectors_), dispersionModel_(c.dispersionModel_->clone()), - injectionModel_(c.injectionModel_->clone()), patchInteractionModel_(c.patchInteractionModel_->clone()), surfaceFilmModel_(c.surfaceFilmModel_->clone()), UIntegrator_(c.UIntegrator_->clone()), @@ -507,8 +504,8 @@ Foam::KinematicCloud::KinematicCloud pAmbient_(c.pAmbient_), forces_(*this, mesh), functions_(*this), + injectors_(*this), dispersionModel_(NULL), - injectionModel_(NULL), patchInteractionModel_(NULL), surfaceFilmModel_(NULL), UIntegrator_(NULL), @@ -710,7 +707,7 @@ void Foam::KinematicCloud::info() << " Rotational kinetic energy = " << rotationalKineticEnergy << nl; - this->injection().info(Info); + injectors_.info(Info); this->surfaceFilm().info(Info); this->patchInteraction().info(Info); } diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index 91a261f4df..4cd80923da 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -73,10 +73,10 @@ namespace Foam // Forward declaration of classes template -class DispersionModel; +class InjectionModelList; template -class InjectionModel; +class DispersionModel; template class PatchInteractionModel; @@ -192,14 +192,13 @@ protected: // References to the cloud sub-models + //- Injector models + InjectionModelList > injectors_; + //- Dispersion model autoPtr > > dispersionModel_; - //- Injector model - autoPtr > > - injectionModel_; - //- Patch interaction model autoPtr > > patchInteractionModel_; @@ -393,6 +392,14 @@ public: // Sub-models + //- Return const access to the injection model + inline const InjectionModelList >& + injectors() const; + + //- Return reference to the injection model + inline InjectionModelList >& + injectors(); + //- Return const-access to the dispersion model inline const DispersionModel >& dispersion() const; @@ -401,14 +408,6 @@ public: inline DispersionModel >& dispersion(); - //- Return const access to the injection model - inline const InjectionModel >& - injection() const; - - //- Return reference to the injection model - inline InjectionModel >& - injection(); - //- Return const-access to the patch interaction model inline const PatchInteractionModel >& patchInteraction() const; diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H index c7db066187..106ff158a7 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -155,6 +155,22 @@ Foam::KinematicCloud::functions() } +template +inline const Foam::InjectionModelList >& +Foam::KinematicCloud::injectors() const +{ + return injectors_; +} + + +template +inline Foam::InjectionModelList >& +Foam::KinematicCloud::injectors() +{ + return injectors_; +} + + template inline const Foam::DispersionModel >& Foam::KinematicCloud::dispersion() const @@ -171,14 +187,6 @@ Foam::KinematicCloud::dispersion() } -template -inline const Foam::InjectionModel >& -Foam::KinematicCloud::injection() const -{ - return injectionModel_; -} - - template inline const Foam::PatchInteractionModel >& Foam::KinematicCloud::patchInteraction() const @@ -195,14 +203,6 @@ Foam::KinematicCloud::patchInteraction() } -template -inline Foam::InjectionModel >& -Foam::KinematicCloud::injection() -{ - return injectionModel_(); -} - - template inline const Foam::SurfaceFilmModel >& Foam::KinematicCloud::surfaceFilm() const