diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index 9a2a7cd19b..db8165edcf 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -172,7 +172,7 @@ void Foam::KinematicCloud::solve evolveCloud(td); - td.cloud().relaxSources(); + td.cloud().relaxSources(td.cloud().cloudCopy()); } td.cloud().info(); @@ -545,13 +545,13 @@ Foam::KinematicCloud::KinematicCloud Cloud(c.mesh(), name, c), kinematicCloud(), cloudCopyPtr_(NULL), - mesh_(c.mesh()), + mesh_(c.mesh_), particleProperties_(c.particleProperties_), solution_(c.solution_), constProps_(c.constProps_), subModelProperties_(c.subModelProperties_), rndGen_(c.rndGen_, true), - cellOccupancyPtr_(c.cellOccupancyPtr_->clone()), + cellOccupancyPtr_(NULL), rho_(c.rho_), U_(c.U_), mu_(c.mu_), @@ -578,9 +578,7 @@ Foam::KinematicCloud::KinematicCloud IOobject::NO_WRITE, false ), - mesh_, - c.UTrans_().dimensions(), - c.UTrans_().field() + c.UTrans_() ) ), UCoeff_ @@ -722,9 +720,12 @@ void Foam::KinematicCloud::relax template -void Foam::KinematicCloud::relaxSources() +void Foam::KinematicCloud::relaxSources +( + const KinematicCloud& cloudOldTime +) { - this->relax(UTrans_(), cloudCopyPtr_->UTrans(), "U"); + this->relax(UTrans_(), cloudOldTime.UTrans(), "U"); } diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index a43f20cbb7..74c2c03909 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -418,6 +418,9 @@ public: // Access + //- Return a reference to the cloud copy + inline const KinematicCloud& cloudCopy() const; + //- If the collision model controls the wall interaction, // then the wall impact distance should be zero. // Otherwise, it should be allowed to be the value from @@ -615,7 +618,7 @@ public: ) const; //- Apply relaxation to (steady state) cloud sources - void relaxSources(); + 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 3643f52cd5..4b8c87e3cd 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -126,6 +126,14 @@ Foam::KinematicCloud::cloudSolution::resetSourcesOnStartup() const // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +inline const KinematicCloud& +Foam::KinematicCloud::cloudCopy() const +{ + return cloudCopyPtr_(); +} + + template inline bool Foam::KinematicCloud::hasWallImpactDistance() const { diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index bb4938849f..dfebcebc85 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -275,16 +275,19 @@ void Foam::ReactingCloud::resetSourceTerms() template -void Foam::ReactingCloud::relaxSources() +void Foam::ReactingCloud::relaxSources +( + const ReactingCloud& cloudOldTime +) { - ThermoCloud::relaxSources(); + typedef DimensionedField dsfType; + + ThermoCloud::relaxSources(cloudOldTime); forAll(rhoTrans_, fieldI) { - DimensionedField& rhoT = - rhoTrans_[fieldI]; - const DimensionedField& rhoT0 = - cloudCopyPtr_->rhoTrans()[fieldI]; + dsfType& rhoT = rhoTrans_[fieldI]; + const dsfType& rhoT0 = cloudOldTime.rhoTrans()[fieldI]; this->relax(rhoT, rhoT0, "rho"); } } diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index c968a723f1..1b16c4b5aa 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -191,6 +191,9 @@ public: // Access + //- Return a reference to the cloud copy + inline const ReactingCloud& cloudCopy() const; + //- Return the constant properties inline const typename ParcelType::constantProperties& constProps() const; @@ -215,6 +218,10 @@ public: inline DimensionedField& rhoTrans(const label i); + //- Return const access to mass source fields + inline const PtrList >& + rhoTrans() const; + //- Return reference to mass source fields inline PtrList >& rhoTrans(); @@ -264,7 +271,7 @@ public: void resetSourceTerms(); //- Apply relaxation to (steady state) cloud sources - void relaxSources(); + void relaxSources(const ReactingCloud& cloudOldTime); //- Evolve the cloud void evolve(); diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H index b9c23839ec..f1c931d17c 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H @@ -25,6 +25,14 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +inline const ReactingCloud& +Foam::ReactingCloud::cloudCopy() const +{ + return cloudCopyPtr_(); +} + + template inline const typename ParcelType::constantProperties& Foam::ReactingCloud::constProps() const @@ -57,6 +65,15 @@ Foam::ReactingCloud::rhoTrans(const label i) } +template +inline +const Foam::PtrList >& +Foam::ReactingCloud::rhoTrans() const +{ + return rhoTrans_; +} + + template inline Foam::PtrList >& Foam::ReactingCloud::rhoTrans() diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H index 2a554c5b36..8226112fd7 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.H @@ -187,6 +187,9 @@ public: // Access + //- Return a reference to the cloud copy + inline const ReactingMultiphaseCloud& cloudCopy() const; + //- Return the constant properties inline const typename ParcelType::constantProperties& constProps() const; diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H index 87130d22cb..354f38985c 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloudI.H @@ -25,6 +25,14 @@ License // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +inline const ReactingMultiphaseCloud& +Foam::ReactingMultiphaseCloud::cloudCopy() const +{ + return cloudCopyPtr_(); +} + + template inline const typename ParcelType::constantProperties& Foam::ReactingMultiphaseCloud::constProps() const diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index 61a19d4762..346367e5b7 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -272,11 +272,14 @@ void Foam::ThermoCloud::resetSourceTerms() template -void Foam::ThermoCloud::relaxSources() +void Foam::ThermoCloud::relaxSources +( + const ThermoCloud& cloudOldTime +) { - KinematicCloud::relaxSources(); + KinematicCloud::relaxSources(cloudOldTime); - this->relax(hsTrans_(), cloudCopyPtr_->hsTrans(), "hs"); + this->relax(hsTrans_(), cloudOldTime.hsTrans(), "hs"); } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index 0d5a75f4ae..a46c3c5621 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -191,6 +191,9 @@ public: // Access + //- Return a reference to the cloud copy + inline const ThermoCloud& cloudCopy() const; + //- Return the constant properties inline const typename ParcelType::constantProperties& constProps() const; @@ -278,7 +281,7 @@ public: void resetSourceTerms(); //- Apply relaxation to (steady state) cloud sources - void relaxSources(); + void relaxSources(const ThermoCloud& cloudOldTime); //- Evolve the cloud void evolve(); diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H index 79e26fa166..15d2d775d7 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H @@ -29,6 +29,14 @@ using namespace Foam::constant; // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template +inline const ThermoCloud& +Foam::ThermoCloud::cloudCopy() const +{ + return cloudCopyPtr_(); +} + + template inline const typename ParcelType::constantProperties& Foam::ThermoCloud::constProps() const