ENH: lagrangian/intermediate - replaced single injector model by injector list

This commit is contained in:
andy
2012-05-31 14:04:16 +01:00
parent b851d15651
commit 3a036a2114
3 changed files with 43 additions and 47 deletions

View File

@ -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<CloudType>::setModels()
).ptr()
);
injectionModel_.reset
(
InjectionModel<KinematicCloud<CloudType> >::New
(
subModelProperties_,
*this
).ptr()
);
patchInteractionModel_.reset
(
PatchInteractionModel<KinematicCloud<CloudType> >::New
@ -193,7 +184,8 @@ void Foam::KinematicCloud<CloudType>::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<CloudType>::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<CloudType>::cloudReset(KinematicCloud<CloudType>& 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<CloudType>::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<CloudType>::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<CloudType>::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<CloudType>::info()
<< " Rotational kinetic energy = "
<< rotationalKineticEnergy << nl;
this->injection().info(Info);
injectors_.info(Info);
this->surfaceFilm().info(Info);
this->patchInteraction().info(Info);
}

View File

@ -73,10 +73,10 @@ namespace Foam
// Forward declaration of classes
template<class CloudType>
class DispersionModel;
class InjectionModelList;
template<class CloudType>
class InjectionModel;
class DispersionModel;
template<class CloudType>
class PatchInteractionModel;
@ -192,14 +192,13 @@ protected:
// References to the cloud sub-models
//- Injector models
InjectionModelList<KinematicCloud<CloudType> > injectors_;
//- Dispersion model
autoPtr<DispersionModel<KinematicCloud<CloudType> > >
dispersionModel_;
//- Injector model
autoPtr<InjectionModel<KinematicCloud<CloudType> > >
injectionModel_;
//- Patch interaction model
autoPtr<PatchInteractionModel<KinematicCloud<CloudType> > >
patchInteractionModel_;
@ -393,6 +392,14 @@ public:
// Sub-models
//- Return const access to the injection model
inline const InjectionModelList<KinematicCloud<CloudType> >&
injectors() const;
//- Return reference to the injection model
inline InjectionModelList<KinematicCloud<CloudType> >&
injectors();
//- Return const-access to the dispersion model
inline const DispersionModel<KinematicCloud<CloudType> >&
dispersion() const;
@ -401,14 +408,6 @@ public:
inline DispersionModel<KinematicCloud<CloudType> >&
dispersion();
//- Return const access to the injection model
inline const InjectionModel<KinematicCloud<CloudType> >&
injection() const;
//- Return reference to the injection model
inline InjectionModel<KinematicCloud<CloudType> >&
injection();
//- Return const-access to the patch interaction model
inline const PatchInteractionModel<KinematicCloud<CloudType> >&
patchInteraction() const;

View File

@ -155,6 +155,22 @@ Foam::KinematicCloud<CloudType>::functions()
}
template<class CloudType>
inline const Foam::InjectionModelList<Foam::KinematicCloud<CloudType> >&
Foam::KinematicCloud<CloudType>::injectors() const
{
return injectors_;
}
template<class CloudType>
inline Foam::InjectionModelList<Foam::KinematicCloud<CloudType> >&
Foam::KinematicCloud<CloudType>::injectors()
{
return injectors_;
}
template<class CloudType>
inline const Foam::DispersionModel<Foam::KinematicCloud<CloudType> >&
Foam::KinematicCloud<CloudType>::dispersion() const
@ -171,14 +187,6 @@ Foam::KinematicCloud<CloudType>::dispersion()
}
template<class CloudType>
inline const Foam::InjectionModel<Foam::KinematicCloud<CloudType> >&
Foam::KinematicCloud<CloudType>::injection() const
{
return injectionModel_;
}
template<class CloudType>
inline const Foam::PatchInteractionModel<Foam::KinematicCloud<CloudType> >&
Foam::KinematicCloud<CloudType>::patchInteraction() const
@ -195,14 +203,6 @@ Foam::KinematicCloud<CloudType>::patchInteraction()
}
template<class CloudType>
inline Foam::InjectionModel<Foam::KinematicCloud<CloudType> >&
Foam::KinematicCloud<CloudType>::injection()
{
return injectionModel_();
}
template<class CloudType>
inline const Foam::SurfaceFilmModel<Foam::KinematicCloud<CloudType> >&
Foam::KinematicCloud<CloudType>::surfaceFilm() const