diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files index 2a1ea126f0..a9577d66cf 100644 --- a/src/lagrangian/intermediate/Make/files +++ b/src/lagrangian/intermediate/Make/files @@ -7,10 +7,6 @@ BASECLOUDS=$(CLOUDS)/baseClasses DERIVEDCLOUDS=$(CLOUDS)/derived -/* Parcels */ -$(BASEPARCELS)/reactingParcel/reactingParcel.C - - /* Cloud base classes */ $(BASECLOUDS)/kinematicCloud/kinematicCloud.C $(BASECLOUDS)/thermoCloud/thermoCloud.C @@ -20,28 +16,24 @@ $(BASECLOUDS)/reactingMultiphaseCloud/reactingMultiphaseCloud.C /* kinematic parcel sub-models */ KINEMATICPARCEL=$(DERIVEDPARCELS)/basicKinematicParcel -$(KINEMATICPARCEL)/basicKinematicParcel.C $(KINEMATICPARCEL)/defineBasicKinematicParcel.C $(KINEMATICPARCEL)/makeBasicKinematicParcelSubmodels.C /* thermo parcel sub-models */ THERMOPARCEL=$(DERIVEDPARCELS)/basicThermoParcel -$(THERMOPARCEL)/basicThermoParcel.C $(THERMOPARCEL)/defineBasicThermoParcel.C $(THERMOPARCEL)/makeBasicThermoParcelSubmodels.C /* reacting parcel sub-models */ REACTINGPARCEL=$(DERIVEDPARCELS)/basicReactingParcel -$(REACTINGPARCEL)/basicReactingParcel.C $(REACTINGPARCEL)/defineBasicReactingParcel.C $(REACTINGPARCEL)/makeBasicReactingParcelSubmodels.C /* reacting multiphase parcel sub-models */ REACTINGMPPARCEL=$(DERIVEDPARCELS)/basicReactingMultiphaseParcel -$(REACTINGMPPARCEL)/basicReactingMultiphaseParcel.C $(REACTINGMPPARCEL)/defineBasicReactingMultiphaseParcel.C $(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelSubmodels.C diff --git a/src/lagrangian/intermediate/Make/files.old b/src/lagrangian/intermediate/Make/files.old new file mode 100644 index 0000000000..b5ccca4ed2 --- /dev/null +++ b/src/lagrangian/intermediate/Make/files.old @@ -0,0 +1,70 @@ +PARCELS=parcels +BASEPARCELS=$(PARCELS)/baseClasses +DERIVEDPARCELS=$(PARCELS)/derived + + +CLOUDS=clouds +BASECLOUDS=$(CLOUDS)/baseClasses +DERIVEDCLOUDS=$(CLOUDS)/derived + + +/* Parcels */ +$(BASEPARCELS)/reactingParcel/reactingParcel.C + + +/* Cloud base classes */ +$(BASECLOUDS)/kinematicCloud/kinematicCloud.C +$(BASECLOUDS)/thermoCloud/thermoCloud.C +$(BASECLOUDS)/reactingCloud/reactingCloud.C + + +/* kinematic parcel sub-models */ +KINEMATICPARCEL=$(DERIVEDPARCELS)/basicKinematicParcel +$(KINEMATICPARCEL)/basicKinematicParcel.C +$(KINEMATICPARCEL)/defineBasicKinematicParcel.C +$(KINEMATICPARCEL)/makeBasicKinematicParcelSubmodels.C + +/* thermo parcel sub-models */ +THERMOPARCEL=$(DERIVEDPARCELS)/basicThermoParcel +$(THERMOPARCEL)/basicThermoParcel.C +$(THERMOPARCEL)/defineBasicThermoParcel.C +$(THERMOPARCEL)/makeBasicThermoParcelSubmodels.C + +/* reacting parcel sub-models */ +REACTINGPARCEL=$(DERIVEDPARCELS)/basicReactingParcel +$(REACTINGPARCEL)/basicReactingParcel.C +$(REACTINGPARCEL)/defineBasicReactingParcel.C +$(REACTINGPARCEL)/makeBasicReactingParcelSubmodels.C + + +/* bolt-on models */ + +submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionData.C + +KINEMATICINJECTION=submodels/Kinematic/InjectionModel +$(KINEMATICINJECTION)/KinematicLookupTableInjection/kinematicParcelInjectionData.C +$(KINEMATICINJECTION)/KinematicLookupTableInjection/kinematicParcelInjectionDataIO.C +$(KINEMATICINJECTION)/KinematicLookupTableInjection/kinematicParcelInjectionDataIOList.C + +THERMOINJECTION=submodels/Thermodynamic/InjectionModel +$(THERMOINJECTION)/ThermoLookupTableInjection/thermoParcelInjectionData.C +$(THERMOINJECTION)/ThermoLookupTableInjection/thermoParcelInjectionDataIO.C +$(THERMOINJECTION)/ThermoLookupTableInjection/thermoParcelInjectionDataIOList.C + +REACTINGINJECTION=submodels/Reacting/InjectionModel +$(REACTINGINJECTION)/ReactingLookupTableInjection/reactingParcelInjectionData.C +$(REACTINGINJECTION)/ReactingLookupTableInjection/reactingParcelInjectionDataIO.C +$(REACTINGINJECTION)/ReactingLookupTableInjection/reactingParcelInjectionDataIOList.C + + +/* integration schemes */ +IntegrationScheme/makeIntegrationSchemes.C + + +/* phase properties */ +phaseProperties/phaseProperties/phaseProperties.C +phaseProperties/phaseProperties/phasePropertiesIO.C +phaseProperties/phasePropertiesList/phasePropertiesList.C + + +LIB = $(FOAM_LIBBIN)/liblagrangianIntermediate diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index d48136443d..c087188b48 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -37,8 +37,8 @@ License // * * * * * * * * * * * * * * cloudSolution * * * * * * * * * * * * * * * * // -template -void Foam::KinematicCloud::cloudSolution::read() +template +void Foam::KinematicCloud::cloudSolution::read() { dict_.lookup("transient") >> transient_; dict_.lookup("coupled") >> coupled_; @@ -55,8 +55,8 @@ void Foam::KinematicCloud::cloudSolution::read() } -template -Foam::KinematicCloud::cloudSolution::cloudSolution +template +Foam::KinematicCloud::cloudSolution::cloudSolution ( const fvMesh& mesh, const dictionary& dict @@ -82,8 +82,8 @@ Foam::KinematicCloud::cloudSolution::cloudSolution } -template -Foam::KinematicCloud::cloudSolution::cloudSolution +template +Foam::KinematicCloud::cloudSolution::cloudSolution ( const cloudSolution& cs ) @@ -103,8 +103,8 @@ Foam::KinematicCloud::cloudSolution::cloudSolution {} -template -Foam::KinematicCloud::cloudSolution::cloudSolution +template +Foam::KinematicCloud::cloudSolution::cloudSolution ( const fvMesh& mesh ) @@ -124,13 +124,13 @@ Foam::KinematicCloud::cloudSolution::cloudSolution {} -template -Foam::KinematicCloud::cloudSolution::~cloudSolution() +template +Foam::KinematicCloud::cloudSolution::~cloudSolution() {} -template -Foam::scalar Foam::KinematicCloud::cloudSolution::relaxCoeff +template +Foam::scalar Foam::KinematicCloud::cloudSolution::relaxCoeff ( const word& fieldName ) const @@ -139,8 +139,8 @@ Foam::scalar Foam::KinematicCloud::cloudSolution::relaxCoeff } -template -bool Foam::KinematicCloud::cloudSolution::semiImplicit +template +bool Foam::KinematicCloud::cloudSolution::semiImplicit ( const word& fieldName ) const @@ -149,8 +149,8 @@ bool Foam::KinematicCloud::cloudSolution::semiImplicit } -template -bool Foam::KinematicCloud::cloudSolution::solveThisStep() const +template +bool Foam::KinematicCloud::cloudSolution::solveThisStep() const { return active_ @@ -161,8 +161,8 @@ bool Foam::KinematicCloud::cloudSolution::solveThisStep() const } -template -bool Foam::KinematicCloud::cloudSolution::canEvolve() +template +bool Foam::KinematicCloud::cloudSolution::canEvolve() { // Set the calculation time step if (transient_) @@ -178,8 +178,8 @@ bool Foam::KinematicCloud::cloudSolution::canEvolve() } -template -bool Foam::KinematicCloud::cloudSolution::output() const +template +bool Foam::KinematicCloud::cloudSolution::output() const { return active_ && mesh_.time().outputTime(); } @@ -187,12 +187,12 @@ bool Foam::KinematicCloud::cloudSolution::output() const // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -template -void Foam::KinematicCloud::setModels() +template +void Foam::KinematicCloud::setModels() { collisionModel_.reset ( - CollisionModel >::New + CollisionModel >::New ( subModelProperties_, *this @@ -201,7 +201,7 @@ void Foam::KinematicCloud::setModels() dispersionModel_.reset ( - DispersionModel >::New + DispersionModel >::New ( subModelProperties_, *this @@ -210,7 +210,7 @@ void Foam::KinematicCloud::setModels() injectionModel_.reset ( - InjectionModel >::New + InjectionModel >::New ( subModelProperties_, *this @@ -219,7 +219,7 @@ void Foam::KinematicCloud::setModels() patchInteractionModel_.reset ( - PatchInteractionModel >::New + PatchInteractionModel >::New ( subModelProperties_, *this @@ -228,7 +228,7 @@ void Foam::KinematicCloud::setModels() postProcessingModel_.reset ( - PostProcessingModel >::New + PostProcessingModel >::New ( subModelProperties_, *this @@ -237,7 +237,7 @@ void Foam::KinematicCloud::setModels() surfaceFilmModel_.reset ( - SurfaceFilmModel >::New + SurfaceFilmModel >::New ( subModelProperties_, *this, @@ -256,11 +256,9 @@ void Foam::KinematicCloud::setModels() } -template -void Foam::KinematicCloud::solve -( - typename ParcelType::trackData& td -) +template +template +void Foam::KinematicCloud::solve(TrackData& td) { if (solution_.transient()) { @@ -290,8 +288,8 @@ void Foam::KinematicCloud::solve } -template -void Foam::KinematicCloud::preEvolve() +template +void Foam::KinematicCloud::preEvolve() { Info<< "\nSolving cloud " << this->name() << endl; @@ -301,14 +299,14 @@ void Foam::KinematicCloud::preEvolve() } -template -void Foam::KinematicCloud::buildCellOccupancy() +template +void Foam::KinematicCloud::buildCellOccupancy() { if (cellOccupancyPtr_.empty()) { cellOccupancyPtr_.reset ( - new List >(mesh_.nCells()) + new List >(mesh_.nCells()) ); } else if (cellOccupancyPtr_().size() != mesh_.nCells()) @@ -319,22 +317,22 @@ void Foam::KinematicCloud::buildCellOccupancy() cellOccupancyPtr_().setSize(mesh_.nCells()); } - List >& cellOccupancy = cellOccupancyPtr_(); + List >& cellOccupancy = cellOccupancyPtr_(); forAll(cellOccupancy, cO) { cellOccupancy[cO].clear(); } - forAllIter(typename KinematicCloud, *this, iter) + forAllIter(typename KinematicCloud, *this, iter) { cellOccupancy[iter().cell()].append(&iter()); } } -template -void Foam::KinematicCloud::updateCellOccupancy() +template +void Foam::KinematicCloud::updateCellOccupancy() { // Only build the cellOccupancy if the pointer is set, i.e. it has // been requested before. @@ -346,11 +344,9 @@ void Foam::KinematicCloud::updateCellOccupancy() } -template -void Foam::KinematicCloud::evolveCloud -( - typename ParcelType::trackData& td -) +template +template +void Foam::KinematicCloud::evolveCloud(TrackData& td) { if (solution_.coupled()) { @@ -384,17 +380,15 @@ void Foam::KinematicCloud::evolveCloud this->injection().injectSteadyState(td, solution_.deltaT()); - td.part() = ParcelType::trackData::tpLinearTrack; - Cloud::move(td, solution_.deltaT()); + td.part() = TrackData::tpLinearTrack; + CloudType::move(td, solution_.deltaT()); } } -template -void Foam::KinematicCloud::motion -( - typename ParcelType::trackData& td -) +template +template +void Foam::KinematicCloud::motion(TrackData& td) { // Sympletic leapfrog integration of particle forces: // + apply half deltaV with stored force @@ -428,32 +422,30 @@ void Foam::KinematicCloud::motion } -template -void Foam::KinematicCloud::moveCollide -( - typename ParcelType::trackData& td -) +template +template +void Foam::KinematicCloud::moveCollide(TrackData& td) { - td.part() = ParcelType::trackData::tpVelocityHalfStep; - Cloud::move(td, solution_.deltaT()); + td.part() = TrackData::tpVelocityHalfStep; + CloudType::move(td, solution_.deltaT()); - td.part() = ParcelType::trackData::tpLinearTrack; - Cloud::move(td, solution_.deltaT()); + td.part() = TrackData::tpLinearTrack; + CloudType::move(td, solution_.deltaT()); - // td.part() = ParcelType::trackData::tpRotationalTrack; - // Cloud::move(td); + // td.part() = TrackData::tpRotationalTrack; + // CloudType::move(td); updateCellOccupancy(); this->collision().collide(); - td.part() = ParcelType::trackData::tpVelocityHalfStep; - Cloud::move(td, solution_.deltaT()); + td.part() = TrackData::tpVelocityHalfStep; + CloudType::move(td, solution_.deltaT()); } -template -void Foam::KinematicCloud::postEvolve() +template +void Foam::KinematicCloud::postEvolve() { Info<< endl; @@ -471,10 +463,10 @@ void Foam::KinematicCloud::postEvolve() } -template -void Foam::KinematicCloud::cloudReset(KinematicCloud& c) +template +void Foam::KinematicCloud::cloudReset(KinematicCloud& c) { - Cloud::cloudReset(c); + CloudType::cloudReset(c); rndGen_ = c.rndGen_; @@ -492,8 +484,8 @@ void Foam::KinematicCloud::cloudReset(KinematicCloud& c) // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::KinematicCloud::KinematicCloud +template +Foam::KinematicCloud::KinematicCloud ( const word& cloudName, const volScalarField& rho, @@ -503,7 +495,7 @@ Foam::KinematicCloud::KinematicCloud bool readFields ) : - Cloud(rho.mesh(), cloudName, false), + CloudType(rho.mesh(), cloudName, false), kinematicCloud(), cloudCopyPtr_(NULL), mesh_(rho.mesh()), @@ -592,7 +584,7 @@ Foam::KinematicCloud::KinematicCloud if (readFields) { - ParcelType::readFields(*this); + parcelType::readFields(*this); } if (solution_.resetSourcesOnStartup()) @@ -602,14 +594,14 @@ Foam::KinematicCloud::KinematicCloud } -template -Foam::KinematicCloud::KinematicCloud +template +Foam::KinematicCloud::KinematicCloud ( - KinematicCloud& c, + KinematicCloud& c, const word& name ) : - Cloud(c.mesh_, name, c), + CloudType(c.mesh_, name, c), kinematicCloud(), cloudCopyPtr_(NULL), mesh_(c.mesh_), @@ -666,15 +658,15 @@ Foam::KinematicCloud::KinematicCloud {} -template -Foam::KinematicCloud::KinematicCloud +template +Foam::KinematicCloud::KinematicCloud ( const fvMesh& mesh, const word& name, - const KinematicCloud& c + const KinematicCloud& c ) : - Cloud(mesh, name, IDLList()), + CloudType(mesh, name, IDLList()), kinematicCloud(), cloudCopyPtr_(NULL), mesh_(mesh), @@ -714,17 +706,17 @@ Foam::KinematicCloud::KinematicCloud // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::KinematicCloud::~KinematicCloud() +template +Foam::KinematicCloud::~KinematicCloud() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -void Foam::KinematicCloud::checkParcelProperties +template +void Foam::KinematicCloud::checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) @@ -739,12 +731,12 @@ void Foam::KinematicCloud::checkParcelProperties } -template -void Foam::KinematicCloud::storeState() +template +void Foam::KinematicCloud::storeState() { cloudCopyPtr_.reset ( - static_cast*> + static_cast*> ( clone(this->name() + "Copy").ptr() ) @@ -752,25 +744,25 @@ void Foam::KinematicCloud::storeState() } -template -void Foam::KinematicCloud::restoreState() +template +void Foam::KinematicCloud::restoreState() { cloudReset(cloudCopyPtr_()); cloudCopyPtr_.clear(); } -template -void Foam::KinematicCloud::resetSourceTerms() +template +void Foam::KinematicCloud::resetSourceTerms() { UTrans().field() = vector::zero; UCoeff().field() = 0.0; } -template +template template -void Foam::KinematicCloud::relax +void Foam::KinematicCloud::relax ( DimensionedField& field, const DimensionedField& field0, @@ -783,30 +775,31 @@ void Foam::KinematicCloud::relax } -template -void Foam::KinematicCloud::relaxSources +template +void Foam::KinematicCloud::relaxSources ( - const KinematicCloud& cloudOldTime + const KinematicCloud& cloudOldTime ) { this->relax(UTrans_(), cloudOldTime.UTrans(), "U"); } -template -void Foam::KinematicCloud::evolve() +template +void Foam::KinematicCloud::evolve() { if (solution_.canEvolve()) { - typename ParcelType::trackData td(*this); + typename parcelType::template + TrackingData > td(*this); solve(td); } } -template -void Foam::KinematicCloud::info() const +template +void Foam::KinematicCloud::info() const { vector linearMomentum = linearMomentumOfSystem(); reduce(linearMomentum, sumOp()); diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index 50e8d182aa..e003469aed 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -51,6 +51,7 @@ SourceFiles #ifndef KinematicCloud_H #define KinematicCloud_H +#include "particle.H" #include "Cloud.H" #include "kinematicCloud.H" #include "IOdictionary.H" @@ -62,6 +63,9 @@ SourceFiles #include "IntegrationSchemesFwd.H" + +#include "ParticleForceList.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -92,16 +96,21 @@ class SurfaceFilmModel; Class KinematicCloud Declaration \*---------------------------------------------------------------------------*/ -template +template class KinematicCloud : - public Cloud, + public CloudType, public kinematicCloud { public: - //- Type of parcel the cloud was instantiated for - typedef ParcelType parcelType; + // Public typedefs + + //- Redefine particle type as parcel type + typedef typename CloudType::particleType parcelType; + + //- Force type + typedef ParticleForceList > forceType; private: @@ -109,7 +118,7 @@ private: // Private data //- Cloud copy pointer - autoPtr > cloudCopyPtr_; + autoPtr > cloudCopyPtr_; // Private Member Functions @@ -293,7 +302,7 @@ protected: cloudSolution solution_; //- Parcel constant properties - typename ParcelType::constantProperties constProps_; + typename parcelType::constantProperties constProps_; //- Sub-models dictionary const dictionary subModelProperties_; @@ -302,7 +311,7 @@ protected: cachedRandom rndGen_; //- Cell occupancy information for each parcel, (demand driven) - autoPtr > > cellOccupancyPtr_; + autoPtr > > cellOccupancyPtr_; // References to the carrier gas fields @@ -324,33 +333,33 @@ protected: //- Optional particle forces - typename ParcelType::forceType forces_; + forceType forces_; // References to the cloud sub-models //- Collision model - autoPtr > > + autoPtr > > collisionModel_; //- Dispersion model - autoPtr > > + autoPtr > > dispersionModel_; //- Injector model - autoPtr > > + autoPtr > > injectionModel_; //- Patch interaction model - autoPtr > > + autoPtr > > patchInteractionModel_; //- Post-processing model - autoPtr > > + autoPtr > > postProcessingModel_; //- Surface film model - autoPtr > > + autoPtr > > surfaceFilmModel_; @@ -378,7 +387,8 @@ protected: // Cloud evolution functions //- Solve the cloud - calls all evolution functions - void solve(typename ParcelType::trackData& td); + template + void solve(TrackData& td); //- Pre-evolve void preEvolve(); @@ -391,23 +401,28 @@ protected: void updateCellOccupancy(); //- Evolve the cloud - void evolveCloud(typename ParcelType::trackData& td); + template + void evolveCloud(TrackData& td); //- Particle motion - void motion(typename ParcelType::trackData& td); + template + void motion(TrackData& td); //- Move-collide particles - void moveCollide(typename ParcelType::trackData& td); + template + void moveCollide(TrackData& td); //- Post-evolve void postEvolve(); //- Reset state of cloud - void cloudReset(KinematicCloud& c); + void cloudReset(KinematicCloud& c); public: + typedef CloudType cloudType; + // Constructors //- Construct given carrier gas fields @@ -422,29 +437,33 @@ public: ); //- Copy constructor with new name - KinematicCloud(KinematicCloud& c, const word& name); + KinematicCloud + ( + KinematicCloud& c, + const word& name + ); //- Copy constructor with new name - creates bare cloud KinematicCloud ( const fvMesh& mesh, const word& name, - const KinematicCloud& c + const KinematicCloud& c ); //- Construct and return clone based on (this) with new name - virtual autoPtr > clone(const word& name) + virtual autoPtr > clone(const word& name) { - return autoPtr > + return autoPtr > ( new KinematicCloud(*this, name) ); } //- Construct and return bare clone based on (this) with new name - virtual autoPtr > cloneBare(const word& name) const + virtual autoPtr > cloneBare(const word& name) const { - return autoPtr > + return autoPtr > ( new KinematicCloud(this->mesh(), name, *this) ); @@ -471,7 +490,7 @@ public: // References to the mesh and databases - //- Return refernce to the mesh + //- Return reference to the mesh inline const fvMesh& mesh() const; //- Return particle properties dictionary @@ -484,7 +503,7 @@ public: inline cloudSolution& solution(); //- Return the constant properties - inline const typename ParcelType::constantProperties& + inline const typename parcelType::constantProperties& constProps() const; //- Return reference to the sub-models dictionary @@ -493,14 +512,14 @@ public: // Cloud data - //- Return refernce to the random object + //- Return reference to the random object inline cachedRandom& rndGen(); //- Return the cell occupancy information for each // parcel, non-const access, the caller is // responsible for updating it for its own purposes // if particles are removed or created. - inline List >& cellOccupancy(); + inline List >& cellOccupancy(); // References to the carrier gas fields @@ -522,53 +541,54 @@ public: //- Optional particle forces - inline const typename ParcelType::forceType& forces() const; +// inline const typename parcelType::forceType& forces() const; + inline const forceType& forces() const; // Sub-models //- Return const access to the collision model - inline const CollisionModel >& + inline const CollisionModel >& collision() const; //- Return reference to the collision model - inline CollisionModel >& + inline CollisionModel >& collision(); //- Return const-access to the dispersion model - inline const DispersionModel >& + inline const DispersionModel >& dispersion() const; //- Return reference to the dispersion model - inline DispersionModel >& + inline DispersionModel >& dispersion(); //- Return const access to the injection model - inline const InjectionModel >& + inline const InjectionModel >& injection() const; //- Return reference to the injection model - inline InjectionModel >& + inline InjectionModel >& injection(); //- Return const-access to the patch interaction model - inline const PatchInteractionModel >& + inline const PatchInteractionModel >& patchInteraction() const; //- Return reference to the patch interaction model - inline PatchInteractionModel >& + inline PatchInteractionModel >& patchInteraction(); //- Return reference to post-processing model - inline PostProcessingModel >& + inline PostProcessingModel >& postProcessing(); //- Return const-access to the surface film model - inline const SurfaceFilmModel >& + inline const SurfaceFilmModel >& surfaceFilm() const; //- Return reference to the surface film model - inline SurfaceFilmModel >& + inline SurfaceFilmModel >& surfaceFilm(); @@ -638,7 +658,7 @@ public: //- Check parcel properties void checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ); @@ -662,7 +682,7 @@ public: ) const; //- Apply relaxation to (steady state) cloud sources - void relaxSources(const KinematicCloud& cloudOldTime); + void relaxSources(const KinematicCloud& cloudOldTime); //- Evolve the cloud void evolve(); diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H index 4c710fa797..87a7e9b534 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -27,136 +27,136 @@ License // * * * * * * * * * * * cloudSolution Member Functions * * * * * * * * * * // -template +template inline const Foam::fvMesh& -Foam::KinematicCloud::cloudSolution::mesh() const +Foam::KinematicCloud::cloudSolution::mesh() const { return mesh_; } -template +template inline const Foam::dictionary& -Foam::KinematicCloud::cloudSolution::dict() const +Foam::KinematicCloud::cloudSolution::dict() const { return dict_; } -template +template inline const Foam::Switch -Foam::KinematicCloud::cloudSolution::active() const +Foam::KinematicCloud::cloudSolution::active() const { return active_; } -template +template inline const Foam::dictionary& -Foam::KinematicCloud::cloudSolution::sourceTermDict() const +Foam::KinematicCloud::cloudSolution::sourceTermDict() const { return dict_.subDict("sourceTerms"); } -template +template inline const Foam::dictionary& -Foam::KinematicCloud::cloudSolution::interpolationSchemes() const +Foam::KinematicCloud::cloudSolution::interpolationSchemes() const { return dict_.subDict("interpolationSchemes"); } -template +template inline const Foam::dictionary& -Foam::KinematicCloud::cloudSolution::integrationSchemes() const +Foam::KinematicCloud::cloudSolution::integrationSchemes() const { return dict_.subDict("integrationSchemes"); } -template +template inline const Foam::Switch -Foam::KinematicCloud::cloudSolution::transient() const +Foam::KinematicCloud::cloudSolution::transient() const { return transient_; } -template +template inline const Foam::Switch -Foam::KinematicCloud::cloudSolution::steadyState() const +Foam::KinematicCloud::cloudSolution::steadyState() const { return !transient_; } -template +template inline Foam::label -Foam::KinematicCloud::cloudSolution::calcFrequency() const +Foam::KinematicCloud::cloudSolution::calcFrequency() const { return calcFrequency_; } -template +template inline Foam::scalar -Foam::KinematicCloud::cloudSolution::maxCo() const +Foam::KinematicCloud::cloudSolution::maxCo() const { return maxCo_; } -template -inline Foam::label Foam::KinematicCloud::cloudSolution::iter() const +template +inline Foam::label Foam::KinematicCloud::cloudSolution::iter() const { return iter_; } -template -inline Foam::label Foam::KinematicCloud::cloudSolution::nextIter() +template +inline Foam::label Foam::KinematicCloud::cloudSolution::nextIter() { return ++iter_; } -template +template inline Foam::scalar -Foam::KinematicCloud::cloudSolution::deltaT() const +Foam::KinematicCloud::cloudSolution::deltaT() const { return deltaT_; } -template +template inline const Foam::Switch -Foam::KinematicCloud::cloudSolution::coupled() const +Foam::KinematicCloud::cloudSolution::coupled() const { return coupled_; } -template +template inline const Foam::Switch -Foam::KinematicCloud::cloudSolution::cellValueSourceCorrection() +Foam::KinematicCloud::cloudSolution::cellValueSourceCorrection() const { return cellValueSourceCorrection_; } -template +template inline Foam::scalar -Foam::KinematicCloud::cloudSolution::maxTrackTime() const +Foam::KinematicCloud::cloudSolution::maxTrackTime() const { return maxTrackTime_; } -template +template inline const Foam::Switch -Foam::KinematicCloud::cloudSolution::resetSourcesOnStartup() const +Foam::KinematicCloud::cloudSolution::resetSourcesOnStartup() const { return resetSourcesOnStartup_; } @@ -164,209 +164,208 @@ Foam::KinematicCloud::cloudSolution::resetSourcesOnStartup() const // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -inline const Foam::KinematicCloud& -Foam::KinematicCloud::cloudCopy() const +template +inline const Foam::KinematicCloud& +Foam::KinematicCloud::cloudCopy() const { return cloudCopyPtr_(); } -template -inline bool Foam::KinematicCloud::hasWallImpactDistance() const +template +inline bool Foam::KinematicCloud::hasWallImpactDistance() const { return !collision().controlsWallInteraction(); } -template -inline const Foam::fvMesh& Foam::KinematicCloud::mesh() const +template +inline const Foam::fvMesh& Foam::KinematicCloud::mesh() const { return mesh_; } -template +template inline const Foam::IOdictionary& -Foam::KinematicCloud::particleProperties() const +Foam::KinematicCloud::particleProperties() const { return particleProperties_; } -template -inline const typename Foam::KinematicCloud::cloudSolution& -Foam::KinematicCloud::solution() const +template +inline const typename Foam::KinematicCloud::cloudSolution& +Foam::KinematicCloud::solution() const { return solution_; } -template -inline typename Foam::KinematicCloud::cloudSolution& -Foam::KinematicCloud::solution() +template +inline typename Foam::KinematicCloud::cloudSolution& +Foam::KinematicCloud::solution() { return solution_; } -template -inline const typename ParcelType::constantProperties& -Foam::KinematicCloud::constProps() const +template +inline const typename CloudType::particleType::constantProperties& +Foam::KinematicCloud::constProps() const { return constProps_; } -template +template inline const Foam::dictionary& -Foam::KinematicCloud::subModelProperties() const +Foam::KinematicCloud::subModelProperties() const { return subModelProperties_; } -template -inline const Foam::volScalarField& -Foam::KinematicCloud::rho() const +template +inline const Foam::volScalarField& Foam::KinematicCloud::rho() const { return rho_; } -template -inline const Foam::volVectorField& Foam::KinematicCloud::U() const +template +inline const Foam::volVectorField& Foam::KinematicCloud::U() const { return U_; } -template -inline const Foam::volScalarField& Foam::KinematicCloud::mu() const +template +inline const Foam::volScalarField& Foam::KinematicCloud::mu() const { return mu_; } -template -inline const Foam::dimensionedVector& -Foam::KinematicCloud::g() const +template +inline const Foam::dimensionedVector& Foam::KinematicCloud::g() const { return g_; } -template -inline const typename ParcelType::forceType& -Foam::KinematicCloud::forces() const +template +//inline const typename CloudType::parcelType::forceType& +inline const typename Foam::KinematicCloud::forceType& +Foam::KinematicCloud::forces() const { return forces_; } -template -inline const Foam::CollisionModel >& -Foam::KinematicCloud::collision() const +template +inline const Foam::CollisionModel >& +Foam::KinematicCloud::collision() const { return collisionModel_(); } -template -inline Foam::CollisionModel >& -Foam::KinematicCloud::collision() +template +inline Foam::CollisionModel >& +Foam::KinematicCloud::collision() { return collisionModel_(); } -template -inline const Foam::DispersionModel >& -Foam::KinematicCloud::dispersion() const +template +inline const Foam::DispersionModel >& +Foam::KinematicCloud::dispersion() const { return dispersionModel_; } -template -inline Foam::DispersionModel >& -Foam::KinematicCloud::dispersion() +template +inline Foam::DispersionModel >& +Foam::KinematicCloud::dispersion() { return dispersionModel_(); } -template -inline const Foam::InjectionModel >& -Foam::KinematicCloud::injection() const +template +inline const Foam::InjectionModel >& +Foam::KinematicCloud::injection() const { return injectionModel_; } -template -inline const Foam::PatchInteractionModel >& -Foam::KinematicCloud::patchInteraction() const +template +inline const Foam::PatchInteractionModel >& +Foam::KinematicCloud::patchInteraction() const { return patchInteractionModel_; } -template -inline Foam::PatchInteractionModel >& -Foam::KinematicCloud::patchInteraction() +template +inline Foam::PatchInteractionModel >& +Foam::KinematicCloud::patchInteraction() { return patchInteractionModel_(); } -template -inline Foam::InjectionModel >& -Foam::KinematicCloud::injection() +template +inline Foam::InjectionModel >& +Foam::KinematicCloud::injection() { return injectionModel_(); } -template -inline Foam::PostProcessingModel >& -Foam::KinematicCloud::postProcessing() +template +inline Foam::PostProcessingModel >& +Foam::KinematicCloud::postProcessing() { return postProcessingModel_(); } -template -inline const Foam::SurfaceFilmModel >& -Foam::KinematicCloud::surfaceFilm() const +template +inline const Foam::SurfaceFilmModel >& +Foam::KinematicCloud::surfaceFilm() const { return surfaceFilmModel_(); } -template -inline Foam::SurfaceFilmModel >& -Foam::KinematicCloud::surfaceFilm() +template +inline Foam::SurfaceFilmModel >& +Foam::KinematicCloud::surfaceFilm() { return surfaceFilmModel_(); } -template +template inline const Foam::vectorIntegrationScheme& -Foam::KinematicCloud::UIntegrator() const +Foam::KinematicCloud::UIntegrator() const { return UIntegrator_; } -template -inline Foam::scalar Foam::KinematicCloud::massInSystem() const +template +inline Foam::scalar Foam::KinematicCloud::massInSystem() const { scalar sysMass = 0.0; - forAllConstIter(typename KinematicCloud, *this, iter) + forAllConstIter(typename KinematicCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); sysMass += p.mass()*p.nParticle(); } @@ -374,15 +373,15 @@ inline Foam::scalar Foam::KinematicCloud::massInSystem() const } -template +template inline Foam::vector -Foam::KinematicCloud::linearMomentumOfSystem() const +Foam::KinematicCloud::linearMomentumOfSystem() const { vector linearMomentum(vector::zero); - forAllConstIter(typename KinematicCloud, *this, iter) + forAllConstIter(typename KinematicCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); linearMomentum += p.mass()*p.U(); } @@ -391,15 +390,15 @@ Foam::KinematicCloud::linearMomentumOfSystem() const } -template +template inline Foam::scalar -Foam::KinematicCloud::linearKineticEnergyOfSystem() const +Foam::KinematicCloud::linearKineticEnergyOfSystem() const { scalar linearKineticEnergy = 0.0; - forAllConstIter(typename KinematicCloud, *this, iter) + forAllConstIter(typename KinematicCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); linearKineticEnergy += 0.5*p.mass()*(p.U() & p.U()); } @@ -408,16 +407,15 @@ Foam::KinematicCloud::linearKineticEnergyOfSystem() const } -template +template inline Foam::scalar -Foam::KinematicCloud:: -rotationalKineticEnergyOfSystem() const +Foam::KinematicCloud::rotationalKineticEnergyOfSystem() const { scalar rotationalKineticEnergy = 0.0; - forAllConstIter(typename KinematicCloud, *this, iter) + forAllConstIter(typename KinematicCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); rotationalKineticEnergy += 0.5*p.momentOfInertia()*(p.omega() & p.omega()); @@ -427,16 +425,16 @@ rotationalKineticEnergyOfSystem() const } -template -inline Foam::cachedRandom& Foam::KinematicCloud::rndGen() +template +inline Foam::cachedRandom& Foam::KinematicCloud::rndGen() { return rndGen_; } -template -inline Foam::List >& -Foam::KinematicCloud::cellOccupancy() +template +inline Foam::List >& +Foam::KinematicCloud::cellOccupancy() { if (cellOccupancyPtr_.empty()) { @@ -447,41 +445,41 @@ Foam::KinematicCloud::cellOccupancy() } -template +template inline Foam::DimensionedField& -Foam::KinematicCloud::UTrans() +Foam::KinematicCloud::UTrans() { return UTrans_(); } -template +template inline const Foam::DimensionedField& -Foam::KinematicCloud::UTrans() const +Foam::KinematicCloud::UTrans() const { return UTrans_(); } -template +template inline Foam::DimensionedField& -Foam::KinematicCloud::UCoeff() +Foam::KinematicCloud::UCoeff() { return UCoeff_(); } -template +template inline const Foam::DimensionedField& -Foam::KinematicCloud::UCoeff() const +Foam::KinematicCloud::UCoeff() const { return UCoeff_(); } -template +template inline Foam::tmp -Foam::KinematicCloud::SU(volVectorField& U) const +Foam::KinematicCloud::SU(volVectorField& U) const { if (debug) { @@ -515,9 +513,9 @@ Foam::KinematicCloud::SU(volVectorField& U) const } -template +template inline const Foam::tmp -Foam::KinematicCloud::theta() const +Foam::KinematicCloud::theta() const { tmp ttheta ( @@ -538,9 +536,9 @@ Foam::KinematicCloud::theta() const ); scalarField& theta = ttheta().internalField(); - forAllConstIter(typename KinematicCloud, *this, iter) + forAllConstIter(typename KinematicCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); const label cellI = p.cell(); theta[cellI] += p.nParticle()*p.volume(); @@ -552,9 +550,9 @@ Foam::KinematicCloud::theta() const } -template +template inline const Foam::tmp -Foam::KinematicCloud::alpha() const +Foam::KinematicCloud::alpha() const { tmp talpha ( @@ -575,9 +573,9 @@ Foam::KinematicCloud::alpha() const ); scalarField& alpha = talpha().internalField(); - forAllConstIter(typename KinematicCloud, *this, iter) + forAllConstIter(typename KinematicCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); const label cellI = p.cell(); alpha[cellI] += p.nParticle()*p.mass(); @@ -589,9 +587,9 @@ Foam::KinematicCloud::alpha() const } -template +template inline const Foam::tmp -Foam::KinematicCloud::rhoEff() const +Foam::KinematicCloud::rhoEff() const { tmp trhoEff ( @@ -612,9 +610,9 @@ Foam::KinematicCloud::rhoEff() const ); scalarField& rhoEff = trhoEff().internalField(); - forAllConstIter(typename KinematicCloud, *this, iter) + forAllConstIter(typename KinematicCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); const label cellI = p.cell(); rhoEff[cellI] += p.nParticle()*p.mass(); diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index fdbf524781..1c465fc450 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -30,12 +30,12 @@ License // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // -template -void Foam::ReactingCloud::setModels() +template +void Foam::ReactingCloud::setModels() { compositionModel_.reset ( - CompositionModel >::New + CompositionModel >::New ( this->subModelProperties(), *this @@ -44,7 +44,7 @@ void Foam::ReactingCloud::setModels() phaseChangeModel_.reset ( - PhaseChangeModel >::New + PhaseChangeModel >::New ( this->subModelProperties(), *this @@ -53,8 +53,8 @@ void Foam::ReactingCloud::setModels() } -template -void Foam::ReactingCloud::checkSuppliedComposition +template +void Foam::ReactingCloud::checkSuppliedComposition ( const scalarField& YSupplied, const scalarField& Y, @@ -65,7 +65,7 @@ void Foam::ReactingCloud::checkSuppliedComposition { FatalErrorIn ( - "ReactingCloud::checkSuppliedComposition" + "ReactingCloud::checkSuppliedComposition" "(" "const scalarField&, " "const scalarField&, " @@ -80,10 +80,10 @@ void Foam::ReactingCloud::checkSuppliedComposition } -template -void Foam::ReactingCloud::cloudReset(ReactingCloud& c) +template +void Foam::ReactingCloud::cloudReset(ReactingCloud& c) { - ThermoCloud::cloudReset(c); + CloudType::cloudReset(c); compositionModel_.reset(c.compositionModel_.ptr()); phaseChangeModel_.reset(c.phaseChangeModel_.ptr()); @@ -94,8 +94,8 @@ void Foam::ReactingCloud::cloudReset(ReactingCloud& c) // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::ReactingCloud::ReactingCloud +template +Foam::ReactingCloud::ReactingCloud ( const word& cloudName, const volScalarField& rho, @@ -105,7 +105,7 @@ Foam::ReactingCloud::ReactingCloud bool readFields ) : - ThermoCloud(cloudName, rho, U, g, thermo, false), + CloudType(cloudName, rho, U, g, thermo, false), reactingCloud(), cloudCopyPtr_(NULL), constProps_(this->particleProperties(), this->solution().active()), @@ -144,7 +144,7 @@ Foam::ReactingCloud::ReactingCloud if (readFields) { - ParcelType::readFields(*this); + parcelType::readFields(*this, this->composition()); } if (this->solution().resetSourcesOnStartup()) @@ -154,14 +154,14 @@ Foam::ReactingCloud::ReactingCloud } -template -Foam::ReactingCloud::ReactingCloud +template +Foam::ReactingCloud::ReactingCloud ( - ReactingCloud& c, + ReactingCloud& c, const word& name ) : - ThermoCloud(c, name), + CloudType(c, name), reactingCloud(), cloudCopyPtr_(NULL), constProps_(c.constProps_), @@ -194,15 +194,15 @@ Foam::ReactingCloud::ReactingCloud } -template -Foam::ReactingCloud::ReactingCloud +template +Foam::ReactingCloud::ReactingCloud ( const fvMesh& mesh, const word& name, - const ReactingCloud& c + const ReactingCloud& c ) : - ThermoCloud(mesh, name, c), + CloudType(mesh, name, c), reactingCloud(), cloudCopyPtr_(NULL), constProps_(), @@ -216,22 +216,22 @@ Foam::ReactingCloud::ReactingCloud // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::ReactingCloud::~ReactingCloud() +template +Foam::ReactingCloud::~ReactingCloud() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -void Foam::ReactingCloud::checkParcelProperties +template +void Foam::ReactingCloud::checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) { - ThermoCloud::checkParcelProperties + CloudType::checkParcelProperties ( parcel, lagrangianDt, @@ -257,12 +257,12 @@ void Foam::ReactingCloud::checkParcelProperties } -template -void Foam::ReactingCloud::storeState() +template +void Foam::ReactingCloud::storeState() { cloudCopyPtr_.reset ( - static_cast*> + static_cast*> ( clone(this->name() + "Copy").ptr() ) @@ -270,18 +270,18 @@ void Foam::ReactingCloud::storeState() } -template -void Foam::ReactingCloud::restoreState() +template +void Foam::ReactingCloud::restoreState() { cloudReset(cloudCopyPtr_()); cloudCopyPtr_.clear(); } -template -void Foam::ReactingCloud::resetSourceTerms() +template +void Foam::ReactingCloud::resetSourceTerms() { - ThermoCloud::resetSourceTerms(); + CloudType::resetSourceTerms(); forAll(rhoTrans_, i) { rhoTrans_[i].field() = 0.0; @@ -289,15 +289,15 @@ void Foam::ReactingCloud::resetSourceTerms() } -template -void Foam::ReactingCloud::relaxSources +template +void Foam::ReactingCloud::relaxSources ( - const ReactingCloud& cloudOldTime + const ReactingCloud& cloudOldTime ) { typedef DimensionedField dsfType; - ThermoCloud::relaxSources(cloudOldTime); + CloudType::relaxSources(cloudOldTime); forAll(rhoTrans_, fieldI) { @@ -308,33 +308,44 @@ void Foam::ReactingCloud::relaxSources } -template -void Foam::ReactingCloud::evolve() +template +void Foam::ReactingCloud::evolve() { if (this->solution().canEvolve()) { - typename ParcelType::trackData td(*this); + typename parcelType::template + TrackingData > td(*this); this->solve(td); } } -template -void Foam::ReactingCloud::addToMassPhaseChange(const scalar dMass) +template +void Foam::ReactingCloud::addToMassPhaseChange(const scalar dMass) { dMassPhaseChange_ += dMass; } -template -void Foam::ReactingCloud::info() const +template +void Foam::ReactingCloud::info() const { - ThermoCloud::info(); + CloudType::info(); Info<< " Mass transfer phase change = " << returnReduce(dMassPhaseChange_, sumOp()) << nl; } +template +void Foam::ReactingCloud::writeFields() const +{ + if (this->size()) + { + CloudType::particleType::writeFields(*this, this->composition()); + } +} + + // ************************************************************************* // diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index 9db309ff09..6b67a73721 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -40,7 +40,6 @@ SourceFiles #ifndef ReactingCloud_H #define ReactingCloud_H -#include "ThermoCloud.H" #include "reactingCloud.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -60,19 +59,24 @@ class PhaseChangeModel; Class ReactingCloud Declaration \*---------------------------------------------------------------------------*/ -template +template class ReactingCloud : - public ThermoCloud, + public CloudType, public reactingCloud { +public: + + //- Type of parcel the cloud was instantiated for + typedef typename CloudType::particleType parcelType; + private: // Private data //- Cloud copy pointer - autoPtr > cloudCopyPtr_; + autoPtr > cloudCopyPtr_; // Private member functions @@ -89,17 +93,17 @@ protected: // Protected data //- Parcel constant properties - typename ParcelType::constantProperties constProps_; + typename parcelType::constantProperties constProps_; // References to the cloud sub-models //- Reacting composition model - autoPtr > > + autoPtr > > compositionModel_; //- Reacting phase change model - autoPtr > > + autoPtr > > phaseChangeModel_; @@ -137,11 +141,13 @@ protected: // Cloud evolution functions //- Reset state of cloud - void cloudReset(ReactingCloud& c); + void cloudReset(ReactingCloud& c); public: + typedef CloudType cloudType; + // Constructors //- Construct given carrier gas fields @@ -156,29 +162,29 @@ public: ); //- Copy constructor with new name - ReactingCloud(ReactingCloud& c, const word& name); + ReactingCloud(ReactingCloud& c, const word& name); //- Copy constructor with new name - creates bare cloud ReactingCloud ( const fvMesh& mesh, const word& name, - const ReactingCloud& c + const ReactingCloud& c ); //- Construct and return clone based on (this) with new name - virtual autoPtr > clone(const word& name) + virtual autoPtr > clone(const word& name) { - return autoPtr > + return autoPtr > ( new ReactingCloud(*this, name) ); } //- Construct and return bare clone based on (this) with new name - virtual autoPtr > cloneBare(const word& name) const + virtual autoPtr > cloneBare(const word& name) const { - return autoPtr > + return autoPtr > ( new ReactingCloud(this->mesh(), name, *this) ); @@ -189,10 +195,6 @@ public: virtual ~ReactingCloud(); - //- Type of parcel the cloud was instantiated for - typedef ParcelType parcelType; - - // Member Functions // Access @@ -201,18 +203,18 @@ public: inline const ReactingCloud& cloudCopy() const; //- Return the constant properties - inline const typename ParcelType::constantProperties& + inline const typename parcelType::constantProperties& constProps() const; // Sub-models //- Return reference to reacting composition model - inline const CompositionModel >& + inline const CompositionModel >& composition() const; //- Return reference to reacting phase change model - inline const PhaseChangeModel >& + inline const PhaseChangeModel >& phaseChange() const; @@ -262,7 +264,7 @@ public: //- Check parcel properties void checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ); @@ -277,13 +279,19 @@ public: void resetSourceTerms(); //- Apply relaxation to (steady state) cloud sources - void relaxSources(const ReactingCloud& cloudOldTime); + void relaxSources(const ReactingCloud& cloudOldTime); //- Evolve the cloud void evolve(); //- Print cloud information void info() const; + + + // I-O + + //- Write the field data for the cloud + virtual void writeFields() const; }; diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H index 9d32a24134..79b66f87ff 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H @@ -25,66 +25,65 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -inline const Foam::ReactingCloud& -Foam::ReactingCloud::cloudCopy() const +template +inline const Foam::ReactingCloud& +Foam::ReactingCloud::cloudCopy() const { return cloudCopyPtr_(); } -template -inline const typename ParcelType::constantProperties& -Foam::ReactingCloud::constProps() const +template +inline const typename CloudType::particleType::constantProperties& +Foam::ReactingCloud::constProps() const { return constProps_; } -template -inline const Foam::CompositionModel >& -Foam::ReactingCloud::composition() const +template +inline const Foam::CompositionModel >& +Foam::ReactingCloud::composition() const { return compositionModel_; } -template -inline const Foam::PhaseChangeModel >& -Foam::ReactingCloud::phaseChange() const +template +inline const Foam::PhaseChangeModel >& +Foam::ReactingCloud::phaseChange() const { return phaseChangeModel_; } -template +template inline Foam::DimensionedField& -Foam::ReactingCloud::rhoTrans(const label i) +Foam::ReactingCloud::rhoTrans(const label i) { return rhoTrans_[i]; } -template +template inline const Foam::PtrList >& -Foam::ReactingCloud::rhoTrans() const +Foam::ReactingCloud::rhoTrans() const { return rhoTrans_; } -template +template inline Foam::PtrList >& -Foam::ReactingCloud::rhoTrans() +Foam::ReactingCloud::rhoTrans() { return rhoTrans_; } -template -inline Foam::tmp -Foam::ReactingCloud::SYi +template +inline Foam::tmp Foam::ReactingCloud::SYi ( const label i, volScalarField& Yi @@ -138,9 +137,9 @@ Foam::ReactingCloud::SYi } -template +template inline Foam::tmp > -Foam::ReactingCloud::Srho(const label i) const +Foam::ReactingCloud::Srho(const label i) const { tmp > tRhoi ( @@ -175,9 +174,9 @@ Foam::ReactingCloud::Srho(const label i) const } -template +template inline Foam::tmp > -Foam::ReactingCloud::Srho() const +Foam::ReactingCloud::Srho() const { tmp > trhoTrans ( @@ -217,9 +216,9 @@ Foam::ReactingCloud::Srho() const } -template +template inline Foam::tmp -Foam::ReactingCloud::Srho(volScalarField& rho) const +Foam::ReactingCloud::Srho(volScalarField& rho) const { if (this->solution().coupled()) { diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C index 7cd42b7355..89374ecb48 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C @@ -30,12 +30,12 @@ License // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -template -void Foam::ReactingMultiphaseCloud::setModels() +template +void Foam::ReactingMultiphaseCloud::setModels() { devolatilisationModel_.reset ( - DevolatilisationModel >::New + DevolatilisationModel >::New ( this->subModelProperties(), *this @@ -44,7 +44,7 @@ void Foam::ReactingMultiphaseCloud::setModels() surfaceReactionModel_.reset ( - SurfaceReactionModel >::New + SurfaceReactionModel >::New ( this->subModelProperties(), *this @@ -53,13 +53,13 @@ void Foam::ReactingMultiphaseCloud::setModels() } -template -void Foam::ReactingMultiphaseCloud::cloudReset +template +void Foam::ReactingMultiphaseCloud::cloudReset ( - ReactingMultiphaseCloud& c + ReactingMultiphaseCloud& c ) { - ReactingCloud::cloudReset(c); + CloudType::cloudReset(c); devolatilisationModel_.reset(c.devolatilisationModel_.ptr()); surfaceReactionModel_.reset(c.surfaceReactionModel_.ptr()); @@ -71,8 +71,8 @@ void Foam::ReactingMultiphaseCloud::cloudReset // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud +template +Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud ( const word& cloudName, const volScalarField& rho, @@ -82,7 +82,7 @@ Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud bool readFields ) : - ReactingCloud(cloudName, rho, U, g, thermo, false), + CloudType(cloudName, rho, U, g, thermo, false), reactingMultiphaseCloud(), cloudCopyPtr_(NULL), constProps_(this->particleProperties(), this->solution().active()), @@ -98,7 +98,7 @@ Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud if (readFields) { - ParcelType::readFields(*this); + parcelType::readFields(*this, this->composition()); } if (this->solution().resetSourcesOnStartup()) @@ -108,14 +108,14 @@ Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud } -template -Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud +template +Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud ( - ReactingMultiphaseCloud& c, + ReactingMultiphaseCloud& c, const word& name ) : - ReactingCloud(c, name), + CloudType(c, name), reactingMultiphaseCloud(), cloudCopyPtr_(NULL), constProps_(c.constProps_), @@ -126,15 +126,15 @@ Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud {} -template -Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud +template +Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud ( const fvMesh& mesh, const word& name, - const ReactingMultiphaseCloud& c + const ReactingMultiphaseCloud& c ) : - ReactingCloud(mesh, name, c), + CloudType(mesh, name, c), reactingMultiphaseCloud(), cloudCopyPtr_(NULL), constProps_(), @@ -147,22 +147,22 @@ Foam::ReactingMultiphaseCloud::ReactingMultiphaseCloud // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::ReactingMultiphaseCloud::~ReactingMultiphaseCloud() +template +Foam::ReactingMultiphaseCloud::~ReactingMultiphaseCloud() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -void Foam::ReactingMultiphaseCloud::checkParcelProperties +template +void Foam::ReactingMultiphaseCloud::checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) { - ReactingCloud::checkParcelProperties + CloudType::checkParcelProperties ( parcel, lagrangianDt, @@ -203,12 +203,12 @@ void Foam::ReactingMultiphaseCloud::checkParcelProperties } -template -void Foam::ReactingMultiphaseCloud::storeState() +template +void Foam::ReactingMultiphaseCloud::storeState() { cloudCopyPtr_.reset ( - static_cast*> + static_cast*> ( clone(this->name() + "Copy").ptr() ) @@ -216,35 +216,36 @@ void Foam::ReactingMultiphaseCloud::storeState() } -template -void Foam::ReactingMultiphaseCloud::restoreState() +template +void Foam::ReactingMultiphaseCloud::restoreState() { cloudReset(cloudCopyPtr_()); cloudCopyPtr_.clear(); } -template -void Foam::ReactingMultiphaseCloud::resetSourceTerms() +template +void Foam::ReactingMultiphaseCloud::resetSourceTerms() { - ReactingCloud::resetSourceTerms(); + CloudType::resetSourceTerms(); } -template -void Foam::ReactingMultiphaseCloud::evolve() +template +void Foam::ReactingMultiphaseCloud::evolve() { if (this->solution().canEvolve()) { - typename ParcelType::trackData td(*this); + typename parcelType::template + TrackingData > td(*this); this->solve(td); } } -template -void Foam::ReactingMultiphaseCloud::addToMassDevolatilisation +template +void Foam::ReactingMultiphaseCloud::addToMassDevolatilisation ( const scalar dMass ) @@ -253,8 +254,8 @@ void Foam::ReactingMultiphaseCloud::addToMassDevolatilisation } -template -void Foam::ReactingMultiphaseCloud::addToMassSurfaceReaction +template +void Foam::ReactingMultiphaseCloud::addToMassSurfaceReaction ( const scalar dMass ) @@ -263,10 +264,10 @@ void Foam::ReactingMultiphaseCloud::addToMassSurfaceReaction } -template -void Foam::ReactingMultiphaseCloud::info() const +template +void Foam::ReactingMultiphaseCloud::info() const { - ReactingCloud::info(); + CloudType::info(); Info<< " Mass transfer devolatilisation = " << returnReduce(dMassDevolatilisation_, sumOp()) << nl; Info<< " Mass transfer surface reaction = " @@ -274,4 +275,14 @@ void Foam::ReactingMultiphaseCloud::info() const } +template +void Foam::ReactingMultiphaseCloud::writeFields() const +{ + if (this->size()) + { + CloudType::particleType::writeFields(*this, this->composition()); + } +} + + // ************************************************************************* // diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H index 2c71a6b475..f2e13b02a6 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H @@ -61,16 +61,24 @@ class SurfaceReactionModel; Class ReactingMultiphaseCloud Declaration \*---------------------------------------------------------------------------*/ -template +template class ReactingMultiphaseCloud : - public ReactingCloud, + public CloudType, public reactingMultiphaseCloud { +public: + + //- Type of parcel the cloud was instantiated for + typedef typename CloudType::particleType parcelType; + + +private: + // Private data //- Cloud copy pointer - autoPtr > cloudCopyPtr_; + autoPtr > cloudCopyPtr_; // Private member functions @@ -87,7 +95,7 @@ protected: // Protected data //- Parcel constant properties - typename ParcelType::constantProperties constProps_; + typename parcelType::constantProperties constProps_; // References to the cloud sub-models @@ -95,14 +103,14 @@ protected: //- Devolatilisation model autoPtr < - DevolatilisationModel > + DevolatilisationModel > > devolatilisationModel_; //- Surface reaction model autoPtr < - SurfaceReactionModel > + SurfaceReactionModel > > surfaceReactionModel_; @@ -128,11 +136,13 @@ protected: // Cloud evolution functions //- Reset state of cloud - void cloudReset(ReactingMultiphaseCloud& c); + void cloudReset(ReactingMultiphaseCloud& c); public: + typedef CloudType cloudType; + // Constructors //- Construct given carrier gas fields @@ -150,7 +160,7 @@ public: //- Copy constructor with new name ReactingMultiphaseCloud ( - ReactingMultiphaseCloud& c, + ReactingMultiphaseCloud& c, const word& name ); @@ -159,22 +169,22 @@ public: ( const fvMesh& mesh, const word& name, - const ReactingMultiphaseCloud& c + const ReactingMultiphaseCloud& c ); //- Construct and return clone based on (this) with new name - virtual autoPtr > clone(const word& name) + virtual autoPtr > clone(const word& name) { - return autoPtr > + return autoPtr > ( new ReactingMultiphaseCloud(*this, name) ); } //- Construct and return bare clone based on (this) with new name - virtual autoPtr > cloneBare(const word& name) const + virtual autoPtr > cloneBare(const word& name) const { - return autoPtr > + return autoPtr > ( new ReactingMultiphaseCloud(this->mesh(), name, *this) ); @@ -185,10 +195,6 @@ public: virtual ~ReactingMultiphaseCloud(); - //- Type of parcel the cloud was instantiated for - typedef ParcelType parcelType; - - // Member Functions // Access @@ -197,7 +203,7 @@ public: inline const ReactingMultiphaseCloud& cloudCopy() const; //- Return the constant properties - inline const typename ParcelType::constantProperties& + inline const typename parcelType::constantProperties& constProps() const; @@ -206,14 +212,14 @@ public: //- Return reference to devolatilisation model inline const DevolatilisationModel < - ReactingMultiphaseCloud + ReactingMultiphaseCloud >& devolatilisation() const; //- Return reference to reacting surface reaction model inline const SurfaceReactionModel < - ReactingMultiphaseCloud + ReactingMultiphaseCloud >& surfaceReaction() const; @@ -232,7 +238,7 @@ public: //- Check parcel properties void checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ); @@ -251,6 +257,12 @@ public: //- Print cloud information void info() const; + + + // I-O + + //- Write the field data for the cloud + virtual void writeFields() const; }; diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H index e02b49094d..00615f1924 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2008-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,39 +25,39 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -inline const Foam::ReactingMultiphaseCloud& -Foam::ReactingMultiphaseCloud::cloudCopy() const +template +inline const Foam::ReactingMultiphaseCloud& +Foam::ReactingMultiphaseCloud::cloudCopy() const { return cloudCopyPtr_(); } -template -inline const typename ParcelType::constantProperties& -Foam::ReactingMultiphaseCloud::constProps() const +template +inline const typename CloudType::particleType::constantProperties& +Foam::ReactingMultiphaseCloud::constProps() const { return constProps_; } -template +template inline const Foam::DevolatilisationModel < - Foam::ReactingMultiphaseCloud + Foam::ReactingMultiphaseCloud >& -Foam::ReactingMultiphaseCloud::devolatilisation() const +Foam::ReactingMultiphaseCloud::devolatilisation() const { return devolatilisationModel_; } -template +template inline const Foam::SurfaceReactionModel < - Foam::ReactingMultiphaseCloud + Foam::ReactingMultiphaseCloud >& -Foam::ReactingMultiphaseCloud::surfaceReaction() const +Foam::ReactingMultiphaseCloud::surfaceReaction() const { return surfaceReactionModel_; } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index 1bd69843b7..d2ce89b5c4 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -30,12 +30,12 @@ License // * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * // -template -void Foam::ThermoCloud::setModels() +template +void Foam::ThermoCloud::setModels() { heatTransferModel_.reset ( - HeatTransferModel >::New + HeatTransferModel >::New ( this->subModelProperties(), *this @@ -55,10 +55,10 @@ void Foam::ThermoCloud::setModels() } -template -void Foam::ThermoCloud::cloudReset(ThermoCloud& c) +template +void Foam::ThermoCloud::cloudReset(ThermoCloud& c) { - KinematicCloud::cloudReset(c); + CloudType::cloudReset(c); heatTransferModel_.reset(c.heatTransferModel_.ptr()); TIntegrator_.reset(c.TIntegrator_.ptr()); @@ -69,8 +69,8 @@ void Foam::ThermoCloud::cloudReset(ThermoCloud& c) // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::ThermoCloud::ThermoCloud +template +Foam::ThermoCloud::ThermoCloud ( const word& cloudName, const volScalarField& rho, @@ -80,7 +80,7 @@ Foam::ThermoCloud::ThermoCloud bool readFields ) : - KinematicCloud + CloudType ( cloudName, rho, @@ -139,7 +139,7 @@ Foam::ThermoCloud::ThermoCloud if (readFields) { - ParcelType::readFields(*this); + parcelType::readFields(*this); } if (this->solution().resetSourcesOnStartup()) @@ -149,14 +149,14 @@ Foam::ThermoCloud::ThermoCloud } -template -Foam::ThermoCloud::ThermoCloud +template +Foam::ThermoCloud::ThermoCloud ( - ThermoCloud& c, + ThermoCloud& c, const word& name ) : - KinematicCloud(c, name), + CloudType(c, name), thermoCloud(), cloudCopyPtr_(NULL), constProps_(c.constProps_), @@ -201,15 +201,15 @@ Foam::ThermoCloud::ThermoCloud {} -template -Foam::ThermoCloud::ThermoCloud +template +Foam::ThermoCloud::ThermoCloud ( const fvMesh& mesh, const word& name, - const ThermoCloud& c + const ThermoCloud& c ) : - KinematicCloud(mesh, name, c), + CloudType(mesh, name, c), thermoCloud(), cloudCopyPtr_(NULL), constProps_(), @@ -226,27 +226,22 @@ Foam::ThermoCloud::ThermoCloud // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -template -Foam::ThermoCloud::~ThermoCloud() +template +Foam::ThermoCloud::~ThermoCloud() {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -void Foam::ThermoCloud::checkParcelProperties +template +void Foam::ThermoCloud::checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ) { - KinematicCloud::checkParcelProperties - ( - parcel, - lagrangianDt, - fullyDescribed - ); + CloudType::checkParcelProperties(parcel, lagrangianDt, fullyDescribed); if (!fullyDescribed) { @@ -256,12 +251,12 @@ void Foam::ThermoCloud::checkParcelProperties } -template -void Foam::ThermoCloud::storeState() +template +void Foam::ThermoCloud::storeState() { cloudCopyPtr_.reset ( - static_cast*> + static_cast*> ( clone(this->name() + "Copy").ptr() ) @@ -269,51 +264,52 @@ void Foam::ThermoCloud::storeState() } -template -void Foam::ThermoCloud::restoreState() +template +void Foam::ThermoCloud::restoreState() { cloudReset(cloudCopyPtr_()); cloudCopyPtr_.clear(); } -template -void Foam::ThermoCloud::resetSourceTerms() +template +void Foam::ThermoCloud::resetSourceTerms() { - KinematicCloud::resetSourceTerms(); + CloudType::resetSourceTerms(); hsTrans_->field() = 0.0; hsCoeff_->field() = 0.0; } -template -void Foam::ThermoCloud::relaxSources +template +void Foam::ThermoCloud::relaxSources ( - const ThermoCloud& cloudOldTime + const ThermoCloud& cloudOldTime ) { - KinematicCloud::relaxSources(cloudOldTime); + CloudType::relaxSources(cloudOldTime); this->relax(hsTrans_(), cloudOldTime.hsTrans(), "hs"); } -template -void Foam::ThermoCloud::evolve() +template +void Foam::ThermoCloud::evolve() { if (this->solution().canEvolve()) { - typename ParcelType::trackData td(*this); + typename parcelType::template + TrackingData > td(*this); this->solve(td); } } -template -void Foam::ThermoCloud::info() const +template +void Foam::ThermoCloud::info() const { - KinematicCloud::info(); + CloudType::info(); } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index a9daf9c22d..f2ad466179 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -57,16 +57,23 @@ class HeatTransferModel; Class ThermoCloud Declaration \*---------------------------------------------------------------------------*/ -template +template class ThermoCloud : - public KinematicCloud, + public CloudType, public thermoCloud { +public: + + //- Type of parcel the cloud was instantiated for + typedef typename CloudType::particleType parcelType; + +private: + // Private data //- Cloud copy pointer - autoPtr > cloudCopyPtr_; + autoPtr > cloudCopyPtr_; // Private member functions @@ -83,7 +90,7 @@ protected: // Protected data //- Thermo parcel constant properties - typename ParcelType::constantProperties constProps_; + typename parcelType::constantProperties constProps_; // References to the carrier gas fields @@ -101,7 +108,7 @@ protected: // References to the cloud sub-models //- Heat transfer model - autoPtr > > + autoPtr > > heatTransferModel_; @@ -137,11 +144,13 @@ protected: // Cloud evolution functions //- Reset state of cloud - void cloudReset(ThermoCloud& c); + void cloudReset(ThermoCloud& c); public: + typedef CloudType cloudType; + // Constructors //- Construct given carrier gas fields @@ -156,29 +165,29 @@ public: ); //- Copy constructor with new name - ThermoCloud(ThermoCloud& c, const word& name); + ThermoCloud(ThermoCloud& c, const word& name); //- Copy constructor with new name - creates bare cloud ThermoCloud ( const fvMesh& mesh, const word& name, - const ThermoCloud& c + const ThermoCloud& c ); //- Construct and return clone based on (this) with new name - virtual autoPtr > clone(const word& name) + virtual autoPtr > clone(const word& name) { - return autoPtr > + return autoPtr > ( new ThermoCloud(*this, name) ); } //- Construct and return bare clone based on (this) with new name - virtual autoPtr > cloneBare(const word& name) const + virtual autoPtr > cloneBare(const word& name) const { - return autoPtr > + return autoPtr > ( new ThermoCloud(this->mesh(), name, *this) ); @@ -189,10 +198,6 @@ public: virtual ~ThermoCloud(); - //- Type of parcel the cloud was instantiated for - typedef ParcelType parcelType; - - // Member Functions // Access @@ -201,7 +206,7 @@ public: inline const ThermoCloud& cloudCopy() const; //- Return the constant properties - inline const typename ParcelType::constantProperties& + inline const typename parcelType::constantProperties& constProps() const; //- Return const access to thermo package @@ -217,7 +222,7 @@ public: // Sub-models //- Return reference to heat transfer model - inline const HeatTransferModel >& + inline const HeatTransferModel >& heatTransfer() const; @@ -272,7 +277,7 @@ public: //- Check parcel properties void checkParcelProperties ( - ParcelType& parcel, + parcelType& parcel, const scalar lagrangianDt, const bool fullyDescribed ); @@ -287,7 +292,7 @@ public: void resetSourceTerms(); //- Apply relaxation to (steady state) cloud sources - void relaxSources(const ThermoCloud& cloudOldTime); + void relaxSources(const ThermoCloud& cloudOldTime); //- Evolve the cloud void evolve(); @@ -297,7 +302,6 @@ public: //- Print cloud information void info() const; - }; diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H index f0d08a8216..36166041ea 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H @@ -29,101 +29,101 @@ using namespace Foam::constant; // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template -inline const Foam::ThermoCloud& -Foam::ThermoCloud::cloudCopy() const +template +inline const Foam::ThermoCloud& +Foam::ThermoCloud::cloudCopy() const { return cloudCopyPtr_(); } -template -inline const typename ParcelType::constantProperties& -Foam::ThermoCloud::constProps() const +template +inline const typename CloudType::particleType::constantProperties& +Foam::ThermoCloud::constProps() const { return constProps_; } -template -inline const Foam::SLGThermo& Foam::ThermoCloud::thermo() const +template +inline const Foam::SLGThermo& Foam::ThermoCloud::thermo() const { return thermo_; } -template -inline const Foam::volScalarField& Foam::ThermoCloud::T() const +template +inline const Foam::volScalarField& Foam::ThermoCloud::T() const { return T_; } -template -inline const Foam::volScalarField& Foam::ThermoCloud::p() const +template +inline const Foam::volScalarField& Foam::ThermoCloud::p() const { return p_; } -template -inline const Foam::HeatTransferModel >& -Foam::ThermoCloud::heatTransfer() const +template +inline const Foam::HeatTransferModel >& +Foam::ThermoCloud::heatTransfer() const { return heatTransferModel_; } -template +template inline const Foam::scalarIntegrationScheme& -Foam::ThermoCloud::TIntegrator() const +Foam::ThermoCloud::TIntegrator() const { return TIntegrator_; } -template -inline bool Foam::ThermoCloud::radiation() const +template +inline bool Foam::ThermoCloud::radiation() const { return radiation_; } -template +template inline Foam::DimensionedField& -Foam::ThermoCloud::hsTrans() +Foam::ThermoCloud::hsTrans() { return hsTrans_(); } -template +template inline const Foam::DimensionedField& -Foam::ThermoCloud::hsTrans() const +Foam::ThermoCloud::hsTrans() const { return hsTrans_(); } -template +template inline Foam::DimensionedField& -Foam::ThermoCloud::hsCoeff() +Foam::ThermoCloud::hsCoeff() { return hsCoeff_(); } -template +template inline const Foam::DimensionedField& -Foam::ThermoCloud::hsCoeff() const +Foam::ThermoCloud::hsCoeff() const { return hsCoeff_(); } -template +template inline Foam::tmp -Foam::ThermoCloud::Sh(volScalarField& hs) const +Foam::ThermoCloud::Sh(volScalarField& hs) const { if (debug) { @@ -159,9 +159,8 @@ Foam::ThermoCloud::Sh(volScalarField& hs) const } -template -inline Foam::tmp -Foam::ThermoCloud::Ep() const +template +inline Foam::tmp Foam::ThermoCloud::Ep() const { tmp tEp ( @@ -188,9 +187,9 @@ Foam::ThermoCloud::Ep() const const scalarField& V = this->mesh().V(); const scalar epsilon = constProps_.epsilon0(); - forAllConstIter(typename ThermoCloud, *this, iter) + forAllConstIter(typename ThermoCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); const label cellI = p.cell(); Ep[cellI] += p.nParticle()*p.areaP()*pow4(p.T()); } @@ -202,9 +201,8 @@ Foam::ThermoCloud::Ep() const } -template -inline Foam::tmp -Foam::ThermoCloud::ap() const +template +inline Foam::tmp Foam::ThermoCloud::ap() const { tmp tap ( @@ -231,9 +229,9 @@ Foam::ThermoCloud::ap() const const scalarField& V = this->mesh().V(); const scalar epsilon = constProps_.epsilon0(); - forAllConstIter(typename ThermoCloud, *this, iter) + forAllConstIter(typename ThermoCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); const label cellI = p.cell(); ap[cellI] += p.nParticle()*p.areaP(); } @@ -245,9 +243,9 @@ Foam::ThermoCloud::ap() const } -template +template inline Foam::tmp -Foam::ThermoCloud::sigmap() const +Foam::ThermoCloud::sigmap() const { tmp tsigmap ( @@ -276,9 +274,9 @@ Foam::ThermoCloud::sigmap() const const scalar epsilon = constProps_.epsilon0(); const scalar f = constProps_.f0(); - forAllConstIter(typename ThermoCloud, *this, iter) + forAllConstIter(typename ThermoCloud, *this, iter) { - const ParcelType& p = iter(); + const parcelType& p = iter(); const label cellI = p.cell(); sigmap[cellI] += p.nParticle()*p.areaP(); } diff --git a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H index 7770dbb68d..a990a09c9f 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H @@ -27,14 +27,12 @@ Class Description Cloud class to introduce kinematic parcels -SourceFiles - basicKinematicCloud.C - \*---------------------------------------------------------------------------*/ #ifndef basicKinematicCloud_H #define basicKinematicCloud_H +#include "Cloud.H" #include "KinematicCloud.H" #include "basicKinematicParcel.H" @@ -42,7 +40,7 @@ SourceFiles namespace Foam { - typedef KinematicCloud basicKinematicCloud; + typedef KinematicCloud > basicKinematicCloud; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H index b93b0eda05..65f30549b2 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H @@ -27,14 +27,14 @@ Class Description Cloud class to introduce reacting parcels -SourceFiles - BasicReactingCloud.C - \*---------------------------------------------------------------------------*/ #ifndef basicReactingCloud_H #define basicReactingCloud_H +#include "Cloud.H" +#include "KinematicCloud.H" +#include "ThermoCloud.H" #include "ReactingCloud.H" #include "basicReactingParcel.H" @@ -42,7 +42,19 @@ SourceFiles namespace Foam { - typedef ReactingCloud basicReactingCloud; + typedef ReactingCloud + < + ThermoCloud + < + KinematicCloud + < + Cloud + < + basicReactingParcel + > + > + > + > basicReactingCloud; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.H index f56c60d1fa..af97c96ae3 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/basicReactingMultiphaseCloud/basicReactingMultiphaseCloud.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2008-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,6 +32,10 @@ Description #ifndef basicReactingMultiphaseCloud_H #define basicReactingMultiphaseCloud_H +#include "Cloud.H" +#include "KinematicCloud.H" +#include "ThermoCloud.H" +#include "ReactingCloud.H" #include "ReactingMultiphaseCloud.H" #include "basicReactingMultiphaseParcel.H" @@ -40,10 +44,21 @@ Description namespace Foam { typedef ReactingMultiphaseCloud + < + ReactingCloud < - basicReactingMultiphaseParcel + ThermoCloud + < + KinematicCloud + < + Cloud + < + basicReactingMultiphaseParcel + > + > + > > - basicReactingMultiphaseCloud; + > basicReactingMultiphaseCloud; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H index df00dc82cb..92527df216 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H @@ -27,9 +27,6 @@ Class Description Cloud class to introduce thermodynamic parcels -SourceFiles - basicThermoCloud.C - \*---------------------------------------------------------------------------*/ #ifndef basicThermoCloud_H @@ -42,7 +39,16 @@ SourceFiles namespace Foam { - typedef ThermoCloud basicThermoCloud; + typedef ThermoCloud + < + KinematicCloud + < + Cloud + < + basicThermoParcel + > + > + > basicThermoCloud; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index 1fe4aa29d0..608a2d3df7 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C @@ -179,10 +179,14 @@ const Foam::vector Foam::KinematicParcel::calcVelocity scalar& Cud ) const { - const typename ParcelType::forceType& forces = td.cloud().forces(); + typedef typename TrackData::cloudType cloudType; + typedef typename cloudType::parcelType parcelType; + typedef typename cloudType::forceType forceType; + + const forceType& forces = td.cloud().forces(); // Momentum source due to particle forces - const ParcelType& p = static_cast(*this); + const parcelType& p = static_cast(*this); const forceSuSp Fcp = forces.calcCoupled(p, dt, mass, Re, mu); const forceSuSp Fncp = forces.calcNonCoupled(p, dt, mass, Re, mu); const forceSuSp Feff = Fcp + Fncp; @@ -205,7 +209,7 @@ const Foam::vector Foam::KinematicParcel::calcVelocity dUTrans += dt*(Feff.Sp()*(Ures.average() - Uc_) - Fcp.Su()); // Apply correction to velocity and dUTrans for reduced-D cases - const polyMesh& mesh = this->cloud().pMesh(); + const polyMesh& mesh = td.cloud().pMesh(); meshTools::constrainDirection(mesh, mesh.solutionD(), Unew); meshTools::constrainDirection(mesh, mesh.solutionD(), dUTrans); @@ -221,7 +225,7 @@ Foam::KinematicParcel::KinematicParcel const KinematicParcel& p ) : - Particle(p), + ParcelType(p), active_(p.active_), typeId_(p.typeId_), nParticle_(p.nParticle_), @@ -246,10 +250,10 @@ template Foam::KinematicParcel::KinematicParcel ( const KinematicParcel& p, - const KinematicCloud& c + const polyMesh& mesh ) : - Particle(p, c), + ParcelType(p, mesh), active_(p.active_), typeId_(p.typeId_), nParticle_(p.nParticle_), @@ -280,7 +284,8 @@ bool Foam::KinematicParcel::move const scalar trackTime ) { - ParcelType& p = static_cast(*this); + typename TrackData::cloudType::parcelType& p = + static_cast(*this); td.switchProcessor = false; td.keepParticle = true; @@ -385,7 +390,9 @@ template template void Foam::KinematicParcel::hitFace(TrackData& td) { - ParcelType& p = static_cast(*this); + typename TrackData::cloudType::parcelType& p = + static_cast(*this); + td.cloud().postProcessing().postFace(p); } @@ -406,7 +413,8 @@ bool Foam::KinematicParcel::hitPatch const tetIndices& tetIs ) { - ParcelType& p = static_cast(*this); + typename TrackData::cloudType::parcelType& p = + static_cast(*this); // Invoke post-processing model td.cloud().postProcessing().postPatch(p, patchI); @@ -422,7 +430,7 @@ bool Foam::KinematicParcel::hitPatch // Invoke patch interaction model return td.cloud().patchInteraction().correct ( - static_cast(*this), + p, pp, td.keepParticle, trackFraction, @@ -432,20 +440,6 @@ bool Foam::KinematicParcel::hitPatch } -template -bool Foam::KinematicParcel::hitPatch -( - const polyPatch& pp, - int& td, - const label patchI, - const scalar trackFraction, - const tetIndices& tetIs -) -{ - return false; -} - - template template void Foam::KinematicParcel::hitProcessorPatch @@ -458,15 +452,6 @@ void Foam::KinematicParcel::hitProcessorPatch } -template -void Foam::KinematicParcel::hitProcessorPatch -( - const processorPolyPatch&, - int& -) -{} - - template template void Foam::KinematicParcel::hitWallPatch @@ -480,16 +465,6 @@ void Foam::KinematicParcel::hitWallPatch } -template -void Foam::KinematicParcel::hitWallPatch -( - const wallPolyPatch&, - int&, - const tetIndices& -) -{} - - template template void Foam::KinematicParcel::hitPatch @@ -502,19 +477,10 @@ void Foam::KinematicParcel::hitPatch } -template -void Foam::KinematicParcel::hitPatch -( - const polyPatch&, - int& -) -{} - - template void Foam::KinematicParcel::transformProperties(const tensor& T) { - Particle::transformProperties(T); + ParcelType::transformProperties(T); U_ = transform(T, U_); @@ -532,7 +498,7 @@ void Foam::KinematicParcel::transformProperties const vector& separation ) { - Particle::transformProperties(separation); + ParcelType::transformProperties(separation); } diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H index 838c8bf9d6..92a6b4038d 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H @@ -45,7 +45,7 @@ SourceFiles #ifndef KinematicParcel_H #define KinematicParcel_H -#include "Particle.H" +#include "particle.H" #include "IOstream.H" #include "autoPtr.H" #include "interpolation.H" @@ -56,7 +56,7 @@ SourceFiles #include "labelFieldIOField.H" #include "vectorFieldIOField.H" -#include "ParticleForceList.H" +// #include "ParticleForceList.H" // TODO // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -86,14 +86,10 @@ Ostream& operator<< template class KinematicParcel : - public Particle + public ParcelType { public: - //- Type of force to be used by this parcel type - typedef ParticleForceList > forceType; - - //- Class to hold kinematic particle constant properties class constantProperties { @@ -165,10 +161,10 @@ public: }; - //- Class used to pass kinematic tracking data to the trackToFace function - class trackData + template + class TrackingData : - public Particle::trackData + public ParcelType::template TrackingData { public: @@ -184,10 +180,6 @@ public: // Private data - //- Reference to the cloud containing this particle - KinematicCloud& cloud_; - - // Interpolators for continuous phase fields //- Density interpolator @@ -208,23 +200,20 @@ public: trackPart part_; - public: + public: // Constructors //- Construct from components - inline trackData + inline TrackingData ( - KinematicCloud& cloud, + CloudType& cloud, trackPart part = tpLinearTrack ); // Member functions - //- Return access to the owner cloud - inline KinematicCloud& cloud(); - //- Return conat access to the interpolator for continuous // phase density field inline const interpolation& rhoInterp() const; @@ -343,16 +332,13 @@ public: TypeName("KinematicParcel"); - friend class Cloud; - - // Constructors //- Construct from owner, position, and cloud owner // Other properties initialised as null inline KinematicParcel ( - KinematicCloud& owner, + const polyMesh& mesh, const vector& position, const label cellI, const label tetFaceI, @@ -362,7 +348,7 @@ public: //- Construct from components inline KinematicParcel ( - KinematicCloud& owner, + const polyMesh& mesh, const vector& position, const label cellI, const label tetFaceI, @@ -381,7 +367,7 @@ public: //- Construct from Istream KinematicParcel ( - const Cloud& c, + const polyMesh& mesh, Istream& is, bool readFields = true ); @@ -390,33 +376,41 @@ public: KinematicParcel(const KinematicParcel& p); //- Construct as a copy - KinematicParcel - ( - const KinematicParcel& p, - const KinematicCloud& c - ); + KinematicParcel(const KinematicParcel& p, const polyMesh& mesh); //- Construct and return a (basic particle) clone - virtual autoPtr > clone() const + virtual autoPtr clone() const { - return autoPtr >(new KinematicParcel(*this)); + return autoPtr(new KinematicParcel(*this)); } //- Construct and return a (basic particle) clone - virtual autoPtr > clone - ( - const Cloud& c - ) const + virtual autoPtr clone(const polyMesh& mesh) const { - return autoPtr > - ( - new KinematicParcel + return autoPtr(new KinematicParcel(*this, mesh)); + } + + //- Factory class to read-construct particles used for + // parallel transfer + class iNew + { + const polyMesh& mesh_; + + public: + + iNew(const polyMesh& mesh) + : + mesh_(mesh) + {} + + autoPtr > operator()(Istream& is) const + { + return autoPtr > ( - *this, - static_cast&>(c) - ) - ); - } + new KinematicParcel(mesh_, is, true) + ); + } + }; // Member Functions @@ -629,17 +623,6 @@ public: const tetIndices& tetIs ); - //- Overridable function to handle the particle hitting a patch - // Executed before other patch-hitting functions without trackData - bool hitPatch - ( - const polyPatch& p, - int& td, - const label patchI, - const scalar trackFraction, - const tetIndices& tetIs - ); - //- Overridable function to handle the particle hitting a // processorPatch template @@ -649,14 +632,6 @@ public: TrackData& td ); - //- Overridable function to handle the particle hitting a - // processorPatch without trackData - void hitProcessorPatch - ( - const processorPolyPatch&, - int& - ); - //- Overridable function to handle the particle hitting a wallPatch template void hitWallPatch @@ -666,15 +641,6 @@ public: const tetIndices& ); - //- Overridable function to handle the particle hitting a wallPatch - // without trackData - void hitWallPatch - ( - const wallPolyPatch&, - int&, - const tetIndices& - ); - //- Overridable function to handle the particle hitting a polyPatch template void hitPatch @@ -683,14 +649,6 @@ public: TrackData& td ); - //- Overridable function to handle the particle hitting a polyPatch - //- without trackData - void hitPatch - ( - const polyPatch&, - int& - ); - //- Transform the physical properties of the particle // according to the given transformation tensor void transformProperties(const tensor& T); @@ -703,10 +661,12 @@ public: // I-O //- Read - static void readFields(Cloud& c); + template + static void readFields(CloudType& c); //- Write - static void writeFields(const Cloud& c); + template + static void writeFields(const CloudType& c); // Ostream Operator @@ -726,6 +686,7 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #include "KinematicParcelI.H" +#include "KinematicParcelTrackingDataI.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H index c4cd31b5d3..b5466ca5d3 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H @@ -86,57 +86,20 @@ inline Foam::KinematicParcel::constantProperties::constantProperties } -template -inline Foam::KinematicParcel::trackData::trackData -( - KinematicCloud& cloud, - trackPart part -) -: - Particle::trackData(cloud), - cloud_(cloud), - rhoInterp_ - ( - interpolation::New - ( - cloud.solution().interpolationSchemes(), - cloud.rho() - ) - ), - UInterp_ - ( - interpolation::New - ( - cloud.solution().interpolationSchemes(), - cloud.U() - ) - ), - muInterp_ - ( - interpolation::New - ( - cloud.solution().interpolationSchemes(), - cloud.mu() - ) - ), - g_(cloud.g().value()), - part_(part) -{} - - template inline Foam::KinematicParcel::KinematicParcel ( - KinematicCloud& owner, + const polyMesh& owner, const vector& position, const label cellI, const label tetFaceI, const label tetPtI ) : - Particle(owner, position, cellI, tetFaceI, tetPtI), + ParcelType(owner, position, cellI, tetFaceI, tetPtI), active_(true), - typeId_(owner.constProps().parcelTypeId()), +// typeId_(owner.constProps().parcelTypeId()), + typeId_(-1), nParticle_(0), d_(0.0), dTarget_(0.0), @@ -152,13 +115,17 @@ inline Foam::KinematicParcel::KinematicParcel rhoc_(0.0), Uc_(vector::zero), muc_(0.0) -{} +{ + // TODO + WarningIn("inline Foam::KinematicParcel::KinematicParcel") + << "typeId set to -1 instead of constProps value" << endl; +} template inline Foam::KinematicParcel::KinematicParcel ( - KinematicCloud& owner, + const polyMesh& owner, const vector& position, const label cellI, const label tetFaceI, @@ -174,7 +141,7 @@ inline Foam::KinematicParcel::KinematicParcel const constantProperties& constProps ) : - Particle(owner, position, cellI, tetFaceI, tetPtI), + ParcelType(owner, position, cellI, tetFaceI, tetPtI), active_(true), typeId_(typeId), nParticle_(nParticle0), @@ -239,8 +206,7 @@ Foam::KinematicParcel::constantProperties::minParticleMass() const template inline Foam::scalar -Foam::KinematicParcel:: -constantProperties::youngsModulus() const +Foam::KinematicParcel::constantProperties::youngsModulus() const { return youngsModulus_; } @@ -248,71 +214,12 @@ constantProperties::youngsModulus() const template inline Foam::scalar -Foam::KinematicParcel:: -constantProperties::poissonsRatio() const +Foam::KinematicParcel::constantProperties::poissonsRatio() const { return poissonsRatio_; } -// * * * * * * * * * * * trackData Member Functions * * * * * * * * * * * * // - -template -inline Foam::KinematicCloud& -Foam::KinematicParcel::trackData::cloud() -{ - return cloud_; -} - - -template -inline const Foam::interpolation& -Foam::KinematicParcel::trackData::rhoInterp() const -{ - return rhoInterp_(); -} - - -template -inline const Foam::interpolation& -Foam::KinematicParcel::trackData::UInterp() const -{ - return UInterp_(); -} - - -template -inline const Foam::interpolation& -Foam::KinematicParcel::trackData::muInterp() const -{ - return muInterp_(); -} - - -template -inline const Foam::vector& -Foam::KinematicParcel::trackData::g() const -{ - return g_; -} - - -template -inline typename Foam::KinematicParcel::trackData::trackPart -Foam::KinematicParcel::trackData::part() const -{ - return part_; -} - - -template -inline typename Foam::KinematicParcel::trackData::trackPart& -Foam::KinematicParcel::trackData::part() -{ - return part_; -} - - // * * * * * * * KinematicParcel Member Functions * * * * * * * // template @@ -568,7 +475,7 @@ inline Foam::scalar Foam::KinematicParcel::massCell const label cellI ) const { - return rhoc_*this->cloud().pMesh().cellVolumes()[cellI]; + return rhoc_*this->mesh().cellVolumes()[cellI]; } diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C index b2b4dd822d..9fcf07610b 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C @@ -32,7 +32,7 @@ License template Foam::string Foam::KinematicParcel::propHeader = - Particle::propHeader + ParcelType::propHeader + " active" + " typeId" + " nParticle" @@ -60,12 +60,12 @@ Foam::string Foam::KinematicParcel::propHeader = template Foam::KinematicParcel::KinematicParcel ( - const Cloud& cloud, + const polyMesh& mesh, Istream& is, bool readFields ) : - Particle(cloud, is, readFields), + ParcelType(mesh, is, readFields), active_(false), typeId_(0), nParticle_(0.0), @@ -130,20 +130,21 @@ Foam::KinematicParcel::KinematicParcel is.check ( "KinematicParcel::KinematicParcel" - "(const Cloud&, Istream&, bool)" + "(const polyMesh&, Istream&, bool)" ); } template -void Foam::KinematicParcel::readFields(Cloud& c) +template +void Foam::KinematicParcel::readFields(CloudType& c) { if (!c.size()) { return; } - Particle::readFields(c); + ParcelType::readFields(c); IOField