diff --git a/src/lagrangian/Allwmake b/src/lagrangian/Allwmake index 4dae508c2f551d8c07aa91544be68be476a2057b..b3ab63389938afb14bcc05d8a21779a09c1033cb 100755 --- a/src/lagrangian/Allwmake +++ b/src/lagrangian/Allwmake @@ -3,6 +3,5 @@ set -x wmake libso basic wmake libso solidParticle -wmake libso basic wmake libso intermediate wmake libso dieselSpray diff --git a/src/lagrangian/basic/Cloud/Cloud.C b/src/lagrangian/basic/Cloud/Cloud.C index 84f47162034f56c9ffe5c5ab446700b14229fb9a..fffa0506f8223c8495d5b219f81c962e94b4b021 100644 --- a/src/lagrangian/basic/Cloud/Cloud.C +++ b/src/lagrangian/basic/Cloud/Cloud.C @@ -43,7 +43,6 @@ Foam::Cloud<ParticleType>::Cloud cloud(pMesh), IDLList<ParticleType>(particles), polyMesh_(pMesh), - cloudName_("defaultCloud"), allFaces_(pMesh.faces()), points_(pMesh.points()), cellFaces_(pMesh.cells()), @@ -65,7 +64,6 @@ Foam::Cloud<ParticleType>::Cloud cloud(pMesh, cloudName), IDLList<ParticleType>(particles), polyMesh_(pMesh), - cloudName_(cloudName), allFaces_(pMesh.faces()), points_(pMesh.points()), cellFaces_(pMesh.cells()), diff --git a/src/lagrangian/basic/Cloud/Cloud.H b/src/lagrangian/basic/Cloud/Cloud.H index f5e70593f376a7f585df167f2a381ef9fb548178..c26c592fe0b03a8f298a747b1bee44deb5a5ee2b 100644 --- a/src/lagrangian/basic/Cloud/Cloud.H +++ b/src/lagrangian/basic/Cloud/Cloud.H @@ -26,7 +26,6 @@ Class Foam::Cloud Description - Foam::Cloud SourceFiles Cloud.C @@ -74,7 +73,6 @@ class Cloud // Private data const polyMesh& polyMesh_; - const word cloudName_; const faceList& allFaces_; const vectorField& points_; const cellList& cellFaces_; @@ -152,12 +150,6 @@ public: return polyMesh_; } - //- Return the cloud name reference - const word& cloudName() const - { - return cloudName_; - } - //- Is this global face an internal face? bool internalFace(const label facei) const { @@ -213,6 +205,11 @@ public: return IDLList<ParticleType>::end(); }; + void clear() + { + return IDLList<ParticleType>::clear(); + }; + // Edit diff --git a/src/lagrangian/basic/Cloud/CloudIO.C b/src/lagrangian/basic/Cloud/CloudIO.C index a6e03579aaee9a258798e9bc86a50166c0c0e412..ef67531fca9ec214cd5a5a7043ebf8fe2d1ed388 100644 --- a/src/lagrangian/basic/Cloud/CloudIO.C +++ b/src/lagrangian/basic/Cloud/CloudIO.C @@ -60,7 +60,6 @@ Foam::Cloud<ParticleType>::Cloud : cloud(pMesh), polyMesh_(pMesh), - cloudName_("defaultCloud"), allFaces_(pMesh.faces()), points_(pMesh.points()), cellFaces_(pMesh.cells()), @@ -83,7 +82,6 @@ Foam::Cloud<ParticleType>::Cloud : cloud(pMesh, cloudName), polyMesh_(pMesh), - cloudName_(cloudName), allFaces_(pMesh.faces()), points_(pMesh.points()), cellFaces_(pMesh.cells()), diff --git a/src/lagrangian/basic/IOPosition/IOPosition.C b/src/lagrangian/basic/IOPosition/IOPosition.C index 89d94169d1392ff339ad4be5146e1b91f7123925..09cda64c362455d44f7542117fcb151c3b8bc79b 100644 --- a/src/lagrangian/basic/IOPosition/IOPosition.C +++ b/src/lagrangian/basic/IOPosition/IOPosition.C @@ -22,6 +22,8 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Description + \*---------------------------------------------------------------------------*/ #include "IOPosition.H" diff --git a/src/lagrangian/basic/Particle/Particle.C b/src/lagrangian/basic/Particle/Particle.C index 68266a631b74fda90c29ccd9e65d03950c3ccaba..98ca9669d1ce3351434082d6fcef337c1c9f049c 100644 --- a/src/lagrangian/basic/Particle/Particle.C +++ b/src/lagrangian/basic/Particle/Particle.C @@ -39,7 +39,7 @@ template<class ParticleType> Foam::labelList Foam::Particle<ParticleType>::findFaces ( const vector& position -) +) const { const polyMesh& mesh = cloud_.polyMesh_; const labelList& faces = mesh.cells()[celli_]; @@ -69,7 +69,7 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces const vector& position, const label celli, const scalar stepFraction -) +) const { const polyMesh& mesh = cloud_.polyMesh_; const labelList& faces = mesh.cells()[celli]; @@ -94,11 +94,11 @@ Foam::labelList Foam::Particle<ParticleType>::findFaces template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::prepareForParallelTransfer ( const label patchi, - TrackingData& td + TrackData& td ) { // Convert the face index to be local to the processor patch @@ -107,11 +107,11 @@ void Foam::Particle<ParticleType>::prepareForParallelTransfer template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::correctAfterParallelTransfer ( const label patchi, - TrackingData& td + TrackData& td ) { const processorPolyPatch& ppp = @@ -156,7 +156,15 @@ void Foam::Particle<ParticleType>::correctAfterParallelTransfer } // Reset the face index for the next tracking operation - facei_ = -1; + if (stepFraction_ > (1.0 - SMALL)) + { + stepFraction_ = 1.0; + facei_ = -1; + } + else + { + facei_ += ppp.start(); + } } @@ -181,11 +189,11 @@ Foam::Particle<ParticleType>::Particle // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class ParticleType> -template<class TrackingData> +template<class TrackData> Foam::label Foam::Particle<ParticleType>::track ( const vector& endPosition, - TrackingData& td + TrackData& td ) { facei_ = -1; @@ -200,6 +208,7 @@ Foam::label Foam::Particle<ParticleType>::track } + template<class ParticleType> Foam::label Foam::Particle<ParticleType>::track(const vector& endPosition) { @@ -207,13 +216,12 @@ Foam::label Foam::Particle<ParticleType>::track(const vector& endPosition) return track(endPosition, dummyTd); } - template<class ParticleType> -template<class TrackingData> +template<class TrackData> Foam::scalar Foam::Particle<ParticleType>::trackToFace ( const vector& endPosition, - TrackingData& td + TrackData& td ) { const polyMesh& mesh = cloud_.polyMesh_; @@ -301,8 +309,7 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace { FatalErrorIn ( - "Particle::trackToFace" - "(const vector&, TrackingData&)" + "Particle::trackToFace(const vector&, TrackData&)" )<< "addressing failure" << nl << abort(FatalError); } @@ -389,7 +396,6 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace return trackFraction; } - template<class ParticleType> Foam::scalar Foam::Particle<ParticleType>::trackToFace ( @@ -400,7 +406,6 @@ Foam::scalar Foam::Particle<ParticleType>::trackToFace return trackToFace(endPosition, dummyTd); } - template<class ParticleType> void Foam::Particle<ParticleType>::transformPosition(const tensor& T) { @@ -419,11 +424,11 @@ void Foam::Particle<ParticleType>::transformProperties(const vector&) template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::hitWedgePatch ( const wedgePolyPatch& wpp, - TrackingData& + TrackData& ) { vector nf = wpp.faceAreas()[wpp.whichFace(facei_)]; @@ -434,11 +439,11 @@ void Foam::Particle<ParticleType>::hitWedgePatch template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::hitSymmetryPatch ( const symmetryPolyPatch& spp, - TrackingData& + TrackData& ) { vector nf = spp.faceAreas()[spp.whichFace(facei_)]; @@ -449,11 +454,11 @@ void Foam::Particle<ParticleType>::hitSymmetryPatch template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::hitCyclicPatch ( const cyclicPolyPatch& cpp, - TrackingData& + TrackData& ) { label patchFacei_ = cpp.whichFace(facei_); @@ -481,31 +486,31 @@ void Foam::Particle<ParticleType>::hitCyclicPatch template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::hitProcessorPatch ( const processorPolyPatch& spp, - TrackingData& td + TrackData& td ) {} template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::hitWallPatch ( const wallPolyPatch& spp, - TrackingData& + TrackData& ) {} template<class ParticleType> -template<class TrackingData> +template<class TrackData> void Foam::Particle<ParticleType>::hitPatch ( const polyPatch& spp, - TrackingData& + TrackData& ) {} diff --git a/src/lagrangian/basic/Particle/Particle.H b/src/lagrangian/basic/Particle/Particle.H index 40556a204ccf141d51498f7c17115564b0bfa7d6..2dc821710f084ddec63f58fb575bcbea92ccd2a3 100644 --- a/src/lagrangian/basic/Particle/Particle.H +++ b/src/lagrangian/basic/Particle/Particle.H @@ -26,7 +26,6 @@ Class Foam::Particle Description - Foam::Particle \*---------------------------------------------------------------------------*/ @@ -79,6 +78,41 @@ class Particle public IDLList<ParticleType>::link { +public: + + //- Class used to pass tracking data to the trackToFace function + class trackData + { + + // Private data + + //- Reference to the cloud containing this particle + Cloud<ParticleType>& cloud_; + + + public: + + bool switchProcessor; + bool keepParticle; + + + // Constructors + + inline trackData + ( + Cloud<ParticleType>& cloud + ); + + + // Member functions + + //- Return a reference to the cloud + inline Cloud<ParticleType>& cloud(); + }; + + +private: + // Private data //- Reference to the particle cloud @@ -108,7 +142,7 @@ class Particle const vector& to, const label facei, const scalar stepFraction - ); + ) const; //- Return the 'lambda' value for the position, p, on the face, // where, p = from + lamda*(to - from) @@ -118,13 +152,13 @@ class Particle const vector& from, const vector& to, const label facei - ); + ) const; //- Return the faces between position and cell centre labelList findFaces ( const vector& position - ); + ) const; //- Return the faces between position and cell centre labelList findFaces @@ -132,80 +166,91 @@ class Particle const vector& position, const label celli, const scalar stepFraction - ); + ) const; protected: + // Patch interactions + //- Overridable function to handle the particle hitting a wedgePatch - template<class TrackingData> + template<class TrackData> void hitWedgePatch ( const wedgePolyPatch&, - TrackingData& td + TrackData& td ); - //- Overridable function to handle the particle hitting a symmetryPatch - template<class TrackingData> + //- Overridable function to handle the particle hitting a + // symmetryPatch + template<class TrackData> void hitSymmetryPatch ( const symmetryPolyPatch&, - TrackingData& td + TrackData& td ); //- Overridable function to handle the particle hitting a cyclicPatch - template<class TrackingData> + template<class TrackData> void hitCyclicPatch ( const cyclicPolyPatch&, - TrackingData& td + TrackData& td ); - //- Overridable function to handle the particle hitting a processorPatch - template<class TrackingData> + //- Overridable function to handle the particle hitting a + // processorPatch + template<class TrackData> void hitProcessorPatch ( const processorPolyPatch&, - TrackingData& td + TrackData& td ); //- Overridable function to handle the particle hitting a wallPatch - template<class TrackingData> + template<class TrackData> void hitWallPatch ( const wallPolyPatch&, - TrackingData& td + TrackData& td ); - //- Overridable function to handle the particle hitting a general patch - template<class TrackingData> + //- Overridable function to handle the particle hitting a + // general patch + template<class TrackData> void hitPatch ( const polyPatch&, - TrackingData& td + TrackData& td ); + + // Transformations + //- Transform the position the particle // according to the given transformation tensor - void transformPosition(const tensor& T); + virtual void transformPosition(const tensor& T); //- Transform the physical properties of the particle // according to the given transformation tensor - void transformProperties(const tensor& T); + virtual void transformProperties(const tensor& T); //- Transform the physical properties of the particle // according to the given separation vector - void transformProperties(const vector& separation); + virtual void transformProperties(const vector& separation); + + + // Parallel transfer //- Convert global addressing to the processor patch // local equivalents - template<class TrackingData> - void prepareForParallelTransfer(const label patchi, TrackingData& td); + template<class TrackData> + void prepareForParallelTransfer(const label patchi, TrackData& td); //- Convert processor patch addressing to the global equivalents // and set the celli to the face-neighbour - template<class TrackingData> - void correctAfterParallelTransfer(const label patchi, TrackingData& td); + template<class TrackData> + void correctAfterParallelTransfer(const label patchi, TrackData& td); public: @@ -217,36 +262,6 @@ public: TypeName("Particle"); - //- Class used to pass tracking data to the trackToFace function - class trackData - { - - // Private data - - //- Reference to the cloud containing this particle - Cloud<ParticleType>& cloud_; - - - public: - - bool switchProcessor; - bool keepParticle; - - - // Constructors - - inline trackData - ( - Cloud<ParticleType>& cloud - ); - - - // Member functions - - inline Cloud<ParticleType>& cloud(); - }; - - // Constructors //- Construct from components @@ -265,7 +280,8 @@ public: bool readFields = true ); - //- Factory class to read-construct particles used for parallel transfer + //- Factory class to read-construct particles used for + // parallel transfer class iNew { @@ -288,7 +304,7 @@ public: }; - // Destructor + //- Destructor virtual ~Particle() {} @@ -299,7 +315,7 @@ public: // Access //- Return true if particle is in cell - inline bool inCell(); + inline bool inCell() const; //- Return true if position is in cell i inline bool inCell @@ -307,7 +323,7 @@ public: const vector& position, const label celli, const scalar stepFraction - ); + ) const; //- Return current particle position inline const vector& position() const; @@ -337,7 +353,11 @@ public: inline label patch(const label facei) const; //- Which face of this patch is this particle on - inline label patchFace(const label patchi, const label facei) const; + inline label patchFace + ( + const label patchi, + const label facei + ) const; //- The nearest distance to a wall that // the particle can be in the n direction @@ -359,14 +379,14 @@ public: // the fraction of the time-step completed. // Returns the boundary face index if the track stops at the // boundary, -1 otherwise. - template<class TrackingData> + template<class TrackData> label track ( const vector& endPosition, - TrackingData& td + TrackData& td ); - //- Calls the templated track with dummy TrackingData + //- Calls the templated track with dummy TrackData label track(const vector& endPosition); //- Track particle to a given position and returns 1.0 if the @@ -375,17 +395,18 @@ public: // completed. // on entry 'stepFraction()' should be set to the fraction of the // time-step at which the tracking starts. - template<class TrackingData> + template<class TrackData> scalar trackToFace ( const vector& endPosition, - TrackingData& td + TrackData& td ); - //- Calls the templated trackToFace with dummy TrackingData + //- Calls the templated trackToFace with dummy TrackData scalar trackToFace(const vector& endPosition); - //- Return the index of the face to be used in the interpolation routine + //- Return the index of the face to be used in the interpolation + // routine inline label faceInterpolation() const; diff --git a/src/lagrangian/basic/Particle/ParticleI.H b/src/lagrangian/basic/Particle/ParticleI.H index e26789541238dbe0a449396b633ba9b9da4eb317..4ffc8c53f1f0b7b6d3139f2be4b25d66c3b5366e 100644 --- a/src/lagrangian/basic/Particle/ParticleI.H +++ b/src/lagrangian/basic/Particle/ParticleI.H @@ -40,7 +40,7 @@ inline scalar Particle<ParticleType>::lambda const vector& to, const label facei, const scalar stepFraction -) +) const { const polyMesh& mesh = cloud_.polyMesh_; bool movingMesh = mesh.moving(); @@ -71,7 +71,6 @@ inline scalar Particle<ParticleType>::lambda // for a moving mesh we need to reconstruct the old // Sf and Cf from oldPoints (they aren't stored) - // NN. const vectorField& oldPoints = mesh.oldPoints(); @@ -100,7 +99,7 @@ inline scalar Particle<ParticleType>::lambda // find center of rotation vector omega = Sf0 ^ Sf; scalar magOmega = mag(omega); - omega /= magOmega+SMALL; + omega /= magOmega + SMALL; vector n0 = omega ^ Sf0; scalar lam = ((Cf - Cf0) & Sf)/(n0 & Sf); vector r0 = Cf0 + lam*n0; @@ -188,7 +187,7 @@ inline scalar Particle<ParticleType>::lambda const vector& from, const vector& to, const label facei -) +) const { const polyMesh& mesh = cloud_.polyMesh_; @@ -235,7 +234,7 @@ inline scalar Particle<ParticleType>::lambda template<class ParticleType> -inline bool Particle<ParticleType>::inCell() +inline bool Particle<ParticleType>::inCell() const { labelList faces = findFaces(position_); @@ -249,7 +248,7 @@ inline bool Particle<ParticleType>::inCell const vector& position, const label celli, const scalar stepFraction -) +) const { labelList faces = findFaces(position, celli, stepFraction); @@ -277,7 +276,6 @@ inline Cloud<ParticleType>& Particle<ParticleType>::trackData::cloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -//- Return reference to the particle cloud template<class ParticleType> inline const Cloud<ParticleType>& Particle<ParticleType>::cloud() const { @@ -313,7 +311,6 @@ inline label Particle<ParticleType>::face() const } -//- Is the particle on a boundary face? template<class ParticleType> inline bool Particle<ParticleType>::onBoundary() const { diff --git a/src/lagrangian/basic/indexedParticle/indexedParticle.H b/src/lagrangian/basic/indexedParticle/indexedParticle.H index 742f0462e4c436e285aa1dc872cdc1d5fb6dcad8..259d77ebbe6434e315d3fd4337696882f1c67ac3 100644 --- a/src/lagrangian/basic/indexedParticle/indexedParticle.H +++ b/src/lagrangian/basic/indexedParticle/indexedParticle.H @@ -26,7 +26,6 @@ Class Foam::indexedParticle Description - An indexed Particle SourceFiles indexedParticleI.H diff --git a/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C b/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C index 6b86a4f8dee29c499e4add39e43c590fbba8af98..c51fc30b19ab16b13270080b361532f143add9ac 100644 --- a/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C +++ b/src/lagrangian/basic/indexedParticle/indexedParticleCloud.C @@ -22,6 +22,8 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Description + \*---------------------------------------------------------------------------*/ #include "indexedParticle.H" diff --git a/src/lagrangian/basic/lagrangianField/LagrangianField.H b/src/lagrangian/basic/lagrangianField/LagrangianField.H index 217a31fc7e9b2508932bc15fc0484c0eef713f3b..de11b91c3d361449ba1602337f151910b4fa3bf9 100644 --- a/src/lagrangian/basic/lagrangianField/LagrangianField.H +++ b/src/lagrangian/basic/lagrangianField/LagrangianField.H @@ -26,7 +26,6 @@ Class Foam::LagrangianField Description - Lagrangian Field SourceFiles LagrangianFieldI.H diff --git a/src/lagrangian/basic/passiveParticle/passiveParticle.H b/src/lagrangian/basic/passiveParticle/passiveParticle.H index 27b8eef40bb114afd969b637b53ce13727ff4d66..f5f76036c22b33b173861c768cd1f31bbdc8c60b 100644 --- a/src/lagrangian/basic/passiveParticle/passiveParticle.H +++ b/src/lagrangian/basic/passiveParticle/passiveParticle.H @@ -26,7 +26,6 @@ Class Foam::passiveParticle Description - A passive Particle SourceFiles passiveParticleI.H diff --git a/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C b/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C index 2f3c8b655744b475cbd0783ccee4cac4d2d593d6..4263d80f04b2741f98fa24db0a3313f399d3cd6a 100644 --- a/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C +++ b/src/lagrangian/basic/passiveParticle/passiveParticleCloud.C @@ -22,6 +22,8 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Description + \*---------------------------------------------------------------------------*/ #include "passiveParticle.H" diff --git a/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.H b/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.H index ae16c885e874e28ce9d9245e75224ed7d4e16fd2..c91ac209c28f582387cd026433d46eb58dfec60a 100644 --- a/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.H +++ b/src/lagrangian/basic/polyMeshInfo/polyMeshInfo.H @@ -26,7 +26,7 @@ Class Foam::polyMeshInfo Description - Foam::polyMeshInfo + SourceFiles polyMeshInfo.C diff --git a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C new file mode 100644 index 0000000000000000000000000000000000000000..4150f8b78ebb7165906af6ab41a95188d595e10f --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "Analytical.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::Analytical<Type>::Analytical +( + const word& phiName, + const dictionary& dict +) +: + IntegrationScheme<Type>(phiName, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Type> +Foam::Analytical<Type>::~Analytical() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +Type Foam::Analytical<Type>::integrate +( + const Type phi, + const scalar dt, + const Type alpha, + const scalar beta +) const +{ + return alpha + (phi - alpha)*exp(-beta*dt); +} + + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H new file mode 100644 index 0000000000000000000000000000000000000000..4ae39f226efeeef16331ff2b23ac0e4dd96f31f7 --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/Analytical/Analytical.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::Analytical + +Description + Analytical integration + +\*---------------------------------------------------------------------------*/ + +#ifndef Analytical_H +#define Analytical_H + +#include "IntegrationScheme.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class Analytical Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class Analytical +: + public IntegrationScheme<Type> +{ + +public: + + //- Runtime type information + TypeName("Analytical"); + + + // Constructors + + //- Construct from components + Analytical + ( + const word& phiName, + const dictionary& dict + ); + + + //- Destructor + + virtual ~Analytical(); + + + // Member Functions + + //- Perform the integration + virtual Type integrate + ( + const Type phi, + const scalar dt, + const Type alpha, + const scalar beta + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Analytical.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C new file mode 100644 index 0000000000000000000000000000000000000000..34f3b216ee3dbced3f4c5f99ff98bcab9d386aaf --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "Euler.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::Euler<Type>::Euler +( + const word& phiName, + const dictionary& dict +) +: + IntegrationScheme<Type>(phiName, dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +template<class Type> +Foam::Euler<Type>::~Euler() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +Type Foam::Euler<Type>::integrate +( + const Type phi, + const scalar dt, + const Type alpha, + const scalar beta +) const +{ + return (phi + dt*alpha)/(1.0 + dt/beta); +} + + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H new file mode 100644 index 0000000000000000000000000000000000000000..7073c9de6cf5e0a299979850a3c9005ac4f8f734 --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/Euler/Euler.H @@ -0,0 +1,101 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::Euler + +Description + Euler-implicit integration + +\*---------------------------------------------------------------------------*/ + +#ifndef Euler_H +#define Euler_H + +#include "IntegrationScheme.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class Euler Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class Euler +: + public IntegrationScheme<Type> +{ + +public: + + //- Runtime type information + TypeName("Euler"); + + + // Constructors + + //- Construct from components + Euler + ( + const word& phiName, + const dictionary& dict + ); + + + //- Destructor + + virtual ~Euler(); + + + // Member Functions + + //- Perform the integration + virtual Type integrate + ( + const Type phi, + const scalar dt, + const Type alpha, + const scalar beta + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "Euler.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C new file mode 100644 index 0000000000000000000000000000000000000000..99fb7c1a494fbb530873f7f63fadb57899848f32 --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.C @@ -0,0 +1,54 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "IntegrationScheme.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::IntegrationScheme<Type>::IntegrationScheme +( + const word& phiName, + const dictionary& dict +) +: + phiName_(phiName), + dict_(dict) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * // + +template<class Type> +Foam::IntegrationScheme<Type>::~IntegrationScheme() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +#include "newIntegrationScheme.C" + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H new file mode 100644 index 0000000000000000000000000000000000000000..3db7f59844bdbeeaec9c29a11a7b71209f4a9355 --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationScheme.H @@ -0,0 +1,169 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Class + Foam::IntegrationScheme + +Description + Top level model for Integration schemes + +SourceFiles + IntegrationScheme.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IntegrationScheme_H +#define IntegrationScheme_H + +#include "autoPtr.H" +#include "runTimeSelectionTables.H" +#include "dictionary.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class IntegrationScheme Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class IntegrationScheme +{ + // Private data + + //- Name of the Integration variable + const word& phiName_; + + //- Reference to the dictionary + const dictionary& dict_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + IntegrationScheme(const IntegrationScheme&); + + //- Disallow default bitwise assignment + void operator=(const IntegrationScheme&); + + +public: + + //- Runtime type information + TypeName("IntegrationScheme"); + + + //- Declare runtime constructor selection table + + declareRunTimeSelectionTable + ( + autoPtr, + IntegrationScheme, + dictionary, + ( + const word& phiName, + const dictionary& dict + ), + (phiName, dict) + ); + + + // Constructors + + //- Construct from components + IntegrationScheme + ( + const word& phiName, + const dictionary& dict + ); + + + // Selectors + + //- Return a reference to the selected radiation model + static autoPtr<IntegrationScheme> New + ( + const word& phiName, + const dictionary& dict + ); + + + //- Destructor + + virtual ~IntegrationScheme(); + + + // Member Functions + + //- Perform the Integration + virtual Type integrate + ( + const Type phi, + const scalar dt, + const Type alpha, + const scalar beta + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#define makeIntegrationScheme(Type) \ + \ + defineNamedTemplateTypeNameAndDebug(IntegrationScheme<Type>, 0); \ + \ + defineTemplateRunTimeSelectionTable \ + ( \ + IntegrationScheme<Type>, \ + dictionary \ + ); + + +#define makeIntegrationSchemeType(SS, Type) \ + \ + defineNamedTemplateTypeNameAndDebug(SS<Type>, 0); \ + \ + IntegrationScheme<Type>::adddictionaryConstructorToTable<SS<Type> > \ + add##SS##Type##ConstructorToTable_; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "IntegrationScheme.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // + diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationSchemesFwd.H b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationSchemesFwd.H new file mode 100644 index 0000000000000000000000000000000000000000..63e4a07997d108b1e1111cbb97568cce1f03f6b9 --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/IntegrationSchemesFwd.H @@ -0,0 +1,59 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +InClass + Foam::IntegrationScheme + +Description + +SourceFiles + IntegrationScheme.C + +\*---------------------------------------------------------------------------*/ + +#ifndef IntegrationSchemesFwd_H +#define IntegrationSchemesFwd_H + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +template<class Type> +class IntegrationScheme; + +typedef IntegrationScheme<scalar> scalarIntegrationScheme; +typedef IntegrationScheme<vector> vectorIntegrationScheme; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/newIntegrationScheme.C b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/newIntegrationScheme.C new file mode 100644 index 0000000000000000000000000000000000000000..5c3e7c364028e2e783a7b7cd06f385c6193d88c8 --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/IntegrationScheme/newIntegrationScheme.C @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "error.H" +#include "IntegrationScheme.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class Type> +Foam::autoPtr<Foam::IntegrationScheme<Type> > +Foam::IntegrationScheme<Type>::New +( + const word& phiName, + const dictionary& dict +) +{ + word IntegrationSchemeTypeName; + + dict.lookup(phiName) >> IntegrationSchemeTypeName; + + Info<< "Selecting " << phiName << " IntegrationScheme " + << IntegrationSchemeTypeName << endl; + + typename dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(IntegrationSchemeTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) + { + FatalErrorIn + ( + "IntegrationScheme::New(const dictionary&)" + ) << "Unknown IntegrationScheme type " + << IntegrationSchemeTypeName << nl << nl + << "Valid IntegrationScheme types are:" << nl + << dictionaryConstructorTablePtr_->toc() << nl + << exit(FatalError); + } + + return autoPtr<IntegrationScheme<Type> >(cstrIter()(phiName, dict)); +} + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/IntegrationScheme/makeIntegrationSchemes.C b/src/lagrangian/intermediate/IntegrationScheme/makeIntegrationSchemes.C new file mode 100644 index 0000000000000000000000000000000000000000..e3b488ca54ab7a99033581de75add816bd694898 --- /dev/null +++ b/src/lagrangian/intermediate/IntegrationScheme/makeIntegrationSchemes.C @@ -0,0 +1,46 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "IntegrationScheme.H" +#include "Euler.H" +#include "Analytical.H" + +#include "scalar.H" +#include "vector.H" + +namespace Foam +{ + makeIntegrationScheme(scalar); + makeIntegrationSchemeType(Euler, scalar); + makeIntegrationSchemeType(Analytical, scalar); + + makeIntegrationScheme(vector); + makeIntegrationSchemeType(Euler, vector); + makeIntegrationSchemeType(Analytical, vector); +}; + + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files index 9b9869bc2ce579457d45a6b6576a7d9711cb8e98..d29f2c32bfac3fc619e7cca8c2af55479ead6007 100755 --- a/src/lagrangian/intermediate/Make/files +++ b/src/lagrangian/intermediate/Make/files @@ -1,7 +1,7 @@ /* Parcels */ -parcels/derived/kinematicParcel/kinematicParcel.C -parcels/derived/thermoParcel/thermoParcel.C -parcels/derived/reactingParcel/reactingParcel.C +parcels/derived/basicKinematicParcel/basicKinematicParcel.C +parcels/derived/basicThermoParcel/basicThermoParcel.C +parcels/derived/basicReactingParcel/basicReactingParcel.C /* Cloud base classes */ clouds/baseClasses/kinematicCloud/kinematicCloud.C @@ -14,35 +14,38 @@ clouds/derived/basicThermoCloud/basicThermoCloud.C clouds/derived/basicReactingCloud/basicReactingCloud.C /* kinematic parcel sub-models */ -parcels/derived/kinematicParcel/defineKinematicParcel.C -parcels/derived/kinematicParcel/makeKinematicParcelDispersionModels.C -parcels/derived/kinematicParcel/makeKinematicParcelDragModels.C -parcels/derived/kinematicParcel/makeKinematicParcelInjectionModels.C -parcels/derived/kinematicParcel/makeKinematicParcelHeatTransferModels.C -parcels/derived/kinematicParcel/makeKinematicParcelWallInteractionModels.C +parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C +parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C +parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C +parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C +parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C +parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C /* thermo parcel sub-models */ -parcels/derived/thermoParcel/defineThermoParcel.C -parcels/derived/thermoParcel/makeThermoParcelDispersionModels.C -parcels/derived/thermoParcel/makeThermoParcelDragModels.C -parcels/derived/thermoParcel/makeThermoParcelInjectionModels.C -parcels/derived/thermoParcel/makeThermoParcelHeatTransferModels.C -parcels/derived/thermoParcel/makeThermoParcelWallInteractionModels.C +parcels/derived/basicThermoParcel/defineBasicThermoParcel.C +parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C +parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C +parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C +parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C +parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C /* reacting parcel sub-models */ -parcels/derived/reactingParcel/defineReactingParcel.C -parcels/derived/reactingParcel/makeReactingParcelCompositionModels.C -parcels/derived/reactingParcel/makeReactingParcelDragModels.C -parcels/derived/reactingParcel/makeReactingParcelDispersionModels.C -parcels/derived/reactingParcel/makeReactingParcelInjectionModels.C -parcels/derived/reactingParcel/makeReactingParcelHeatTransferModels.C -parcels/derived/reactingParcel/makeReactingParcelMassTransferModels.C -parcels/derived/reactingParcel/makeReactingParcelSurfaceReactionModels.C -parcels/derived/reactingParcel/makeReactingParcelWallInteractionModels.C +parcels/derived/basicReactingParcel/defineBasicReactingParcel.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C +parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C /* bolt-on models */ submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.C +/* integration schemes */ +IntegrationScheme/makeIntegrationSchemes.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 84bccf17a0985def8bb4817d7511b43a3d69e9a9..c68238a28f944681cda6add3c301578ce71d393c 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -30,6 +30,8 @@ License #include "InjectionModel.H" #include "WallInteractionModel.H" +#include "IntegrationScheme.H" + #include "interpolationCellPoint.H" // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // @@ -153,7 +155,6 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud kinematicCloud(), cloudType_(cloudType), mesh_(rho.mesh()), - runTime_(rho.time()), vpi_(vpi), particleProperties_ ( @@ -170,7 +171,7 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud parcelTypeId_(readLabel(particleProperties_.lookup("parcelTypeId"))), coupled_(particleProperties_.lookup("coupled")), rndGen_(label(0)), - time0_(runTime_.value()), + time0_(this->db().time().value()), parcelBasisType_(particleProperties_.lookup("parcelBasisType")), parcelBasis_(pbNumber), massTotal_ @@ -182,6 +183,7 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud U_(U), mu_(mu), g_(g), + interpolationSchemes_(particleProperties_.subDict("interpolationSchemes")), dispersionModel_ ( DispersionModel<KinematicCloud<ParcelType> >::New @@ -214,6 +216,14 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud *this ) ), + UIntegrator_ + ( + vectorIntegrationScheme::New + ( + "U", + particleProperties_.subDict("integrationSchemes") + ) + ), nInjections_(0), nParcelsAdded_(0), nParcelsAddedTotal_(0), @@ -221,8 +231,8 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud ( IOobject ( - this->cloudName() + "UTrans", - runTime_.timeName(), + this->name() + "UTrans", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, @@ -235,8 +245,8 @@ Foam::KinematicCloud<ParcelType>::KinematicCloud ( IOobject ( - this->cloudName() + "UCoeff", - runTime_.timeName(), + this->name() + "UCoeff", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, @@ -288,17 +298,37 @@ void Foam::KinematicCloud<ParcelType>::resetSourceTerms() template<class ParcelType> void Foam::KinematicCloud<ParcelType>::evolve() { - interpolationCellPoint<scalar> rhoInterp(vpi_, rho_); - interpolationCellPoint<vector> UInterp(vpi_, U_); - interpolationCellPoint<scalar> muInterp(vpi_, mu_); + autoPtr<interpolation<scalar> > rhoInterpolator = + interpolation<scalar>::New + ( + interpolationSchemes_, + vpi_, + rho_ + ); + + autoPtr<interpolation<vector> > UInterpolator = + interpolation<vector>::New + ( + interpolationSchemes_, + vpi_, + U_ + ); + + autoPtr<interpolation<scalar> > muInterpolator = + interpolation<scalar>::New + ( + interpolationSchemes_, + vpi_, + mu_ + ); typename ParcelType::trackData td ( *this, constProps_, - rhoInterp, - UInterp, - muInterp, + rhoInterpolator(), + UInterpolator(), + muInterpolator(), g_.value() ); @@ -330,7 +360,7 @@ void Foam::KinematicCloud<ParcelType>::inject TrackingData& td ) { - scalar time = runTime_.value(); + scalar time = this->db().time().value(); scalar pRho = td.constProps().rho0(); @@ -363,7 +393,7 @@ void Foam::KinematicCloud<ParcelType>::inject // Duration of injection period during this timestep scalar deltaT = min ( - runTime().deltaT().value(), + this->db().time().deltaT().value(), min ( time - this->injection().timeStart(), @@ -430,8 +460,8 @@ void Foam::KinematicCloud<ParcelType>::inject scalar dt = time - timeInj; - pPtr->stepFraction() = (runTime_.deltaT().value() - dt) - /runTime_.deltaT().value(); + pPtr->stepFraction() = (this->db().time().deltaT().value() - dt) + /this->time().deltaT().value(); this->injectParcel(td, pPtr); } @@ -466,7 +496,7 @@ void Foam::KinematicCloud<ParcelType>::postInjectCheck() { if (nParcelsAdded_) { - Pout<< "\n--> Cloud: " << this->cloudName() << nl << + Pout<< "\n--> Cloud: " << this->name() << nl << " Added " << nParcelsAdded_ << " new parcels" << nl << endl; } @@ -474,7 +504,7 @@ void Foam::KinematicCloud<ParcelType>::postInjectCheck() nParcelsAdded_ = 0; // Set time for start of next injection - time0_ = runTime_.value(); + time0_ = this->db().time().value(); // Increment number of injections nInjections_++; @@ -484,7 +514,7 @@ void Foam::KinematicCloud<ParcelType>::postInjectCheck() template<class ParcelType> void Foam::KinematicCloud<ParcelType>::info() const { - Info<< "Cloud name: " << this->cloudName() << nl + Info<< "Cloud name: " << this->name() << nl << " Parcels added during this run = " << returnReduce(nParcelsAddedTotal_, sumOp<label>()) << nl << " Mass introduced during this run = " @@ -502,8 +532,8 @@ void Foam::KinematicCloud<ParcelType>::dumpParticlePositions() const { OFstream pObj ( - this->runTime().path()/"parcelPositions_" - + this->cloudName() + "_" + this->db().time().path()/"parcelPositions_" + + this->name() + "_" + name(this->nInjections_) + ".obj" ); diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index 98a04bc32f0b896d6b9467a8291f9687b5141742..7a572c45c1ee1656c01840b27dcc7c2c1048bb14 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -27,7 +27,6 @@ Class Description Templated base class for kinematic cloud - - Kinematic only - Dispersion model - Drag model @@ -53,7 +52,8 @@ SourceFiles #include "volPointInterpolation.H" #include "fvMatrices.H" #include "fvm.H" -//#include "DimensionedField.H" + +#include "IntegrationSchemesFwd.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -108,7 +108,7 @@ private: //- References to the mesh and time databases const fvMesh& mesh_; - const Time& runTime_; +// const Time& runTime_; //- Reference to the interpolation for the carrier phase to the parcels const volPointInterpolation& vpi_; @@ -165,6 +165,11 @@ private: const dimensionedVector& g_; + // Interpolation + + dictionary interpolationSchemes_; + + // References to the cloud sub-models //- Dispersion model @@ -183,6 +188,12 @@ private: wallInteractionModel_; + // Reference to the particle integration schemes + + //- Velocity integration + autoPtr<vectorIntegrationScheme> UIntegrator_; + + // Counters //- Number of injections counter @@ -233,6 +244,25 @@ protected: const scalar pVolume ); + //- Inject more parcels + template<class TrackingData> + void inject(TrackingData& td); + + //- Inject parcel if it is valid - delete otherwise + template<class TrackingData> + void injectParcel + ( + TrackingData& td, + ParcelType* p + ); + + //- Move the parcels + template<class TrackingData> + void move(TrackingData& td); + + //- Post-injection checks + void postInjectCheck(); + public: @@ -253,7 +283,7 @@ public: ); - // Destructors + // Destructor virtual ~KinematicCloud(); @@ -273,9 +303,6 @@ public: //- Return refernce to the mesh inline const fvMesh& mesh() const; - //- Return referece to the time database - inline const Time& runTime() const; - //- Retuen reference to the interpolation inline const volPointInterpolation& vpi() const; @@ -313,6 +340,12 @@ public: inline const dimensionedVector& g() const; + // Interpolations + + //- Return reference to the interpolation dictionary + inline const dictionary& interpolationSchemes() const; + + // Sub-models //- Return reference to dispersion model @@ -335,6 +368,12 @@ public: wallInteraction() const; + // Integration schemes + + //-Return reference to velocity integration + inline const vectorIntegrationScheme& UIntegrator() const; + + // Sources // Momentum @@ -345,15 +384,15 @@ public: //- Coefficient for carrier phase U equation inline DimensionedField<scalar, volMesh>& UCoeff(); - //- Momentum source term - inline tmp<fvVectorMatrix> SU(volVectorField& U) const; + //- Return tmp momentum source term - fully explicit + inline tmp<DimensionedField<vector, volMesh> > SU1() const; + //- Return tmp momentum source term - semi-implicit + inline tmp<fvVectorMatrix> SU2(volVectorField& U) const; - // Check - //- Post-injection checks - void postInjectCheck(); + // Check //- Total mass injected inline const scalar massInjected() const; @@ -388,35 +427,13 @@ public: inline const tmp<volScalarField> alpha() const; - // Edit + // Cloud evolution functions //- Reset the spray source terms void resetSourceTerms(); //- Evolve the spray (move, inject) void evolve(); - - //- Move the parcels - template<class TrackingData> - void move - ( - TrackingData& td - ); - - //- Inject parcel if it is valid - delete otherwise - template<class TrackingData> - void injectParcel - ( - TrackingData& td, - ParcelType* p - ); - - //- Inject more parcels - template<class TrackingData> - void inject - ( - TrackingData& td - ); }; diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H index f16f66e1c507002855d2c82e57dde39b67318c4d..72c467e92f3ebc755bc9b3c8a02c353881628dc3 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -47,13 +47,6 @@ inline const Foam::fvMesh& Foam::KinematicCloud<ParcelType>::mesh() const } -template<class ParcelType> -inline const Foam::Time& Foam::KinematicCloud<ParcelType>::runTime() const -{ - return runTime_; -} - - template<class ParcelType> inline const Foam::volPointInterpolation& Foam::KinematicCloud<ParcelType>::vpi() const @@ -106,6 +99,13 @@ Foam::KinematicCloud<ParcelType>::g() const return g_; } +template<class ParcelType> +inline const Foam::dictionary& +Foam::KinematicCloud<ParcelType>::interpolationSchemes() const +{ + return interpolationSchemes_; +} + template<class ParcelType> inline const Foam::DispersionModel<Foam::KinematicCloud<ParcelType> >& @@ -147,6 +147,14 @@ Foam::KinematicCloud<ParcelType>::wallInteraction() const } +template<class ParcelType> +inline const Foam::vectorIntegrationScheme& +Foam::KinematicCloud<ParcelType>::UIntegrator() const +{ + return UIntegrator_; +} + + template<class ParcelType> inline const Foam::label Foam::KinematicCloud<ParcelType>::nInjections() const { @@ -219,16 +227,52 @@ Foam::KinematicCloud<ParcelType>::UCoeff() } +template<class ParcelType> +inline Foam::tmp<Foam::DimensionedField<Foam::vector, Foam::volMesh> > +Foam::KinematicCloud<ParcelType>::SU1() const +{ + tmp<DimensionedField<vector, volMesh> > tSU1 + ( + new DimensionedField<vector, volMesh> + ( + IOobject + ( + this->name() + "SU1", + this->db().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE + ), + this->mesh(), + dimensionedVector + ( + "zero", + dimensionSet(1, -2, -2, 0, 0), + vector::zero + ) + ) + ); + + vectorField& SU1 = tSU1().field(); + SU1 = UTrans_/(mesh_.V()*this->db().time().deltaT()); + + return tSU1; +} + + template<class ParcelType> inline Foam::tmp<Foam::fvVectorMatrix> -Foam::KinematicCloud<ParcelType>::SU(volVectorField& U) const +Foam::KinematicCloud<ParcelType>::SU2(volVectorField& U) const { - Info<< "UTrans min/max = " - << min(UTrans_) << ", " << max(UTrans_) << endl; - Info<< "UCoeff min/max = " - << min(UCoeff_) << ", " << max(UCoeff_) << endl; + if (debug) + { + Info<< "UTrans min/max = " + << min(UTrans_) << ", " << max(UTrans_) << endl; + Info<< "UCoeff min/max = " + << min(UCoeff_) << ", " << max(UCoeff_) << endl; + } - return UTrans_/(mesh_.V()*runTime_.deltaT()) + return UTrans_/(mesh_.V()*this->db().time().deltaT()) - fvm::Sp(UCoeff_/mesh_.V(), U) + UCoeff_/mesh_.V()*U; } @@ -244,8 +288,8 @@ Foam::KinematicCloud<ParcelType>::theta() const ( IOobject ( - this->cloudName() + "Theta", - runTime_.timeName(), + this->name() + "Theta", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, @@ -281,8 +325,8 @@ Foam::KinematicCloud<ParcelType>::alpha() const ( IOobject ( - this->cloudName() + "Alpha", - runTime_.timeName(), + this->name() + "Alpha", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index 6f30dcb4f49c16d7fc4a9875a8dd009e62acbacf..5251907c13035264f0be18f6ce39aefa70ac4d79 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -86,15 +86,15 @@ Foam::ReactingCloud<ParcelType>::ReactingCloud ( IOobject ( - this->cloudName() + "rhoTrans" + name(i), - this->runTime().timeName(), + this->name() + "rhoTrans" + name(i), + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, false ), this->mesh(), - dimensionedScalar("zero", dimensionSet(1, 0, 0, 0, 0), 0.0) + dimensionedScalar("zero", dimMass, 0.0) ) ); } @@ -128,44 +128,64 @@ void Foam::ReactingCloud<ParcelType>::evolve() const volScalarField cp = carrierThermo_.Cp(); const volScalarField& p = carrierThermo_.p(); - interpolationCellPoint<scalar> rhoInterp(this->vpi(), this->rho()); - interpolationCellPoint<vector> UInterp(this->vpi(), this->U()); - interpolationCellPoint<scalar> muInterp(this->vpi(), this->mu()); - interpolationCellPoint<scalar> TInterp(this->vpi(), T); - interpolationCellPoint<scalar> cpInterp(this->vpi(), cp); - interpolationCellPoint<scalar> pInterp(this->vpi(), p); + autoPtr<interpolation<scalar> > rhoInterpolator = interpolation<scalar>::New + ( + this->interpolationSchemes(), + this->vpi(), + this->rho() + ); + + autoPtr<interpolation<vector> > UInterpolator = interpolation<vector>::New + ( + this->interpolationSchemes(), + this->vpi(), + this->U() + ); + + autoPtr<interpolation<scalar> > muInterpolator = interpolation<scalar>::New + ( + this->interpolationSchemes(), + this->vpi(), + this->mu() + ); + + autoPtr<interpolation<scalar> > TInterpolator = interpolation<scalar>::New + ( + this->interpolationSchemes(), + this->vpi(), + T + ); + + autoPtr<interpolation<scalar> > cpInterpolator = interpolation<scalar>::New + ( + this->interpolationSchemes(), + this->vpi(), + cp + ); + + autoPtr<interpolation<scalar> > pInterpolator = interpolation<scalar>::New + ( + this->interpolationSchemes(), + this->vpi(), + p + ); typename ParcelType::trackData td ( *this, constProps_, - rhoInterp, - UInterp, - muInterp, - TInterp, - cpInterp, - pInterp, + rhoInterpolator(), + UInterpolator(), + muInterpolator(), + TInterpolator(), + cpInterpolator(), + pInterpolator(), this->g().value() ); inject(td); - move(td); -} - - -template<class ParcelType> -template<class TrackingData> -void Foam::ReactingCloud<ParcelType>::move -( - TrackingData& td -) -{ - if (this->coupled()) - { - resetSourceTerms(); - } - Cloud<ParcelType>::move(td); + this->move(td); } @@ -176,7 +196,7 @@ void Foam::ReactingCloud<ParcelType>::inject TrackingData& td ) { - scalar time = this->runTime().value(); + scalar time = this->db().time().value(); scalar pRho = td.constProps().rho0(); @@ -191,7 +211,7 @@ void Foam::ReactingCloud<ParcelType>::inject // Return if no parcels are required if (!nParcels) { - postInjectCheck(); + this->postInjectCheck(); return; } @@ -213,7 +233,7 @@ void Foam::ReactingCloud<ParcelType>::inject // Duration of injection period during this timestep scalar deltaT = min ( - this->runTime().deltaT().value(), + this->db().time().deltaT().value(), min ( time - this->injection().timeStart(), @@ -284,14 +304,14 @@ void Foam::ReactingCloud<ParcelType>::inject scalar dt = time - timeInj; - pPtr->stepFraction() = (this->runTime().deltaT().value() - dt) - /this->runTime().deltaT().value(); + pPtr->stepFraction() = (this->db().time().deltaT().value() - dt) + /this->db().time().deltaT().value(); - injectParcel(td, pPtr); + this->injectParcel(td, pPtr); } } - postInjectCheck(); + this->postInjectCheck(); if (debug) { @@ -300,23 +320,4 @@ void Foam::ReactingCloud<ParcelType>::inject } -template<class ParcelType> -template<class TrackingData> -void Foam::ReactingCloud<ParcelType>::injectParcel -( - TrackingData& td, - ParcelType* p -) -{ - ThermoCloud<ParcelType>::injectParcel(td, p); -} - - -template<class ParcelType> -void Foam::ReactingCloud<ParcelType>::postInjectCheck() -{ - ThermoCloud<ParcelType>::postInjectCheck(); -} - - // ************************************************************************* // diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index dda6676565f247350a89adbee3c80b5dcd20305a..14222dd198ef9336052a6c3c9cfb0b62ce184721 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -27,7 +27,6 @@ Class Description Templated base class for reactive cloud - - Adds to kinematic cloud - Heat transfer @@ -115,6 +114,13 @@ class ReactingCloud void operator=(const ReactingCloud&); +protected: + + //- Inject more parcels + template<class TrackingData> + void inject(TrackingData& td); + + public: //- Runtime type information @@ -136,7 +142,7 @@ public: ); - // Destructors + // Destructor virtual ~ReactingCloud(); @@ -182,50 +188,24 @@ public: inline PtrList<DimensionedField<scalar, volMesh> >& rhoTrans(); - //- Retun tmp mass source for field i + //- Return tmp mass source for field i + // Fully explicit inline tmp<DimensionedField<scalar, volMesh> > - Srho(const label i) const; + Srho1(const label i) const; - //- Retun tmp total mass source for carrier phase + //- Return tmp total mass source for carrier phase + // Fully explicit inline tmp<DimensionedField<scalar, volMesh> > - Srho() const; + Srho1() const; - // Check - - //- Post-injection checks - void postInjectCheck(); - - - // Edit + // Cloud evolution functions //- Reset the spray source terms void resetSourceTerms(); //- Evolve the spray (move, inject) void evolve(); - - //- Move the parcels - template<class TrackingData> - void move - ( - TrackingData& td - ); - - //- Inject parcel if it is valid - delete otherwise - template<class TrackingData> - void injectParcel - ( - TrackingData& td, - ParcelType* p - ); - - //- Inject more parcels - template<class TrackingData> - void inject - ( - TrackingData& td - ); }; diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H index 6385b7c9a77f694c49b7a00cd7675bb6a9b29716..dc4ae13c6f5f8e9092d39786ab06803e02335f81 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H @@ -92,15 +92,15 @@ Foam::ReactingCloud<ParcelType>::rhoTrans() template<class ParcelType> inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> > -Foam::ReactingCloud<ParcelType>::Srho(const label i) const +Foam::ReactingCloud<ParcelType>::Srho1(const label i) const { - return rhoTrans_[i]/(this->runTime().deltaT()*this->mesh().V()); + return rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V()); } template<class ParcelType> inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> > -Foam::ReactingCloud<ParcelType>::Srho() const +Foam::ReactingCloud<ParcelType>::Srho1() const { tmp<DimensionedField<scalar, volMesh> > trhoTrans ( @@ -108,8 +108,8 @@ Foam::ReactingCloud<ParcelType>::Srho() const ( IOobject ( - this->cloudName() + "rhoTrans", - this->runTime().timeName(), + this->name() + "rhoTrans", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, @@ -120,13 +120,13 @@ Foam::ReactingCloud<ParcelType>::Srho() const ) ); - DimensionedField<scalar, volMesh>& sourceField = trhoTrans(); + scalarField& sourceField = trhoTrans().field(); forAll (rhoTrans_, i) { sourceField += rhoTrans_[i]; } - return trhoTrans/(this->runTime().deltaT()*this->mesh().V()); + return trhoTrans/(this->db().time().deltaT()*this->mesh().V()); } // ************************************************************************* // diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H index ae932883d6041e4298fb4fc607055413282e8ae4..9fe413101d4d8d5f57865651028fc56212e14945 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudThermoTypes.H @@ -22,7 +22,7 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -InClass +Class Foam::cloudThermoTypes Description diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index ac6653a348f7281e11a6175c801521dc7c7d5330..a4f6f9324bfcc1699cd26bd51168ce9b6dfc60fd 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -63,13 +63,21 @@ Foam::ThermoCloud<ParcelType>::ThermoCloud *this ) ), + TIntegrator_ + ( + scalarIntegrationScheme::New + ( + "T", + this->particleProperties().subDict("integrationSchemes") + ) + ), radiation_(this->particleProperties().lookup("radiation")), hTrans_ ( IOobject ( - this->cloudName() + "hTrans", - this->runTime().timeName(), + this->name() + "hTrans", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, @@ -82,8 +90,8 @@ Foam::ThermoCloud<ParcelType>::ThermoCloud ( IOobject ( - this->cloudName() + "hCoeff", - this->runTime().timeName(), + this->name() + "hCoeff", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, @@ -119,188 +127,68 @@ void Foam::ThermoCloud<ParcelType>::evolve() const volScalarField& T = carrierThermo_.T(); const volScalarField cp = carrierThermo_.Cp(); - interpolationCellPoint<scalar> rhoInterp(this->vpi(), this->rho()); - interpolationCellPoint<vector> UInterp(this->vpi(), this->U()); - interpolationCellPoint<scalar> muInterp(this->vpi(), this->mu()); - interpolationCellPoint<scalar> TInterp(this->vpi(), T); - interpolationCellPoint<scalar> cpInterp(this->vpi(), cp); - - typename ParcelType::trackData td + autoPtr<interpolation<scalar> > rhoInterpolator = interpolation<scalar>::New ( - *this, - constProps_, - rhoInterp, - UInterp, - muInterp, - TInterp, - cpInterp, - this->g().value() + this->interpolationSchemes(), + this->vpi(), + this->rho() ); - inject(td); - - move(td); -} - - -template<class ParcelType> -template<class TrackingData> -void Foam::ThermoCloud<ParcelType>::move -( - TrackingData& td -) -{ - if (this->coupled()) - { - resetSourceTerms(); - } - Cloud<ParcelType>::move(td); -} - - -template<class ParcelType> -template<class TrackingData> -void Foam::ThermoCloud<ParcelType>::inject -( - TrackingData& td -) -{ - KinematicCloud<ParcelType>::inject(td); -/* - scalar time = this->runTime().value(); - - scalar pRho = td.constProps().rho0(); - - // Number of parcels to introduce during this timestep - const label nParcels = this->injection().nParcelsToInject + autoPtr<interpolation<vector> > UInterpolator = interpolation<vector>::New ( - this->nInjections(), - this->time0(), - time + this->interpolationSchemes(), + this->vpi(), + this->U() ); - // Return if no parcels are required - if (!nParcels) - { - this->postInjectCheck(); - return; - } - - // Volume of particles to introduce during this timestep - scalar pVolume = this->injection().volume + autoPtr<interpolation<scalar> > muInterpolator = interpolation<scalar>::New ( - this->time0(), - time, - this->meshInfo() + this->interpolationSchemes(), + this->vpi(), + this->mu() ); - // Volume fraction to introduce during this timestep - scalar pVolumeFraction = - this->injection().volumeFraction(this->time0(), time); - - // Duration of injection period during this timestep - scalar deltaT = min + autoPtr<interpolation<scalar> > TInterpolator = interpolation<scalar>::New ( - this->runTime().deltaT().value(), - min - ( - time - this->injection().timeStart(), - this->injection().timeEnd() - this->time0() - ) + this->interpolationSchemes(), + this->vpi(), + T ); - // Pad injection time if injection starts during this timestep - scalar padTime = max + autoPtr<interpolation<scalar> > cpInterpolator = interpolation<scalar>::New ( - 0.0, - this->injection().timeStart() - this->time0() + this->interpolationSchemes(), + this->vpi(), + cp ); - // Introduce new parcels linearly with time - for (label iParcel=0; iParcel<nParcels; iParcel++) - { - // Calculate the pseudo time of injection for parcel 'iParcel' - scalar timeInj = this->time0() + padTime + deltaT*iParcel/nParcels; - - // Determine injected parcel properties - vector pPosition = this->injection().position - ( - iParcel, - timeInj, - this->meshInfo(), - this->rndGen() - ); - - // Diameter of parcels - scalar pDiameter = this->injection().d0(iParcel, timeInj); - - // Number of particles per parcel - scalar pNumberOfParticles = this->setNumberOfParticles - ( - nParcels, - pDiameter, - pVolumeFraction, - pRho, - pVolume - ); - - // Velocity of parcels - vector pU = this->injection().velocity(iParcel, timeInj); - - // Determine the injection cell - label pCell = -1; - this->setInjectorCellAndPosition(pCell, pPosition); - - if (pCell >= 0) - { - // construct the parcel that is to be injected - ParcelType* pPtr = new ParcelType - ( - td.cloud(), - this->parcelTypeId(), - pPosition, - pCell, - pDiameter, - pU, - pNumberOfParticles, - td.constProps() - ); - - scalar dt = time - timeInj; - - pPtr->stepFraction() = (this->runTime().deltaT().value() - dt) - /this->runTime().deltaT().value(); - - this->injectParcel(td, pPtr); - } - } + typename ParcelType::trackData td + ( + *this, + constProps_, + rhoInterpolator(), + UInterpolator(), + muInterpolator(), + TInterpolator(), + cpInterpolator(), + this->g().value() + ); - this->postInjectCheck(); + inject(td); - if (debug) - { - this->dumpParticlePositions(); - } -*/ + this->move(td); } template<class ParcelType> template<class TrackingData> -void Foam::ThermoCloud<ParcelType>::injectParcel +void Foam::ThermoCloud<ParcelType>::inject ( - TrackingData& td, - ParcelType* p + TrackingData& td ) { - KinematicCloud<ParcelType>::injectParcel(td, p); -} - - -template<class ParcelType> -void Foam::ThermoCloud<ParcelType>::postInjectCheck() -{ - KinematicCloud<ParcelType>::postInjectCheck(); + // Injection is same as for KinematicCloud<ParcelType> + KinematicCloud<ParcelType>::inject(td); } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index 36e2cc2058bb7327adedabafdca6d99f0c1ffa7e..98a2e496a6bc0c7003bba27a35b0370298fc32b7 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -27,7 +27,6 @@ Class Description Templated base class for thermodynamic cloud - - Adds to kinematic cloud - Heat transfer @@ -87,6 +86,12 @@ class ThermoCloud heatTransferModel_; + // Reference to the particle integration schemes + + //- Temperature integration + autoPtr<scalarIntegrationScheme> TIntegrator_; + + // Modelling options //- Include radiation @@ -111,6 +116,13 @@ class ThermoCloud void operator=(const ThermoCloud&); +protected: + + //- Inject more parcels + template<class TrackingData> + void inject(TrackingData& td); + + public: //- Runtime type information @@ -131,7 +143,7 @@ public: ); - // Destructors + // Destructor virtual ~ThermoCloud(); @@ -154,6 +166,12 @@ public: heatTransfer() const; + // Integration schemes + + //-Return reference to velocity integration + inline const scalarIntegrationScheme& TIntegrator() const; + + // Modelling options //- Radiation flag @@ -170,8 +188,11 @@ public: //- Coefficient for carrier phase h equation inline DimensionedField<scalar, volMesh>& hCoeff(); - //- Enthalpy source term - inline tmp<fvScalarMatrix> Sh(volScalarField& h) const; + //- return tmp enthalpy source term - fully explicit + inline tmp<DimensionedField<scalar, volMesh> > Sh1() const; + + //- Return tmp enthalpy source term - semi-implicit + inline tmp<fvScalarMatrix> Sh2(volScalarField& h) const; // Radiation - overrides thermoCloud virtual abstract members @@ -186,48 +207,13 @@ public: inline tmp<volScalarField> sigmap() const; - // Check - - //- Post-injection checks - void postInjectCheck(); - - - // Edit - - //- Reset the spray source terms - void resetSourceTerms(); + // Cloud evolution functions //- Evolve the spray (move, inject) void evolve(); - - // Tracking - - //- Move the particles under the influence of the given - // gravitational acceleration - template<class TrackingData> - void move - ( - TrackingData& td - ); - - - // Injection - - //- Inject parcel if it is valid - delete otherwise - template<class TrackingData> - void injectParcel - ( - TrackingData& td, - ParcelType* p - ); - - //- Inject more parcels - template<class TrackingData> - void inject - ( - TrackingData& td - ); + //- Reset the spray source terms + void resetSourceTerms(); }; diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H index c7b86501512b85f8768e06617c8f887f453e100d..cb8321c37ea7fdf0a728054d47868be330d13b98 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H @@ -52,6 +52,14 @@ Foam::ThermoCloud<ParcelType>::heatTransfer() const } +template<class ParcelType> +inline const Foam::scalarIntegrationScheme& +Foam::ThermoCloud<ParcelType>::TIntegrator() const +{ + return TIntegrator_; +} + + template<class ParcelType> inline const bool Foam::ThermoCloud<ParcelType>::radiation() const { @@ -75,18 +83,55 @@ Foam::ThermoCloud<ParcelType>::hCoeff() } +template<class ParcelType> +inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> > +Foam::ThermoCloud<ParcelType>::Sh1() const +{ + tmp<DimensionedField<scalar, volMesh> > tSh1 + ( + new DimensionedField<scalar, volMesh> + ( + IOobject + ( + this->name() + "Sh1", + this->db().time().timeName(), + this->mesh(), + IOobject::NO_READ, + IOobject::AUTO_WRITE, + false + ), + this->mesh(), + dimensionedScalar + ( + "zero", + dimMass/dimLength/pow3(dimTime), + 0.0 + ) + ) + ); + + scalarField& Sh1 = tSh1().field(); + Sh1 = hTrans_/(this->mesh().V()*this->db().time().deltaT()); + + return tSh1; +} + + template<class ParcelType> inline Foam::tmp<Foam::fvScalarMatrix> -Foam::ThermoCloud<ParcelType>::Sh(volScalarField& h) const +Foam::ThermoCloud<ParcelType>::Sh2(volScalarField& h) const { const volScalarField cp = carrierThermo_.Cp(); - Info<< "hTrans min/max = " - << min(hTrans_) << ", " << max(hTrans_) << endl; - Info<< "hCoeff min/max = " - << min(hCoeff_) << ", " << max(hCoeff_) << endl; + if (debug) + { + Info<< "hTrans min/max = " + << min(hTrans_) << ", " << max(hTrans_) << endl; + Info<< "hCoeff min/max = " + << min(hCoeff_) << ", " << max(hCoeff_) << endl; + } - return hTrans_/(this->mesh().V()*this->runTime().deltaT()) + return hTrans_/(this->mesh().V()*this->db().time().deltaT()) - fvm::Sp(hCoeff_/(cp*this->mesh().V()), h) + hCoeff_/(cp*this->mesh().V())*h; } @@ -102,31 +147,35 @@ Foam::ThermoCloud<ParcelType>::Ep() const ( IOobject ( - this->cloudName() + "radiationEp", - this->runTime().timeName(), + this->name() + "radiationEp", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, false ), this->mesh(), - dimensionedScalar("zero", dimensionSet(1, -1, -3, 0, 0), 0.0) + dimensionedScalar("zero", dimMass/dimLength/pow3(dimTime), 0.0) ) ); - scalarField& Ep = tEp().internalField(); - const scalarField& V = this->pMesh().cellVolumes(); - const scalar epsilon = constProps_.epsilon0(); - - forAllConstIter(typename ThermoCloud<ParcelType>, *this, iter) + // Need to check if coupled as field is created on-the-fly + if (radiation_ && this->coupled()) { - const ParcelType& p = iter(); - const label cellI = p.cell(); - Ep[cellI] += p.nParticle()*p.areaP()*pow4(p.T()); + scalarField& Ep = tEp().internalField(); + const scalarField& V = this->mesh().V(); + const scalar epsilon = constProps_.epsilon0(); + + forAllConstIter(typename ThermoCloud<ParcelType>, *this, iter) + { + const ParcelType& p = iter(); + const label cellI = p.cell(); + Ep[cellI] += p.nParticle()*p.areaP()*pow4(p.T()); + } + + Ep *= epsilon*radiation::sigmaSB.value()/V; } - Ep *= epsilon*radiation::sigmaSB.value()/(V*mathematicalConstant::pi); - return tEp; } @@ -141,31 +190,35 @@ Foam::ThermoCloud<ParcelType>::ap() const ( IOobject ( - this->cloudName() + "radiationAp", - this->runTime().timeName(), + this->name() + "radiationAp", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, false ), this->mesh(), - dimensionedScalar("zero", dimensionSet(0, -1, 0, 0, 0), 0.0) + dimensionedScalar("zero", dimless/dimLength, 0.0) ) ); - scalarField& ap = tap().internalField(); - const scalarField& V = this->pMesh().cellVolumes(); - const scalar epsilon = constProps_.epsilon0(); - - forAllConstIter(typename ThermoCloud<ParcelType>, *this, iter) + // Need to check if coupled as field is created on-the-fly + if (radiation_ && this->coupled()) { - const ParcelType& p = iter(); - const label cellI = p.cell(); - ap[cellI] += p.nParticle()*p.areaP(); + scalarField& ap = tap().internalField(); + const scalarField& V = this->mesh().V(); + const scalar epsilon = constProps_.epsilon0(); + + forAllConstIter(typename ThermoCloud<ParcelType>, *this, iter) + { + const ParcelType& p = iter(); + const label cellI = p.cell(); + ap[cellI] += p.nParticle()*p.areaP(); + } + + ap *= epsilon/V; } - ap *= epsilon/V; - return tap; } @@ -180,32 +233,36 @@ Foam::ThermoCloud<ParcelType>::sigmap() const ( IOobject ( - this->cloudName() + "radiationSigmap", - this->runTime().timeName(), + this->name() + "radiationSigmap", + this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, false ), this->mesh(), - dimensionedScalar("zero", dimensionSet(0, -1, 0, 0, 0), 0.0) + dimensionedScalar("zero", dimless/dimLength, 0.0) ) ); - scalarField& sigmap = tsigmap().internalField(); + // Need to check if coupled as field is created on-the-fly + if (radiation_ && this->coupled()) + { + scalarField& sigmap = tsigmap().internalField(); - const scalarField& V = this->pMesh().cellVolumes(); - const scalar epsilon = constProps_.epsilon0(); - const scalar f = constProps_.f0(); + const scalarField& V = this->mesh().V(); + const scalar epsilon = constProps_.epsilon0(); + const scalar f = constProps_.f0(); - forAllConstIter(typename ThermoCloud<ParcelType>, *this, iter) - { - const ParcelType& p = iter(); - const label cellI = p.cell(); - sigmap[cellI] += p.nParticle()*p.areaP(); - } + forAllConstIter(typename ThermoCloud<ParcelType>, *this, iter) + { + const ParcelType& p = iter(); + const label cellI = p.cell(); + sigmap[cellI] += p.nParticle()*p.areaP(); + } - sigmap *= (1.0 - f)*(1.0 - epsilon)/V; + sigmap *= (1.0 - f)*(1.0 - epsilon)/V; + } return tsigmap; } diff --git a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C index 2fb09a503188f9fc412238a0f43981489d4bfdac..17e8baa79d9798d2417dea5df80594a0ef89e54d 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.C @@ -46,9 +46,9 @@ Foam::basicKinematicCloud::basicKinematicCloud const dimensionedVector& g ) : - KinematicCloud<kinematicParcel>(cloudType, vpi, rho, U, mu, g) + KinematicCloud<basicKinematicParcel>(cloudType, vpi, rho, U, mu, g) { - kinematicParcel::readFields(*this); + basicKinematicParcel::readFields(*this); } @@ -60,34 +60,9 @@ Foam::basicKinematicCloud::~basicKinematicCloud() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::basicKinematicCloud::evolve() -{ - KinematicCloud<kinematicParcel>::evolve(); -} - - -void Foam::basicKinematicCloud::move -( - KinematicParcel<kinematicParcel>::trackData& td -) -{ - KinematicCloud<kinematicParcel>::move(td); -} - - -void Foam::basicKinematicCloud::inject -( - KinematicParcel<kinematicParcel>::trackData& td -) -{ - KinematicCloud<kinematicParcel>::inject(td); -} - - void Foam::basicKinematicCloud::writeFields() const { - kinematicParcel::writeFields(*this); + basicKinematicParcel::writeFields(*this); } - // ************************************************************************* // diff --git a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H index 41e2914739407602c9fc1b302b6ac117bbb7df54..38b3070ac6d0ffa6790af376084e0d745a2e0cdc 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/basicKinematicCloud/basicKinematicCloud.H @@ -37,7 +37,7 @@ SourceFiles #define basicKinematicCloud_H #include "KinematicCloud.H" -#include "kinematicParcel.H" +#include "basicKinematicParcel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,7 +50,7 @@ namespace Foam class basicKinematicCloud : - public KinematicCloud<kinematicParcel> + public KinematicCloud<basicKinematicParcel> { // Private member functions @@ -82,35 +82,15 @@ public: ); - // Destructors + //- Destructor ~basicKinematicCloud(); // Member functions - // Edit - - //- Evolve the spray (move, inject) - void evolve(); - - //- Move the parcels - void move - ( - KinematicParcel<kinematicParcel>::trackData& td - ); - - //- Inject more parcels - void inject - ( - KinematicParcel<kinematicParcel>::trackData& td - ); - - - // I-O - - //- Write fields - void writeFields() const; + //- Write fields + void writeFields() const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.C b/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.C index d5582b29de8f57441b02ea6f363c922d662a5ac0..1b8eceea2d058687fb59c3b68cc7e53636235b98 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.C @@ -47,7 +47,7 @@ Foam::basicReactingCloud::basicReactingCloud PtrList<specieReactingProperties>& gases ) : - ReactingCloud<reactingParcel> + ReactingCloud<basicReactingParcel> ( cloudType, vpi, @@ -58,40 +58,21 @@ Foam::basicReactingCloud::basicReactingCloud gases ) { - reactingParcel::readFields(*this); + basicReactingParcel::readFields(*this); } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - - -void Foam::basicReactingCloud::evolve() -{ - ReactingCloud<reactingParcel>::evolve(); -} - - -void Foam::basicReactingCloud::move -( - ReactingParcel<reactingParcel>::trackData& td -) -{ - ReactingCloud<reactingParcel>::move(td); -} +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // +Foam::basicReactingCloud::~basicReactingCloud() +{} -void Foam::basicReactingCloud::inject -( - ReactingParcel<reactingParcel>::trackData& td -) -{ - ReactingCloud<reactingParcel>::inject(td); -} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::basicReactingCloud::writeFields() const { - reactingParcel::writeFields(*this); + basicReactingParcel::writeFields(*this); } diff --git a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H b/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H index 13686e75fe69a2a3c454ca3778f4436d9755b36d..4b2292fc592336ad07361b11165e1aba19411391 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/basicReactingCloud/basicReactingCloud.H @@ -26,7 +26,6 @@ Class Foam::basicReactingCloud Description - The basicReactingCloud SourceFiles basicReactingCloud.C @@ -37,7 +36,7 @@ SourceFiles #define basicReactingCloud_H #include "ReactingCloud.H" -#include "reactingParcel.H" +#include "basicReactingParcel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,7 +49,7 @@ namespace Foam class basicReactingCloud : - public ReactingCloud<reactingParcel> + public ReactingCloud<basicReactingParcel> { // Private Member Functions @@ -67,6 +66,7 @@ public: //- Runtime type information TypeName("basicReactingCloud"); + // Constructors //- Construct given carrier gas fields @@ -82,30 +82,15 @@ public: ); - // Member Functions - - // Edit - - //- Evolve the spray (move, inject) - void evolve(); - - //- Move the parcels - void move - ( - ReactingParcel<reactingParcel>::trackData& td - ); + //- Destructor - //- Inject more parcels - void inject - ( - ReactingParcel<reactingParcel>::trackData& td - ); + ~basicReactingCloud(); - // I-O + // Member Functions - //- Write fields - void writeFields() const; + //- Write fields + void writeFields() const; }; diff --git a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C index dbc40e04b12174f7384389b0e83a1acd2070346a..d57eddebe5001cd60b6020776e8c742e64a2be58 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.C @@ -46,42 +46,23 @@ Foam::basicThermoCloud::basicThermoCloud basicThermo& thermo ) : - ThermoCloud<thermoParcel>(cloudType, vpi, rho, U, g, thermo) + ThermoCloud<basicThermoParcel>(cloudType, vpi, rho, U, g, thermo) { - thermoParcel::readFields(*this); + basicThermoParcel::readFields(*this); } -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -void Foam::basicThermoCloud::evolve() -{ - ThermoCloud<thermoParcel>::evolve(); -} +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // +Foam::basicThermoCloud::~basicThermoCloud() +{} -void Foam::basicThermoCloud::move -( - ThermoParcel<thermoParcel>::trackData& td -) -{ - // Move the parcels - ThermoCloud<thermoParcel>::move(td); -} - - -void Foam::basicThermoCloud::inject -( - ThermoParcel<thermoParcel>::trackData& td -) -{ - ThermoCloud<thermoParcel>::inject(td); -} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::basicThermoCloud::writeFields() const { - thermoParcel::writeFields(*this); + basicThermoParcel::writeFields(*this); } diff --git a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H index 207b432abc65d48c798c4edc9543aeb72ef9cdf7..7d351ccba224fd89022c61f8bdd6be1bbaf427d8 100644 --- a/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/derived/basicThermoCloud/basicThermoCloud.H @@ -26,7 +26,6 @@ Class Foam::basicThermoCloud Description - The basicThermoCloud SourceFiles basicThermoCloud.C @@ -37,7 +36,7 @@ SourceFiles #define basicThermoCloud_H #include "ThermoCloud.H" -#include "thermoParcel.H" +#include "basicThermoParcel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -50,7 +49,7 @@ namespace Foam class basicThermoCloud : - public ThermoCloud<thermoParcel> + public ThermoCloud<basicThermoParcel> { // Private Member Functions @@ -85,30 +84,15 @@ public: ); - // Member Functions - - // Edit - - //- Evolve the spray (move, inject) - void evolve(); + //- Destructor - //- Move the parcels - void move - ( - ThermoParcel<thermoParcel>::trackData& td - ); + ~basicThermoCloud(); - //- Inject more parcels - void inject - ( - ThermoParcel<thermoParcel>::trackData& td - ); + // Member Functions - // I-O - - //- Write fields - void writeFields() const; + //- Write fields + void writeFields() const; }; diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index 5e2d96a53fa65dbb3a78c8ff04eef771604cd6f2..e8dc87bc307b22adbcd23ad01211272d2a1050e8 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C @@ -30,29 +30,60 @@ License // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // template<class ParcelType> -template<class TrackingData> +template<class TrackData> +void Foam::KinematicParcel<ParcelType>::updateCellQuantities +( + TrackData& td, + const scalar dt, + const label celli +) +{ + rhoc_ = td.rhoInterp().interpolate(this->position(), celli); + Uc_ = td.UInterp().interpolate(this->position(), celli); + muc_ = td.muInterp().interpolate(this->position(), celli); + + // Apply dispersion components to carrier phase velocity + Uc_ = td.cloud().dispersion().update + ( + dt, + celli, + U_, + Uc_, + UTurb_, + tTurb_ + ); +} + + +template<class ParcelType> +template<class TrackData> void Foam::KinematicParcel<ParcelType>::calcCoupled ( - TrackingData& td, - const label celli, + TrackData& td, const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc + const label celli ) { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Define local properties at beginning of timestep // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - const scalar mass0 = mass(); - const vector U0 = U_; +// const scalar mass0 = mass(); +// const vector U0 = U_; + + + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialise transfer terms + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Momentum transfer from the particle to the carrier phase + vector dUTrans = vector::zero; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate velocity - update U // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar Cud = 0.0; - const vector U1 = calcVelocity(td, dt, rhoc, Uc, muc, Cud); + const vector U1 = calcVelocity(td, dt, Cud, dUTrans); // ~~~~~~~~~~~~~~~~~~~~~~~ @@ -60,10 +91,10 @@ void Foam::KinematicParcel<ParcelType>::calcCoupled // ~~~~~~~~~~~~~~~~~~~~~~~ // Update momentum transfer - td.cloud().UTrans()[celli] += nParticle_*mass0*(U0 - U1); + td.cloud().UTrans()[celli] += nParticle_*dUTrans; // Accumulate coefficient to be applied in carrier phase momentum coupling - td.cloud().UCoeff()[celli] += nParticle_*mass0*Cud; + td.cloud().UCoeff()[celli] += nParticle_*mass()*Cud; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -74,72 +105,65 @@ void Foam::KinematicParcel<ParcelType>::calcCoupled template<class ParcelType> -template<class TrackingData> +template<class TrackData> void Foam::KinematicParcel<ParcelType>::calcUncoupled ( - TrackingData& td, + TrackData& td, const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc + const label ) { + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialise transfer terms + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Momentum transfer from the particle to the carrier phase + vector dUTrans = vector::zero; + + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate velocity - update U // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar Cud = 0.0; - this->U() = calcVelocity(td, dt, rhoc, Uc, muc, Cud); + this->U() = calcVelocity(td, dt, Cud, dUTrans); } template<class ParcelType> -template<class TrackingData> +template<class TrackData> Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity ( - TrackingData& td, + TrackData& td, const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - scalar& Cud + scalar& Cud, + vector& dUTrans ) { // Correct carrier phase velocity for 2-D slab cases const polyMeshInfo& meshInfo = td.cloud().meshInfo(); if (meshInfo.caseIs2dSlab()) { - Uc.component(meshInfo.emptyComponent()) = 0.0; + Uc_.component(meshInfo.emptyComponent()) = 0.0; } - // Update relative velocity - Ur_ = U_ - Uc; - // Return linearised term from drag model -// const scalar Cud = td.cloud().drag().Cu - Cud = td.cloud().drag().Cu - ( - Ur_, - d_, - rhoc, - rho_, - muc - ); - - // Update velocity - treat as 3-D - const vector ap = (1.0 - rhoc/rho_)*td.g(); - const scalar bp = 1.0/Cud; + Cud = td.cloud().drag().Cu(U_ - Uc_, d_, rhoc_, rho_, muc_); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Set new particle velocity //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // Analytical -// const scalar expTerm = exp(-dt/bp); -// vector Unew = Uc + (U_ - Uc)*expTerm + ap*bp*(1.0 - expTerm); + // Update velocity - treat as 3-D + const scalar bp = 1.0/(Cud + VSMALL); + const vector ap = Uc_/bp + rhoc_/rho_*td.g(); - // Euler-implicit - vector Unew = (U_ + dt*(ap + Uc/bp))/(1.0 + dt/bp); + vector Unew = td.cloud().UIntegrator().integrate(U_, dt, ap, bp); + +// Info<< "U_, Unew = " << U_ << ", " << Unew << endl; + + // Calculate the momentum transfer to the continuous phase + dUTrans = -mass()*(Unew - U_); // Make corrections for 2-D cases if (meshInfo.caseIs2d()) @@ -148,6 +172,7 @@ Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity { // Remove the slab normal parcel velocity component Unew.component(meshInfo.emptyComponent()) = 0.0; + dUTrans.component(meshInfo.emptyComponent()) = 0.0; // Snap parcels to central plane this->position().component(meshInfo.emptyComponent()) = @@ -172,13 +197,15 @@ Foam::vector Foam::KinematicParcel<ParcelType>::calcVelocity // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template <class ParcelType> -template <class TrackingData> +template<class ParcelType> +template<class TrackData> bool Foam::KinematicParcel<ParcelType>::move ( - TrackingData& td + TrackData& td ) { + ParcelType& p = static_cast<ParcelType&>(*this); + td.switchProcessor = false; td.keepParticle = true; @@ -186,7 +213,7 @@ bool Foam::KinematicParcel<ParcelType>::move const polyBoundaryMesh& pbMesh = mesh.boundaryMesh(); const scalar deltaT = mesh.time().deltaT().value(); - scalar tEnd = (1.0 - this->stepFraction())*deltaT; + scalar tEnd = (1.0 - p.stepFraction())*deltaT; const scalar dtMax = tEnd; while (td.keepParticle && !td.switchProcessor && tEnd > SMALL) @@ -196,51 +223,33 @@ bool Foam::KinematicParcel<ParcelType>::move // Remember which cell the Parcel is in // since this will change if a face is hit - label celli = this->cell(); + label celli = p.cell(); - dt *= trackToFace(this->position() + dt*U_, td); + dt *= p.trackToFace(p.position() + dt*U_, td); tEnd -= dt; - this->stepFraction() = 1.0 - tEnd/deltaT; - - cellPointWeight cpw - ( - mesh, - this->position(), - celli, - faceInterpolation() - ); - scalar rhoc = td.rhoInterp().interpolate(cpw); - vector Uc = td.UInterp().interpolate(cpw); - scalar muc = td.muInterp().interpolate(cpw); - - Uc = td.cloud().dispersion().update - ( - dt, - celli, - U_, - Uc, - UTurb_, - tTurb_ - ); + p.stepFraction() = 1.0 - tEnd/deltaT; + + // Update cell based properties + p.updateCellQuantities(td, dt, celli); if (td.cloud().coupled()) { - calcCoupled(td, celli, dt, rhoc, Uc, muc); + p.calcCoupled(td, dt, celli); } else { - calcUncoupled(td, dt, rhoc, Uc, muc); + p.calcUncoupled(td, dt, celli); } - if (this->onBoundary() && td.keepParticle) + if (p.onBoundary() && td.keepParticle) { - if (this->face() > -1) + if (p.face() > -1) { if ( isType<processorPolyPatch> - (pbMesh[this->patch(this->face())]) + (pbMesh[p.patch(p.face())]) ) { td.switchProcessor = true; @@ -253,19 +262,19 @@ bool Foam::KinematicParcel<ParcelType>::move } -template <class ParcelType> -template <class TrackingData> +template<class ParcelType> +template<class TrackData> void Foam::KinematicParcel<ParcelType>::hitProcessorPatch ( const processorPolyPatch&, - TrackingData& td + TrackData& td ) { td.switchProcessor = true; } -template <class ParcelType> +template<class ParcelType> void Foam::KinematicParcel<ParcelType>::hitProcessorPatch ( const processorPolyPatch&, @@ -274,19 +283,19 @@ void Foam::KinematicParcel<ParcelType>::hitProcessorPatch {} -template <class ParcelType> -template <class TrackingData> +template<class ParcelType> +template<class TrackData> void Foam::KinematicParcel<ParcelType>::hitWallPatch ( const wallPolyPatch& wpp, - TrackingData& td + TrackData& td ) { td.cloud().wallInteraction().correct(wpp, this->face(), U_); } -template <class ParcelType> +template<class ParcelType> void Foam::KinematicParcel<ParcelType>::hitWallPatch ( const wallPolyPatch&, @@ -295,19 +304,19 @@ void Foam::KinematicParcel<ParcelType>::hitWallPatch {} -template <class ParcelType> -template <class TrackingData> +template<class ParcelType> +template<class TrackData> void Foam::KinematicParcel<ParcelType>::hitPatch ( const polyPatch&, - TrackingData& td + TrackData& td ) { td.keepParticle = false; } -template <class ParcelType> +template<class ParcelType> void Foam::KinematicParcel<ParcelType>::hitPatch ( const polyPatch&, @@ -316,7 +325,7 @@ void Foam::KinematicParcel<ParcelType>::hitPatch {} -template <class ParcelType> +template<class ParcelType> void Foam::KinematicParcel<ParcelType>::transformProperties ( const tensor& T @@ -327,7 +336,7 @@ void Foam::KinematicParcel<ParcelType>::transformProperties } -template <class ParcelType> +template<class ParcelType> void Foam::KinematicParcel<ParcelType>::transformProperties ( const vector& separation diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H index 6ed7d6d8d7c508ee3477fd05184a8d7d64694cb7..f18423e2576aa92b3714931f0d6ce09699ac8e0d 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H @@ -26,10 +26,8 @@ Class Foam::KinematicParcel Description - Kinematic parcel class with one-way coupling with the continuous - phase. - - Sub-models include: + Kinematic parcel class with one/two-way coupling with the continuous + phase. Sub-models include: - drag - break-up - wall interactions @@ -61,6 +59,8 @@ namespace Foam template<class ParcelType> class KinematicParcel; +// Forward declaration of friend functions + template<class ParcelType> Ostream& operator<< ( @@ -72,86 +72,15 @@ Ostream& operator<< Class KinematicParcel Declaration \*---------------------------------------------------------------------------*/ -template <class ParcelType> +template<class ParcelType> class KinematicParcel : public Particle<ParcelType> { - // Private member data - - //- Parcel type id - label typeId_; - - //- Diameter [m] - scalar d_; - - //- Velocity of Parcel [m/s] - vector U_; - - //- Relative velocity of Parcel [m/s] - vector Ur_; - - //- Number of particles in Parcel - scalar nParticle_; - - //- Density [kg/m3] - scalar rho_; - - //- Time spent in turbulent eddy - scalar tTurb_; - - //- Turbulent velocity fluctuation - vector UTurb_; - - -protected: - - // Protected member functions - - template<class TrackingData> - void calcCoupled - ( - TrackingData& td, - const label celli, - const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc - ); - - template<class TrackingData> - void calcUncoupled - ( - TrackingData& td, - const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc - ); - - //- Calculate new particle velocity - template<class TrackingData> - vector calcVelocity - ( - TrackingData& td, - const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - scalar& Cud - ); - - public: - //- Runtime type information - TypeName("KinematicParcel"); - - friend class Cloud<ParcelType>; - - - //- Class to hold particle constant properties + //- Class to hold kinematic particle constant properties class constantProperties { @@ -166,23 +95,20 @@ public: public: - // Constructors - constantProperties - ( - const dictionary& dict - ); + //- Constructor + constantProperties(const dictionary& dict); // Member functions - // Access - + //- Return const access to the particle density inline const scalar rho0() const; + //- Return const access to the minimum particle mass inline const scalar minParticleMass() const; }; - //- Class used to pass tracking data to the trackToFace function + //- Class used to pass kinematic tracking data to the trackToFace function class trackData : public Particle<ParcelType>::trackData @@ -196,11 +122,17 @@ public: //- Particle constant properties const constantProperties& constProps_; - //- Interpolators for continuous phase fields - const interpolationCellPoint<scalar>& rhoInterp_; - const interpolationCellPoint<vector>& UInterp_; - const interpolationCellPoint<scalar>& muInterp_; + // Interpolators for continuous phase fields + + //- Density interpolator + const interpolation<scalar>& rhoInterp_; + + //- Velocity interpolator + const interpolation<vector>& UInterp_; + + //- Dynamic viscosity interpolator + const interpolation<scalar>& muInterp_; //- Local gravitational or other body-force acceleration const vector& g_; @@ -208,39 +140,106 @@ public: public: - bool switchProcessor; - bool keepParticle; - - // Constructors - inline trackData + //- Construct from components + inline trackData ( KinematicCloud<ParcelType>& cloud, const constantProperties& constProps, - const interpolationCellPoint<scalar>& rhoInterp, - const interpolationCellPoint<vector>& UInterp, - const interpolationCellPoint<scalar>& muInterp, + const interpolation<scalar>& rhoInterp, + const interpolation<vector>& UInterp, + const interpolation<scalar>& muInterp, const vector& g ); // Member functions + //- Return access to the owner cloud inline KinematicCloud<ParcelType>& cloud(); + //- Return const access to the constant properties inline const constantProperties& constProps() const; - inline const interpolationCellPoint<scalar>& rhoInterp() const; + //- Return conat access to the interpolator for continuous + // phase density field + inline const interpolation<scalar>& rhoInterp() const; - inline const interpolationCellPoint<vector>& UInterp() const; + //- Return conat access to the interpolator for continuous + // phase velocity field + inline const interpolation<vector>& UInterp() const; - inline const interpolationCellPoint<scalar>& muInterp() const; + //- Return conat access to the interpolator for continuous + // phase dynamic viscosity field + inline const interpolation<scalar>& muInterp() const; + // Return const access to the gravitational acceleration vector inline const vector& g() const; }; +protected: + + // Protected member data + + // Parcel properties + + //- Parcel type id + label typeId_; + + //- Diameter [m] + scalar d_; + + //- Velocity of Parcel [m/s] + vector U_; + + //- Number of particles in Parcel + scalar nParticle_; + + //- Density [kg/m3] + scalar rho_; + + //- Time spent in turbulent eddy [s] + scalar tTurb_; + + //- Turbulent velocity fluctuation [m/s] + vector UTurb_; + + + // Cell-based quantities + + // - Density [kg/m3] + scalar rhoc_; + + // - Velocity [m/s] + vector Uc_; + + // - Viscosity [Pa.s] + scalar muc_; + + + // Protected member functions + + //- Calculate new particle velocity + template<class TrackData> + vector calcVelocity + ( + TrackData& td, + const scalar dt, + scalar& Cud, + vector& dUTrans + ); + + +public: + + //- Runtime type information + TypeName("KinematicParcel"); + + friend class Cloud<ParcelType>; + + // Constructors //- Construct from components @@ -276,10 +275,10 @@ public: // Access //- Return type id - inline const label& typeId() const; + inline const label typeId() const; //- Return diameter - inline const scalar& d() const; + inline const scalar d() const; inline scalar& d(); //- Return velocity @@ -291,15 +290,15 @@ public: inline vector& Ur(); //- Return number of particles - inline const scalar& nParticle() const; + inline const scalar nParticle() const; inline scalar& nParticle(); //- Return density - inline const scalar& rho() const; + inline const scalar rho() const; inline scalar& rho(); //- Return time spent in turbulent eddy - inline const scalar& tTurb() const; + inline const scalar tTurb() const; inline scalar& tTurb(); //- Return turbulent velocity fluctuation @@ -310,7 +309,8 @@ public: // the particle can be in the n direction inline scalar wallImpactDistance(const vector& n) const; - //- Return the index of the face to be used in the interpolation routine + //- Return the index of the face to be used in the interpolation + // routine inline label faceInterpolation() const; //- Particle volume @@ -326,54 +326,84 @@ public: inline scalar areaS() const; - // Tracking + // Main calculation loop - //- Move the parcel - template<class TrackingData> - bool move + //- Update cell based quantities + template<class TrackData> + void updateCellQuantities ( - TrackingData& td + TrackData& td, + const scalar dt, + const label celli ); + //- Coupled calculation with the continuous phase + template<class TrackData> + void calcCoupled + ( + TrackData& td, + const scalar dt, + const label celli + ); + + //- Uncoupled calculation with the continuous phase + template<class TrackData> + void calcUncoupled + ( + TrackData& td, + const scalar dt, + const label + ); + + + // Tracking + + //- Move the parcel + template<class TrackData> + bool move(TrackData& td); + + + // Patch interactions + //- Overridable function to handle the particle hitting a // processorPatch - template<class TrackingData> + template<class TrackData> void hitProcessorPatch ( const processorPolyPatch&, - TrackingData& td + TrackData& td ); //- Overridable function to handle the particle hitting a // processorPatch without trackData - virtual void hitProcessorPatch + void hitProcessorPatch ( const processorPolyPatch&, int& ); //- Overridable function to handle the particle hitting a wallPatch - template<class TrackingData> + template<class TrackData> void hitWallPatch ( const wallPolyPatch&, - TrackingData& td + TrackData& td ); //- Overridable function to handle the particle hitting a wallPatch // without trackData - virtual void hitWallPatch + void hitWallPatch ( const wallPolyPatch&, int& ); //- Overridable function to handle the particle hitting a polyPatch - template<class TrackingData> + template<class TrackData> void hitPatch ( const polyPatch&, - TrackingData& td + TrackData& td ); //- Overridable function to handle the particle hitting a polyPatch @@ -395,15 +425,10 @@ public: // I-O - static void readFields - ( - KinematicCloud<ParcelType>& c - ); + static void readFields(KinematicCloud<ParcelType>& c); + + static void writeFields(const KinematicCloud<ParcelType>& c); - static void writeFields - ( - const KinematicCloud<ParcelType>& c - ); // Ostream Operator diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H index fe8ae288c30579f463f8ac2fa3dced3084ebdc89..daecf8d405465c7ff93fa315ac7850f42c5d2a36 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H @@ -42,9 +42,9 @@ inline Foam::KinematicParcel<ParcelType>::trackData::trackData ( KinematicCloud<ParcelType>& cloud, const constantProperties& constProps, - const interpolationCellPoint<scalar>& rhoInterp, - const interpolationCellPoint<vector>& UInterp, - const interpolationCellPoint<scalar>& muInterp, + const interpolation<scalar>& rhoInterp, + const interpolation<vector>& UInterp, + const interpolation<scalar>& muInterp, const vector& g ) : @@ -75,11 +75,13 @@ inline Foam::KinematicParcel<ParcelType>::KinematicParcel typeId_(typeId), d_(d0), U_(U0), - Ur_(vector::zero), nParticle_(nParticle0), rho_(constProps.rho0()), tTurb_(0.0), - UTurb_(vector::zero) + UTurb_(vector::zero), + rhoc_(0.0), + Uc_(vector::zero), + muc_(0.0) {} @@ -120,7 +122,7 @@ Foam::KinematicParcel<ParcelType>::trackData::constProps() const template<class ParcelType> -inline const Foam::interpolationCellPoint<Foam::scalar>& +inline const Foam::interpolation<Foam::scalar>& Foam::KinematicParcel<ParcelType>::trackData::rhoInterp() const { return rhoInterp_; @@ -128,7 +130,7 @@ Foam::KinematicParcel<ParcelType>::trackData::rhoInterp() const template <class ParcelType> -inline const Foam::interpolationCellPoint<Foam::vector>& +inline const Foam::interpolation<Foam::vector>& Foam::KinematicParcel<ParcelType>::trackData::UInterp() const { return UInterp_; @@ -136,7 +138,7 @@ Foam::KinematicParcel<ParcelType>::trackData::UInterp() const template<class ParcelType> -inline const Foam::interpolationCellPoint<Foam::scalar>& +inline const Foam::interpolation<Foam::scalar>& Foam::KinematicParcel<ParcelType>::trackData::muInterp() const { return muInterp_; @@ -154,14 +156,14 @@ Foam::KinematicParcel<ParcelType>::trackData::g() const // * * * * * * * * * * KinematicParcel Member Functions * * * * * * * * * * // template <class ParcelType> -inline const Foam::label& Foam::KinematicParcel<ParcelType>::typeId() const +inline const Foam::label Foam::KinematicParcel<ParcelType>::typeId() const { return typeId_; } template <class ParcelType> -inline const Foam::scalar& Foam::KinematicParcel<ParcelType>::d() const +inline const Foam::scalar Foam::KinematicParcel<ParcelType>::d() const { return d_; } @@ -214,21 +216,7 @@ inline Foam::vector& Foam::KinematicParcel<ParcelType>::U() template <class ParcelType> -inline const Foam::vector& Foam::KinematicParcel<ParcelType>::Ur() const -{ - return Ur_; -} - - -template <class ParcelType> -inline Foam::vector& Foam::KinematicParcel<ParcelType>::Ur() -{ - return Ur_; -} - - -template <class ParcelType> -inline const Foam::scalar& Foam::KinematicParcel<ParcelType>::nParticle() const +inline const Foam::scalar Foam::KinematicParcel<ParcelType>::nParticle() const { return nParticle_; } @@ -242,7 +230,7 @@ inline Foam::scalar& Foam::KinematicParcel<ParcelType>::nParticle() template <class ParcelType> -inline const Foam::scalar& Foam::KinematicParcel<ParcelType>::rho() const +inline const Foam::scalar Foam::KinematicParcel<ParcelType>::rho() const { return rho_; } @@ -256,7 +244,7 @@ inline Foam::scalar& Foam::KinematicParcel<ParcelType>::rho() template <class ParcelType> -inline const Foam::scalar& Foam::KinematicParcel<ParcelType>::tTurb() const +inline const Foam::scalar Foam::KinematicParcel<ParcelType>::tTurb() const { return tTurb_; } @@ -286,7 +274,7 @@ inline Foam::vector& Foam::KinematicParcel<ParcelType>::UTurb() template <class ParcelType> inline Foam::scalar Foam::KinematicParcel<ParcelType>::volume() const { - return mathematicalConstant::pi/6*pow(d_, 3); + return mathematicalConstant::pi/6.0*pow3(d_); } @@ -300,7 +288,7 @@ inline Foam::scalar Foam::KinematicParcel<ParcelType>::mass() const template <class ParcelType> inline Foam::scalar Foam::KinematicParcel<ParcelType>::areaP() const { - return 0.25*mathematicalConstant::pi*d_*d_; + return 0.25*areaS(); } diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C index 993b0e3de824da42e9b3a244ff95ab9e89798b53..ccef539c1b291bd5bdb683877cc9f4af6e331773 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C @@ -41,11 +41,13 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel typeId_(0), d_(0.0), U_(vector::zero), - Ur_(vector::zero), - nParticle_(0), + nParticle_(0.0), rho_(0.0), tTurb_(0.0), - UTurb_(vector::zero) + UTurb_(vector::zero), + rhoc_(0.0), + Uc_(vector::zero), + muc_(0.0) { if (readFields) { @@ -54,8 +56,7 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel typeId_ = readLabel(is); d_ = readScalar(is); is >> U_; - is >> Ur_; - nParticle_ = readLabel(is); + nParticle_ = readScalar(is); rho_ = readScalar(is); tTurb_ = readScalar(is); is >> UTurb_; @@ -68,7 +69,6 @@ Foam::KinematicParcel<ParcelType>::KinematicParcel sizeof(typeId_) + sizeof(d_) + sizeof(U_) - + sizeof(Ur_) + sizeof(nParticle_) + sizeof(rho_) + sizeof(tTurb_) @@ -106,9 +106,6 @@ void Foam::KinematicParcel<ParcelType>::readFields IOField<vector> U(c.fieldIOobject("U")); c.checkFieldIOobject(c, U); - IOField<vector> Ur(c.fieldIOobject("Ur")); - c.checkFieldIOobject(c, Ur); - IOField<scalar> nParticle(c.fieldIOobject("nParticle")); c.checkFieldIOobject(c, nParticle); @@ -129,7 +126,6 @@ void Foam::KinematicParcel<ParcelType>::readFields p.typeId_ = typeId[i]; p.d_ = d[i]; p.U_ = U[i]; - p.Ur_ = Ur[i]; p.nParticle_ = nParticle[i]; p.rho_ = rho[i]; p.tTurb_ = tTurb[i]; @@ -152,7 +148,6 @@ void Foam::KinematicParcel<ParcelType>::writeFields IOField<label> typeId(c.fieldIOobject("typeId"), np); IOField<scalar> d(c.fieldIOobject("d"), np); IOField<vector> U(c.fieldIOobject("U"), np); - IOField<vector> Ur(c.fieldIOobject("Ur"), np); IOField<scalar> nParticle(c.fieldIOobject("nParticle"), np); IOField<scalar> rho(c.fieldIOobject("rho"), np); IOField<scalar> tTurb(c.fieldIOobject("tTurb"), np); @@ -166,7 +161,6 @@ void Foam::KinematicParcel<ParcelType>::writeFields typeId[i] = p.typeId(); d[i] = p.d(); U[i] = p.U(); - Ur[i] = p.Ur(); nParticle[i] = p.nParticle(); rho[i] = p.rho(); tTurb[i] = p.tTurb(); @@ -177,7 +171,6 @@ void Foam::KinematicParcel<ParcelType>::writeFields typeId.write(); d.write(); U.write(); - Ur.write(); nParticle.write(); rho.write(); tTurb.write(); @@ -200,7 +193,6 @@ Foam::Ostream& Foam::operator<< << token::SPACE << p.typeId() << token::SPACE << p.d() << token::SPACE << p.U() - << token::SPACE << p.Ur() << token::SPACE << p.nParticle() << token::SPACE << p.rho() << token::SPACE << p.tTurb() @@ -211,11 +203,10 @@ Foam::Ostream& Foam::operator<< os << static_cast<const Particle<ParcelType>& >(p); os.write ( - reinterpret_cast<const char*>(&p.typeId()), + reinterpret_cast<const char*>(p.typeId()), sizeof(p.typeId()) + sizeof(p.d()) + sizeof(p.U()) - + sizeof(p.Ur()) + sizeof(p.nParticle()) + sizeof(p.rho()) + sizeof(p.tTurb()) diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C index 44e299efb5c58c2cfcaceec92d0a86a7833075c8..e1bae0e5f712e4bf7d70220f00fdbf46c6bf1156 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -29,28 +29,47 @@ License // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // template<class ParcelType> -template<class TrackingData> +template<class TrackData> +void Foam::ReactingParcel<ParcelType>::updateCellQuantities +( + TrackData& td, + const scalar dt, + const label celli +) +{ + ThermoParcel<ParcelType>::updateCellQuantities(td, dt, celli); + + pc_ = td.pInterp().interpolate(this->position(), celli); +} + + +template<class ParcelType> +template<class TrackData> void Foam::ReactingParcel<ParcelType>::calcCoupled ( - TrackingData& td, - const label celli, + TrackData& td, const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc, - const scalar pc + const label celli ) { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Define local properties at beginning of timestep // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - const vector U0 = this->U(); - const scalar T0 = this->T(); + const vector U0 = this->U_; const scalar mass0 = this->mass(); - const scalar cp0 = this->cp(); - const scalar np0 = this->nParticle(); + const scalar np0 = this->nParticle_; + const scalar T0 = this->T_; + const scalar cp0 = this->cp_; + + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialise transfer terms + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Momentum transfer from the particle to the carrier phase + vector dUTrans = vector::zero; + + // Enthalpy transfer from the particle to the carrier phase + scalar dhTrans = 0.0; // Mass transfer from particle to carrier phase // - components exist in particle already @@ -69,14 +88,14 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled // Calculate heat transfer - update T // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar htc = 0.0; - scalar T1 = calcHeatTransfer(td, celli, dt, rhoc, Uc, muc, Tc, cpc, htc); + scalar T1 = calcHeatTransfer(td, dt, celli, htc, dhTrans); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate velocity - update U // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar Cud = 0.0; - const vector U1 = calcVelocity(td, dt, rhoc, Uc, muc, Cud); + const vector U1 = calcVelocity(td, dt, Cud, dUTrans); // ~~~~~~~~~~~~~~~~~~~~~~~ @@ -88,18 +107,7 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate surface reactions // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ - calcSurfaceReactions - ( - td, - dt, - celli, - rhoc, - Tc, - T0, - T1, - dMassMTSR, - dMassSR - ); + calcSurfaceReactions(td, dt, celli, T0, T1, dMassMTSR, dMassSR); // New total mass const scalar mass1 = mass0 - sum(dMassMT) - dMassMTSR; @@ -112,7 +120,7 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled // Specific heat capacity of non-volatile components const scalar cpNonVolatile = ( - YMixture_[1]*td.cloud().composition().cpLiquid(YLiquid_, pc, Tc) + YMixture_[1]*td.cloud().composition().cpLiquid(YLiquid_, pc_, this->Tc_) + YMixture_[2]*td.cloud().composition().cpSolid(YSolid_) )/(YMixture_[1] + YMixture_[2]); @@ -129,18 +137,18 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled // Transfer mass lost from particle to carrier mass source forAll(dMassMT, i) { - td.cloud().rhoTrans(i)[celli] += - np0*(dMassMT[i] + dMassSR[i]); + td.cloud().rhoTrans(i)[celli] += np0*(dMassMT[i] + dMassSR[i]); } // Update momentum transfer - td.cloud().UTrans()[celli] += np0*(mass0*U0 - mass1*U1); + td.cloud().UTrans()[celli] += np0*dUTrans; // Accumulate coefficient to be applied in carrier phase momentum coupling td.cloud().UCoeff()[celli] += np0*mass0*Cud; // Update enthalpy transfer - td.cloud().hTrans()[celli] += np0*(mass0*cp0*T0 - mass1*cp1*T1); +// td.cloud().hTrans()[celli] += np0*(mass0*cp0*T0 - mass1*cp1*T1); + td.cloud().hTrans()[celli] += np0*((mass0*cp0 - mass1*cp1)*T0 + dhTrans); // Accumulate coefficient to be applied in carrier phase enthalpy coupling td.cloud().hCoeff()[celli] += np0*htc*this->areaS(); @@ -166,45 +174,49 @@ void Foam::ReactingParcel<ParcelType>::calcCoupled // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ else { - this->U() = U1; - this->T() = T1; - this->cp() = cp1; + this->U_ = U1; + this->T_ = T1; + this->cp_ = cp1; // Update particle density or diameter if (td.cloud().massTransfer().changesVolume()) { - this->d() = cbrt(mass1/this->rho()*6.0/mathematicalConstant::pi); + this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi); } else { - this->rho() = mass1/this->volume(); + this->rho_ = mass1/this->volume(); } } } template<class ParcelType> -template<class TrackingData> +template<class TrackData> void Foam::ReactingParcel<ParcelType>::calcUncoupled ( - TrackingData& td, - const label celli, + TrackData& td, const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc, - const scalar pc + const label celli ) { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Define local properties at beginning of timestep // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - const scalar T0 = this->T(); + const scalar T0 = this->T_; const scalar mass0 = this->mass(); // const scalar cp0 = this->cp(); + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialise transfer terms + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Momentum transfer from the particle to the carrier phase + vector dUTrans = vector::zero; + + // Enthalpy transfer from the particle to the carrier phase + scalar dhTrans = 0.0; + // Mass transfer from particle to carrier phase // - components exist in particle already scalarList dMassMT(td.cloud().gases().size(), 0.0); @@ -222,7 +234,7 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled // Calculate heat transfer - update T // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar htc = 0.0; - scalar T1 = calcHeatTransfer(td, celli, dt, rhoc, Uc, muc, Tc, cpc, htc); + scalar T1 = calcHeatTransfer(td, dt, celli, htc, dhTrans); // Limit new temp max by vapourisarion temperature T1 = min(td.constProps().Tvap(), T1); @@ -231,8 +243,8 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate velocity - update U // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - scalar Fd = 0.0; - const vector U1 = calcVelocity(td, dt, rhoc, Uc, muc, Fd); + scalar Cud = 0.0; + const vector U1 = calcVelocity(td, dt, Cud, dUTrans); // ~~~~~~~~~~~~~~~~~~~~~~~ @@ -249,8 +261,6 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled td, dt, celli, - rhoc, - Tc, T0, T1, dMassMTSR, @@ -268,7 +278,7 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled // Specific heat capacity of non-volatile components const scalar cpNonVolatile = ( - YMixture_[1]*td.cloud().composition().cpLiquid(YLiquid_, pc, Tc) + YMixture_[1]*td.cloud().composition().cpLiquid(YLiquid_, pc_, this->Tc_) + YMixture_[2]*td.cloud().composition().cpSolid(YSolid_) )/(YMixture_[1] + YMixture_[2]); @@ -290,28 +300,28 @@ void Foam::ReactingParcel<ParcelType>::calcUncoupled // ~~~~~~~~~~~~~~~~~~~~~~~~~~~ else { - this->U() = U1; - this->T() = T1; - this->cp() = cp1; + this->U_ = U1; + this->T_ = T1; + this->cp_ = cp1; // Update particle density or diameter if (td.cloud().massTransfer().changesVolume()) { - this->d() = cbrt(mass1/this->rho()*6.0/mathematicalConstant::pi); + this->d_ = cbrt(mass1/this->rho_*6.0/mathematicalConstant::pi); } else { - this->rho() = mass1/this->volume(); + this->rho_ = mass1/this->volume(); } } } template<class ParcelType> -template<class TrackingData> +template<class TrackData> void Foam::ReactingParcel<ParcelType>::calcMassTransfer ( - TrackingData& td, + TrackData& td, const scalar dt, const scalar T0, const scalar T1, @@ -333,8 +343,8 @@ void Foam::ReactingParcel<ParcelType>::calcMassTransfer if ( !td.cloud().massTransfer().active() - || this->T()<td.constProps().Tvap() - || this->T()<td.constProps().Tbp() + || this->T_<td.constProps().Tvap() + || this->T_<td.constProps().Tbp() ) { return; @@ -371,14 +381,12 @@ void Foam::ReactingParcel<ParcelType>::calcMassTransfer template<class ParcelType> -template<class TrackingData> +template<class TrackData> void Foam::ReactingParcel<ParcelType>::calcSurfaceReactions ( - TrackingData& td, + TrackData& td, const scalar dt, const label celli, - const scalar rhoc, - const scalar Tc, const scalar T0, const scalar T1, scalar& dMassMTSR, @@ -397,11 +405,11 @@ void Foam::ReactingParcel<ParcelType>::calcSurfaceReactions ( dt, celli, - this->d(), + this->d_, T0, T1, - Tc, - rhoc, + this->Tc_, + this->rhoc_, this->mass(), YGas_, YLiquid_, @@ -415,92 +423,6 @@ void Foam::ReactingParcel<ParcelType>::calcSurfaceReactions // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template<class ParcelType> -template<class TrackingData> -bool Foam::ReactingParcel<ParcelType>::move -( - TrackingData& td -) -{ - td.switchProcessor = false; - td.keepParticle = true; - - const polyMesh& mesh = td.cloud().pMesh(); - const polyBoundaryMesh& pbMesh = mesh.boundaryMesh(); - - const scalar deltaT = mesh.time().deltaT().value(); - scalar tEnd = (1.0 - this->stepFraction())*deltaT; - const scalar dtMax = tEnd; - - while (td.keepParticle && !td.switchProcessor && tEnd > SMALL) - { - // Set the Lagrangian time-step - scalar dt = min(dtMax, tEnd); - - // Remember which cell the parcel is in - // since this will change if a face is hit - label celli = this->cell(); - - dt *= trackToFace(this->position() + dt*this->U(), td); - - tEnd -= dt; - - this->stepFraction() = 1.0 - tEnd/deltaT; - - // Avoid div0 in reacting sub-models - if (dt < SMALL) - { - break; - } - - cellPointWeight cpw - ( - mesh, - this->position(), - celli, - this->faceInterpolation() - ); - scalar rhoc = td.rhoInterp().interpolate(cpw); - vector Uc = td.UInterp().interpolate(cpw); - scalar muc = td.muInterp().interpolate(cpw); - scalar Tc = td.TInterp().interpolate(cpw); - scalar cpc = td.cpInterp().interpolate(cpw); - scalar pc = td.pInterp().interpolate(cpw); - - Uc = td.cloud().dispersion().update - ( - dt, - celli, - this->U(), - Uc, - this->UTurb(), - this->tTurb() - ); - - if (td.cloud().coupled()) - { - calcCoupled(td, celli, dt, rhoc, Uc, muc, Tc, cpc, pc); - } - else - { - calcUncoupled(td, celli, dt, rhoc, Uc, muc, Tc, cpc, pc); - } - - if (this->onBoundary() && td.keepParticle) - { - if (this->face() > -1) - { - if (isType<processorPolyPatch>(pbMesh[this->patch(this->face())])) - { - td.switchProcessor = true; - } - } - } - } - - return td.keepParticle; -} - // * * * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H index ea8adee569071dfe974be730e35d4de18033df57..3b17542cd8e96732cca36ed9f0151e8b6ff11815 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.H @@ -26,16 +26,14 @@ Class Foam::ReactingParcel Description - Reacting parcel class with one-way coupling with the continuous - phase. - - Includes thermo parcel sub-models, plus: + Reactinf parcel class with one/two-way coupling with the continuous + phase. Includes thermo parcel sub-models, plus: - combustion SourceFiles - reactingParcelI.H + ReactingParcelI.H ReactingParcel.C - reactingParcelIO.C + ReactingParcelIO.C \*---------------------------------------------------------------------------*/ @@ -75,96 +73,9 @@ class ReactingParcel public ThermoParcel<ParcelType> { - // Private data - - //- Initial particle mass - scalar mass0_; - - //- Mass fractions of mixture - scalarField YMixture_; - - //- Mass fractions of gases - scalarField YGas_; - - //- Mass fractions of liquids - scalarField YLiquid_; - - //- Mass fractions of solids - scalarField YSolid_; - - //- Flag to say that the particle is allowed to combust - // Only true one ALL volatiles have been evolved from the particle - bool canCombust_; - - -protected: - - // Protected member functions - - template<class TrackingData> - void calcCoupled - ( - TrackingData& td, - const label celli, - const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar Cpc, - const scalar pc - ); - - template<class TrackingData> - void calcUncoupled - ( - TrackingData& td, - const label celli, - const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar Cpc, - const scalar pc - ); - - //- Calculate mass transfer - template<class TrackingData> - void calcMassTransfer - ( - TrackingData& td, - const scalar dt, - const scalar T0, - const scalar T1, - scalarList& dMassMT - ); - - //- Calculate surface reactions - template<class TrackingData> - void calcSurfaceReactions - ( - TrackingData& td, - const scalar dt, - const label celli, - const scalar rhoc, - const scalar Tc, - const scalar T0, - const scalar T1, - scalar& dMassMTSR, - scalarList& dMassMT - ); - - public: - //- Runtime type information - TypeName("ReactingParcel"); - - friend class Cloud<ParcelType>; - - - //- Class to hold particle constant properties + //- Class to hold reacting particle constant properties class constantProperties : public ThermoParcel<ParcelType>::constantProperties @@ -172,31 +83,27 @@ public: // Private data - //- Vapourisation temperature + //- Vapourisation temperature [K] const scalar Tvap_; - //- Boiling point + //- Boiling point [K] const scalar Tbp_; public: - // Constructors - constantProperties - ( - const dictionary& dict - ); - - // Member functions + //- Constructor + constantProperties(const dictionary& dict); - // Access + //- Return const access to the vapourisation temperature + inline const scalar Tvap() const; - inline const scalar Tvap() const; - inline const scalar Tbp() const; + //- Return const access to the boiling point + inline const scalar Tbp() const; }; - //- Class used to pass tracking data to the trackToFace function + //- Class used to pass reacting tracking data to the trackToFace function class trackData : public ThermoParcel<ParcelType>::trackData @@ -210,38 +117,110 @@ public: //- Particle constant properties const constantProperties& constProps_; - //- Interpolators for continuous phase fields + //- Interpolator for continuous phase pressure field + const interpolation<scalar>& pInterp_; - const interpolationCellPoint<scalar>& pInterp_; public: // Constructors + //- Construct from components inline trackData ( ReactingCloud<ParcelType>& cloud, const constantProperties& constProps, - const interpolationCellPoint<scalar>& rhoInterp, - const interpolationCellPoint<vector>& UInterp, - const interpolationCellPoint<scalar>& muInterp, - const interpolationCellPoint<scalar>& TInterp, - const interpolationCellPoint<scalar>& CpInterp, - const interpolationCellPoint<scalar>& pInterp, + const interpolation<scalar>& rhoInterp, + const interpolation<vector>& UInterp, + const interpolation<scalar>& muInterp, + const interpolation<scalar>& TInterp, + const interpolation<scalar>& CpInterp, + const interpolation<scalar>& pInterp, const vector& g ); // Member functions + //- Return access to the owner cloud inline ReactingCloud<ParcelType>& cloud(); + //- Return const access to the constant properties inline const constantProperties& constProps() const; - inline const interpolationCellPoint<scalar>& pInterp() const; + //- Return conat access to the interpolator for continuous + // phase pressure field + inline const interpolation<scalar>& pInterp() const; }; +protected: + + // Protected data + + // Parcel properties + + //- Initial particle mass [kg] + scalar mass0_; + + //- Mass fractions of mixture [] + scalarField YMixture_; + + //- Mass fractions of gases [] + scalarField YGas_; + + //- Mass fractions of liquids [] + scalarField YLiquid_; + + //- Mass fractions of solids [] + scalarField YSolid_; + + //- Flag to say that the particle is allowed to combust + // Only true after volatile content falls below threshold value + bool canCombust_; + + + // Cell-based quantities + + //- Pressure [Pa] + scalar pc_; + + + // Protected member functions + + //- Calculate mass transfer + template<class TrackData> + void calcMassTransfer + ( + TrackData& td, + const scalar dt, + const scalar T0, + const scalar T1, + scalarList& dMassMT + ); + + //- Calculate surface reactions + template<class TrackData> + void calcSurfaceReactions + ( + TrackData& td, + const scalar dt, + const label celli, + const scalar T0, + const scalar T1, + scalar& dMassMTSR, + scalarList& dMassMT + ); + + +public: + + //- Runtime type information + TypeName("ReactingParcel"); + + friend class Cloud<ParcelType>; + + // Constructors //- Construct from components @@ -301,27 +280,41 @@ public: inline scalar& mass0(); - // Tracking + // Main calculation loop - //- Move parcel - template<class TrackingData> - bool move + //- Update cell based quantities + template<class TrackData> + void updateCellQuantities ( - TrackingData& + TrackData& td, + const scalar dt, + const label celli ); - - // I-O - - static void readFields + //- Coupled calculation with the continuous phase + template<class TrackData> + void calcCoupled ( - ReactingCloud<ParcelType>& c + TrackData& td, + const scalar dt, + const label celli ); - static void writeFields + //- Uncoupled calculation with the continuous phase + template<class TrackData> + void calcUncoupled ( - const ReactingCloud<ParcelType>& c + TrackData& td, + const scalar dt, + const label ); + + + // I-O + + static void readFields(ReactingCloud<ParcelType>& c); + + static void writeFields(const ReactingCloud<ParcelType>& c); }; diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H index 65448d0dbe2620eeee70a90dcaae6c4bc97855fb..a29906a815c21e3d6e89e8429900c375bd8bd1c2 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelI.H @@ -43,12 +43,12 @@ inline Foam::ReactingParcel<ParcelType>::trackData::trackData ( ReactingCloud<ParcelType>& cloud, const constantProperties& constProps, - const interpolationCellPoint<scalar>& rhoInterp, - const interpolationCellPoint<vector>& UInterp, - const interpolationCellPoint<scalar>& muInterp, - const interpolationCellPoint<scalar>& TInterp, - const interpolationCellPoint<scalar>& CpInterp, - const interpolationCellPoint<scalar>& pInterp, + const interpolation<scalar>& rhoInterp, + const interpolation<vector>& UInterp, + const interpolation<scalar>& muInterp, + const interpolation<scalar>& TInterp, + const interpolation<scalar>& CpInterp, + const interpolation<scalar>& pInterp, const vector& g ) : @@ -101,7 +101,8 @@ inline Foam::ReactingParcel<ParcelType>::ReactingParcel YMixture_(YMixture0), YGas_(YGas0), YLiquid_(YLiquid0), - YSolid_(YSolid0) + YSolid_(YSolid0), + pc_(0.0) { // Set initial parcel mass mass0_ = this->mass(); @@ -145,7 +146,7 @@ Foam::ReactingParcel<ParcelType>::trackData::constProps() const template<class ParcelType> -inline const Foam::interpolationCellPoint<Foam::scalar>& +inline const Foam::interpolation<Foam::scalar>& Foam::ReactingParcel<ParcelType>::trackData::pInterp() const { return pInterp_; diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C index 83262dd3880a244d49a32d314eea27c59609a436..fa86e966d0fd44df71b467812f4a2cf47e0c7d69 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcelIO.C @@ -42,7 +42,8 @@ Foam::ReactingParcel<ParcelType>::ReactingParcel YMixture_(0), YGas_(0), YLiquid_(0), - YSolid_(0) + YSolid_(0), + pc_(0.0) { if (readFields) { diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C index b327a5b96247917e419faf1653d08f09fa9de34a..b1effd166faeb5b2dfdc0569a51272b89f9d4fc5 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.C @@ -29,42 +29,63 @@ License // * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * * // template<class ParcelType> -template<class TrackingData> +template<class TrackData> +void Foam::ThermoParcel<ParcelType>::updateCellQuantities +( + TrackData& td, + const scalar dt, + const label celli +) +{ + KinematicParcel<ParcelType>::updateCellQuantities(td, dt, celli); + + Tc_ = td.TInterp().interpolate(this->position(), celli); + cpc_ = td.cpInterp().interpolate(this->position(), celli); +} + + +template<class ParcelType> +template<class TrackData> void Foam::ThermoParcel<ParcelType>::calcCoupled ( - TrackingData& td, - const label celli, + TrackData& td, const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc + const label celli ) { // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Define local properties at beginning of timestep // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - const vector U0 = this->U(); - const scalar T0 = this->T(); + const vector U0 = this->U_; const scalar mass0 = this->mass(); - const scalar cp0 = this->cp(); - const scalar np0 = this->nParticle(); + const scalar np0 = this->nParticle_; +// const scalar T0 = T_; +// const scalar cp0 = cp_; + + + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialise transfer terms + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Momentum transfer from the particle to the carrier phase + vector dUTrans = vector::zero; + + // Enthalpy transfer from the particle to the carrier phase + scalar dhTrans = 0.0; // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate velocity - update U // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar Cud = 0.0; - const vector U1 = calcVelocity(td, dt, rhoc, Uc, muc, Cud); + const vector U1 = calcVelocity(td, dt, Cud, dUTrans); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate heat transfer - update T // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar htc = 0.0; - const scalar T1 = - calcHeatTransfer(td, celli, dt, rhoc, Uc, muc, Tc, cpc, htc); + const scalar T1 = calcHeatTransfer(td, dt, celli, htc, dhTrans); // ~~~~~~~~~~~~~~~~~~~~~~~ @@ -72,13 +93,13 @@ void Foam::ThermoParcel<ParcelType>::calcCoupled // ~~~~~~~~~~~~~~~~~~~~~~~ // Update momentum transfer - td.cloud().UTrans()[celli] += np0*(mass0*(U0 - U1)); + td.cloud().UTrans()[celli] += np0*dUTrans; // Accumulate coefficient to be applied in carrier phase momentum coupling td.cloud().UCoeff()[celli] += np0*mass0*Cud; // Update enthalpy transfer - td.cloud().hTrans()[celli] += np0*mass0*cp0*(T0 - T1); + td.cloud().hTrans()[celli] += np0*dhTrans; // Accumulate coefficient to be applied in carrier phase enthalpy coupling td.cloud().hCoeff()[celli] += np0*htc*this->areaS(); @@ -93,74 +114,78 @@ void Foam::ThermoParcel<ParcelType>::calcCoupled template<class ParcelType> -template<class TrackingData> +template<class TrackData> void Foam::ThermoParcel<ParcelType>::calcUncoupled ( - TrackingData& td, - const label celli, + TrackData& td, const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc + const label celli ) { + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + // Initialise transfer terms + // ~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Momentum transfer from the particle to the carrier phase + vector dUTrans = vector::zero; + + // Enthalpy transfer from the particle to the carrier phase + scalar dhTrans = 0.0; + + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate velocity - update U // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar Cud = 0.0; - this->U() = calcVelocity(td, dt, rhoc, Uc, muc, Cud); + this->U_ = calcVelocity(td, dt, Cud, dUTrans); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Calculate heat transfer - update T // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scalar htc = 0.0; - this->T() = calcHeatTransfer(td, celli, dt, rhoc, Uc, muc, Tc, cpc, htc); + T_ = calcHeatTransfer(td, dt, celli, htc, dhTrans); } template<class ParcelType> -template<class TrackingData> +template <class TrackData> Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer ( - TrackingData& td, - const label celli, + TrackData& td, const scalar dt, - const scalar rhoc, - const vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc, - scalar& htc + const label celli, + scalar& htc, + scalar& dhTrans ) { if (!td.cloud().heatTransfer().active()) { + htc = 0.0; + dhTrans = 0.0; return T_; } // Calc heat transfer coefficient htc = td.cloud().heatTransfer().h ( - this->d(), - this->Ur(), - rhoc, - this->rho(), - cpc, + this->d_, + this->U_ - this->Uc_, + this->rhoc_, + this->rho_, + cpc_, cp_, - muc + this->muc_ ); // Determine ap and bp coefficients - scalar ap = Tc; + scalar ap = Tc_; scalar bp = htc; if (td.cloud().radiation()) { // Carrier phase incident radiation field - // Currently the G field is not interpolated to the parcel position - // - instead, the cell centre value is applied directly + // - The G field is not interpolated to the parcel position + // Instead, the cell centre value is applied directly const scalarField& G = td.cloud().mesh().objectRegistry ::lookupObject<volScalarField>("G"); @@ -168,21 +193,19 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer const scalar sigma = radiation::sigmaSB.value(); const scalar epsilon = td.constProps().epsilon0(); const scalar epsilonSigmaT3 = epsilon*sigma*pow3(T_); - ap = (htc*Tc + 0.25*epsilon*G[celli])/(htc + epsilonSigmaT3); + ap = (htc*Tc_ + 0.25*epsilon*G[celli])/(htc + epsilonSigmaT3); bp += epsilonSigmaT3; } - bp *= 6.0/(this->rho()*this->d()*cp_); + bp *= 6.0/(this->rho_*this->d_*cp_); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Set new particle temperature //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // Analytical - const scalar Tnew = ap + (T_ - ap)*exp(-bp*dt); + scalar Tnew = td.cloud().TIntegrator().integrate(T_, dt, ap, bp); - // Euler-implicit -// const scalar Tnew = (T_ + dt*ap*bp)/(1.0 + dt*bp); + dhTrans = -this->mass()*cp_*(Tnew - T_); return Tnew; } @@ -190,110 +213,6 @@ Foam::scalar Foam::ThermoParcel<ParcelType>::calcHeatTransfer // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -template<class ParcelType> -template<class TrackingData> -bool Foam::ThermoParcel<ParcelType>::move -( - TrackingData& td -) -{ - td.switchProcessor = false; - td.keepParticle = true; - - const polyMesh& mesh = td.cloud().pMesh(); - const polyBoundaryMesh& pbMesh = mesh.boundaryMesh(); - - const scalar deltaT = mesh.time().deltaT().value(); - scalar tEnd = (1.0 - this->stepFraction())*deltaT; - const scalar dtMax = tEnd; - - while (td.keepParticle && !td.switchProcessor && tEnd > SMALL) - { - // Set the Lagrangian time-step - scalar dt = min(dtMax, tEnd); - - // Remember which cell the parcel is in - // since this will change if a face is hit - label celli = this->cell(); - - dt *= trackToFace(this->position() + dt*this->U(), td); - - tEnd -= dt; - this->stepFraction() = 1.0 - tEnd/deltaT; - - cellPointWeight cpw - ( - mesh, - this->position(), - celli, - this->faceInterpolation() - ); - scalar rhoc = td.rhoInterp().interpolate(cpw); - vector Uc = td.UInterp().interpolate(cpw); - scalar muc = td.muInterp().interpolate(cpw); - scalar Tc = td.TInterp().interpolate(cpw); - scalar cpc = td.cpInterp().interpolate(cpw); - - Uc = td.cloud().dispersion().update - ( - dt, - celli, - this->U(), - Uc, - this->UTurb(), - this->tTurb() - ); - - if (td.cloud().coupled()) - { - calcCoupled(td, celli, dt, rhoc, Uc, muc, Tc, cpc); - } - else - { - calcUncoupled(td, celli, dt, rhoc, Uc, muc, Tc, cpc); - } - - if (this->onBoundary() && td.keepParticle) - { - if (this->face() > -1) - { - if - ( - isType<processorPolyPatch> - (pbMesh[this->patch(this->face())]) - ) - { - td.switchProcessor = true; - } - } - } - } - - return td.keepParticle; -} - - -template<class ParcelType> -template<class TrackingData> -void Foam::ThermoParcel<ParcelType>::hitWallPatch -( - const wallPolyPatch& wpp, - TrackingData& td -) -{ - td.cloud().wallInteraction().correct(wpp, this->face(), this->U()); -} - - - -template<class ParcelType> -void Foam::ThermoParcel<ParcelType>::hitWallPatch -( - const wallPolyPatch& wpp, - int& -) -{} - // * * * * * * * * * * * * * * * * IOStream operators * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H index c19bbdf9befc2f87a7a15080fd87c8979a05863a..c9dd564cdfc27229deca2ef15bb1f3e44f745d05 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H @@ -26,16 +26,14 @@ Class Foam::ThermoParcel Description - Thermodynamic parcel class with one-way coupling with the continuous - phase. - - Includes Kinematic parcel sub-models, plus: + Thermodynamic parcel class with one/two-way coupling with the continuous + phase. Includes Kinematic parcel sub-models, plus: - heat transfer SourceFiles - thermoParcelI.H + ThermoParcelI.H ThermoParcel.C - thermoParcelIO.C + ThermoParcelIO.C \*---------------------------------------------------------------------------*/ @@ -69,78 +67,15 @@ Ostream& operator<< Class ThermoParcel Declaration \*---------------------------------------------------------------------------*/ -template <class ParcelType> +template<class ParcelType> class ThermoParcel : public KinematicParcel<ParcelType> { - // Private data - - //- Parcel properties - - //- Temperature [K] - scalar T_; - - //- Specific heat capacity [J/(kg.K)] - scalar cp_; - - -protected: - - // Protected member functions - - template<class TrackingData> - void calcCoupled - ( - TrackingData& td, - const label celli, - const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc - ); - - template<class TrackingData> - void calcUncoupled - ( - TrackingData& td, - const label celli, - const scalar dt, - const scalar rhoc, - vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc - ); - - //- Calculate new particle temperature - template<class TrackingData> - scalar calcHeatTransfer - ( - TrackingData& td, - const label celli, - const scalar dt, - const scalar rhoc, - const vector& Uc, - const scalar muc, - const scalar Tc, - const scalar cpc, - scalar& htc - ); - - public: - //- Runtime type information - TypeName("ThermoParcel"); - - friend class Cloud<ParcelType>; - - - //- Class to hold particle constant properties + //- Class to hold thermo particle constant properties class constantProperties : public KinematicParcel<ParcelType>::constantProperties @@ -164,10 +99,7 @@ public: public: // Constructors - constantProperties - ( - const dictionary& dict - ); + constantProperties(const dictionary& dict); // Member functions @@ -180,7 +112,7 @@ public: }; - //- Class used to pass tracking data to the trackToFace function + //- Class used to pass thermo tracking data to the trackToFace function class trackData : public KinematicParcel<ParcelType>::trackData @@ -194,41 +126,95 @@ public: //- Particle constant properties const constantProperties& constProps_; - //- Interpolators for continuous phase fields + // Interpolators for continuous phase fields - const interpolationCellPoint<scalar>& TInterp_; - const interpolationCellPoint<scalar>& cpInterp_; + //- Temperature field interpolator + const interpolation<scalar>& TInterp_; + + //- Scpecific heat capacity field interpolator + const interpolation<scalar>& cpInterp_; public: // Constructors + //- Construct from components inline trackData ( ThermoCloud<ParcelType>& cloud, const constantProperties& constProps, - const interpolationCellPoint<scalar>& rhoInterp, - const interpolationCellPoint<vector>& UInterp, - const interpolationCellPoint<scalar>& muInterp, - const interpolationCellPoint<scalar>& TInterp, - const interpolationCellPoint<scalar>& cpInterp, + const interpolation<scalar>& rhoInterp, + const interpolation<vector>& UInterp, + const interpolation<scalar>& muInterp, + const interpolation<scalar>& TInterp, + const interpolation<scalar>& cpInterp, const vector& g ); // Member functions + //- Return access to the owner cloud inline ThermoCloud<ParcelType>& cloud(); + //- Return const access to the owner cloud inline const constantProperties& constProps() const; - inline const interpolationCellPoint<scalar>& TInterp() const; + //- Return conat access to the interpolator for continuous + // phase temperature field + inline const interpolation<scalar>& TInterp() const; - inline const interpolationCellPoint<scalar>& cpInterp() const; + //- Return conat access to the interpolator for continuous + // phase specific heat capacity field + inline const interpolation<scalar>& cpInterp() const; }; +protected: + + // Protected data + + // Parcel properties + + //- Temperature [K] + scalar T_; + + //- Specific heat capacity [J/(kg.K)] + scalar cp_; + + + // Call-based quantities + + //- Temperature [K] + scalar Tc_; + + //- Specific heat capacity [J/(kg.K)] + scalar cpc_; + + + // Protected member functions + + //- Calculate new particle temperature + template<class TrackData> + scalar calcHeatTransfer + ( + TrackData& td, + const scalar dt, + const label celli, + scalar& htc, + scalar& dhTrans + ); + + +public: + + //- Runtime type information + TypeName("ThermoParcel"); + + friend class Cloud<ParcelType>; + + // Constructors //- Construct from components @@ -271,42 +257,42 @@ public: inline const scalar cp() const; inline scalar& cp(); - //- Move parcel - template<class TrackingData> - bool move - ( - TrackingData& - ); + // Main calculation loop - //- Patch interaction + //- Update cell based quantities + template<class TrackData> + void updateCellQuantities + ( + TrackData& td, + const scalar dt, + const label celli + ); - //- Overridable function to handle the particle hitting a wallPatch - template<class TrackingData> - void hitWallPatch + //- Coupled calculation with the continuous phase + template<class TrackData> + void calcCoupled ( - const wallPolyPatch&, - TrackingData& td + TrackData& td, + const scalar dt, + const label celli ); - void hitWallPatch + //- Uncoupled calculation with the continuous phase + template<class TrackData> + void calcUncoupled ( - const wallPolyPatch&, - int& + TrackData& td, + const scalar dt, + const label ); // I-O - static void readFields - ( - ThermoCloud<ParcelType>& c - ); + static void readFields(ThermoCloud<ParcelType>& c); - static void writeFields - ( - const ThermoCloud<ParcelType>& c - ); + static void writeFields(const ThermoCloud<ParcelType>& c); }; diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H index b0960a26895729191f9967478239ee9c14c1c9c3..e2621bda8de739d288314469a941b37129e37212 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H @@ -45,11 +45,11 @@ inline Foam::ThermoParcel<ParcelType>::trackData::trackData ( ThermoCloud<ParcelType>& cloud, const constantProperties& constProps, - const interpolationCellPoint<scalar>& rhoInterp, - const interpolationCellPoint<vector>& UInterp, - const interpolationCellPoint<scalar>& muInterp, - const interpolationCellPoint<scalar>& TInterp, - const interpolationCellPoint<scalar>& cpInterp, + const interpolation<scalar>& rhoInterp, + const interpolation<vector>& UInterp, + const interpolation<scalar>& muInterp, + const interpolation<scalar>& TInterp, + const interpolation<scalar>& cpInterp, const vector& g ) : @@ -94,7 +94,9 @@ inline Foam::ThermoParcel<ParcelType>::ThermoParcel constProps ), T_(constProps.T0()), - cp_(constProps.cp0()) + cp_(constProps.cp0()), + Tc_(0.0), + cpc_(0.0) {} @@ -151,7 +153,7 @@ Foam::ThermoParcel<ParcelType>::trackData::constProps() const template<class ParcelType> -inline const Foam::interpolationCellPoint<Foam::scalar>& +inline const Foam::interpolation<Foam::scalar>& Foam::ThermoParcel<ParcelType>::trackData::TInterp() const { return TInterp_; @@ -159,7 +161,7 @@ Foam::ThermoParcel<ParcelType>::trackData::TInterp() const template<class ParcelType> -inline const Foam::interpolationCellPoint<Foam::scalar>& +inline const Foam::interpolation<Foam::scalar>& Foam::ThermoParcel<ParcelType>::trackData::cpInterp() const { return cpInterp_; diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C index 822be5af7a96f992956aee358aa484cf47413256..f44dba5db2d405672f1f4d38b7ba63a655deef23 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelIO.C @@ -39,7 +39,9 @@ Foam::ThermoParcel<ParcelType>::ThermoParcel : KinematicParcel<ParcelType>(cloud, is, readFields), T_(0.0), - cp_(0.0) + cp_(0.0), + Tc_(0.0), + cpc_(0.0) { if (readFields) { diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/kinematicParcel.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C similarity index 77% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/kinematicParcel.C rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C index a33e3e37b32def4829cf86e6d0dc6d6a2b845ff0..c9957044f6a294917093cc6cf1ae8bfa3fd75e19 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/kinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.C @@ -24,23 +24,23 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicParcel.H" +#include "basicKinematicParcel.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { - defineTypeNameAndDebug(kinematicParcel, 0); - defineParticleTypeNameAndDebug(kinematicParcel, 0); - defineParcelTypeNameAndDebug(kinematicParcel, 0); + defineTypeNameAndDebug(basicKinematicParcel, 0); + defineParticleTypeNameAndDebug(basicKinematicParcel, 0); + defineParcelTypeNameAndDebug(basicKinematicParcel, 0); }; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::kinematicParcel::kinematicParcel +Foam::basicKinematicParcel::basicKinematicParcel ( - KinematicCloud<kinematicParcel>& owner, + KinematicCloud<basicKinematicParcel>& owner, const label typeId, const vector& position, const label celli, @@ -50,7 +50,7 @@ Foam::kinematicParcel::kinematicParcel const constantProperties& constProps ) : - KinematicParcel<kinematicParcel> + KinematicParcel<basicKinematicParcel> ( owner, typeId, @@ -64,20 +64,20 @@ Foam::kinematicParcel::kinematicParcel {} -Foam::kinematicParcel::kinematicParcel +Foam::basicKinematicParcel::basicKinematicParcel ( - const Cloud<kinematicParcel>& cloud, + const Cloud<basicKinematicParcel>& cloud, Istream& is, bool readFields ) : - KinematicParcel<kinematicParcel>(cloud, is, readFields) + KinematicParcel<basicKinematicParcel>(cloud, is, readFields) {} // * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * // -Foam::kinematicParcel::~kinematicParcel() +Foam::basicKinematicParcel::~basicKinematicParcel() {} diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/kinematicParcel.H b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H similarity index 76% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/kinematicParcel.H rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H index f64359307f4c147ee7a6fa19ef4e577bd5e52208..bb43934aa0f1a853d4aeb6417fc7a451905f1a85 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/kinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/basicKinematicParcel.H @@ -23,18 +23,18 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::kinematicParcel + Foam::basicKinematicParcel Description - Foam::kinematicParcel + SourceFiles - kinematicParcel.C + basicKinematicParcel.C \*---------------------------------------------------------------------------*/ -#ifndef kinematicParcel_H -#define kinematicParcel_H +#ifndef basicKinematicParcel_H +#define basicKinematicParcel_H #include "KinematicParcel.H" @@ -44,26 +44,26 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class kinematicParcel Declaration + Class basicKinematicParcel Declaration \*---------------------------------------------------------------------------*/ -class kinematicParcel +class basicKinematicParcel : - public KinematicParcel<kinematicParcel> + public KinematicParcel<basicKinematicParcel> { public: //- Run-time type information - TypeName("kinematicParcel"); + TypeName("basicKinematicParcel"); // Constructors //- Construct from components - kinematicParcel + basicKinematicParcel ( - KinematicCloud<kinematicParcel>& owner, + KinematicCloud<basicKinematicParcel>& owner, const label typeId, const vector& position, const label celli, @@ -74,28 +74,29 @@ public: ); //- Construct from Istream - kinematicParcel + basicKinematicParcel ( - const Cloud<kinematicParcel>& c, + const Cloud<basicKinematicParcel>& c, Istream& is, bool readFields = true ); //- Construct and return a clone - autoPtr<kinematicParcel> clone() const + autoPtr<basicKinematicParcel> clone() const { - return autoPtr<kinematicParcel>(new kinematicParcel(*this)); + return autoPtr<basicKinematicParcel> + (new basicKinematicParcel(*this)); } - // Destructors + //- Destructor - virtual ~kinematicParcel(); + virtual ~basicKinematicParcel(); }; template<> -inline bool contiguous<kinematicParcel>() +inline bool contiguous<basicKinematicParcel>() { return true; } diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/defineKinematicParcel.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C similarity index 80% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/defineKinematicParcel.C rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C index 0ad0793203f420360440387dff1f2d59a460f29b..452b53e9da27d80132bbba6a4bc6665dfc9d3ec1 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/defineKinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/defineBasicKinematicParcel.C @@ -24,17 +24,17 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicParcel.H" +#include "basicKinematicParcel.H" #include "KinematicCloud.H" namespace Foam { -// defineTemplateTypeNameAndDebug(IOPosition<kinematicParcel>, 0); +// defineTemplateTypeNameAndDebug(IOPosition<basicKinematicParcel>, 0); - defineTemplateTypeNameAndDebug(Cloud<kinematicParcel>, 0); + defineTemplateTypeNameAndDebug(Cloud<basicKinematicParcel>, 0); - defineParcelTypeNameAndDebug(KinematicCloud<kinematicParcel>, 0); -// defineTemplateTypeNameAndDebug(KinematicCloud<kinematicParcel>, 0); + defineParcelTypeNameAndDebug(KinematicCloud<basicKinematicParcel>, 0); +// defineTemplateTypeNameAndDebug(KinematicCloud<basicKinematicParcel>, 0); }; diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C similarity index 88% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelDispersionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C index 595edb2947f7e95fe9448a74c89897d0516fa4b6..74b29d8d43ec9a1ab7168ebb8e29fcafc2e8ceb7 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelDispersionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDispersionModels.C @@ -24,7 +24,7 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicParcel.H" +#include "basicKinematicParcel.H" #include "KinematicCloud.H" #include "NoDispersion.H" #include "GradientDispersionRAS.H" @@ -32,11 +32,11 @@ License namespace Foam { - makeDispersionModel(KinematicCloud<kinematicParcel>); + makeDispersionModel(KinematicCloud<basicKinematicParcel>); defineNamedTemplateTypeNameAndDebug ( - DispersionRASModel<KinematicCloud<kinematicParcel> >, + DispersionRASModel<KinematicCloud<basicKinematicParcel> >, 0 ); @@ -45,19 +45,19 @@ namespace Foam ( NoDispersion, KinematicCloud, - kinematicParcel + basicKinematicParcel ); makeDispersionModelType ( GradientDispersionRAS, KinematicCloud, - kinematicParcel + basicKinematicParcel ); makeDispersionModelType ( StochasticDispersionRAS, KinematicCloud, - kinematicParcel + basicKinematicParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C similarity index 86% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelDragModels.C rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C index 65a35d79a0ee4e5ad29b86f8045b21a7a0b3eb94..82af0bb1e6e9bfd8dadb2b36d883cebecd4f3358 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelDragModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelDragModels.C @@ -24,18 +24,18 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicKinematicParcel.H" #include "KinematicCloud.H" #include "NoDrag.H" #include "SphereDrag.H" namespace Foam { - makeDragModel(KinematicCloud<reactingParcel>); + makeDragModel(KinematicCloud<basicKinematicParcel>); // Add instances of drag model to the table - makeDragModelType(NoDrag, KinematicCloud, reactingParcel); - makeDragModelType(SphereDrag, KinematicCloud, reactingParcel); + makeDragModelType(NoDrag, KinematicCloud, basicKinematicParcel); + makeDragModelType(SphereDrag, KinematicCloud, basicKinematicParcel); }; diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C similarity index 86% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelHeatTransferModels.C rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C index 6a5eaa11f935cef746024dc89a1e713564c5bb53..34740bd6a867fc57db1f07fffa53a8784c013c5d 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelHeatTransferModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelHeatTransferModels.C @@ -24,16 +24,21 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicParcel.H" +#include "basicKinematicParcel.H" #include "KinematicCloud.H" #include "NoHeatTransfer.H" namespace Foam { - makeHeatTransferModel(KinematicCloud<kinematicParcel>); + makeHeatTransferModel(KinematicCloud<basicKinematicParcel>); // Add instances of heat transfer model to the table - makeHeatTransferModelType(NoHeatTransfer, KinematicCloud, kinematicParcel); + makeHeatTransferModelType + ( + NoHeatTransfer, + KinematicCloud, + basicKinematicParcel + ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C similarity index 81% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelInjectionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C index bb6e400393b4adcbc9a3b3e4a35e579a25fdcf83..7b72076611baaf8ad74f867e97754b6ffcdf3a65 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelInjectionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelInjectionModels.C @@ -24,18 +24,28 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicParcel.H" +#include "basicKinematicParcel.H" #include "KinematicCloud.H" #include "ManualInjection.H" #include "NoInjection.H" namespace Foam { - makeInjectionModel(KinematicCloud<kinematicParcel>); + makeInjectionModel(KinematicCloud<basicKinematicParcel>); // Add instances of injection model to the table - makeInjectionModelType(ManualInjection, KinematicCloud, kinematicParcel); - makeInjectionModelType(NoInjection, KinematicCloud, kinematicParcel); + makeInjectionModelType + ( + ManualInjection, + KinematicCloud, + basicKinematicParcel + ); + makeInjectionModelType + ( + NoInjection, + KinematicCloud, + basicKinematicParcel + ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C similarity index 89% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelWallInteractionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C index c3f551887df5ebe127e11687c3c00635441dfea5..1adc3b927181841a2f2748560540e9cc1af46df5 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelWallInteractionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicKinematicParcel/makeBasicKinematicParcelWallInteractionModels.C @@ -24,28 +24,27 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicKinematicParcel.H" #include "KinematicCloud.H" #include "Rebound.H" #include "StandardWallInteraction.H" namespace Foam { - makeWallInteractionModel(KinematicCloud<reactingParcel>); -// makeWallInteractionModel(ReactingCloud<reactingParcel>); + makeWallInteractionModel(KinematicCloud<basicKinematicParcel>); // Add instances of wall interaction model to the table makeWallInteractionModelType ( Rebound, KinematicCloud, - reactingParcel + basicKinematicParcel ); makeWallInteractionModelType ( StandardWallInteraction, KinematicCloud, - reactingParcel + basicKinematicParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/reactingParcel.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C similarity index 79% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/reactingParcel.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C index 9e445058dd77e02156a90b32ce0c3c65e117883f..d6a4c14f8fe1ef0af66dd68c49cb08eb8cc91416 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/reactingParcel.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.C @@ -24,23 +24,23 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicReactingParcel.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { - defineTypeNameAndDebug(reactingParcel, 0); - defineParticleTypeNameAndDebug(reactingParcel, 0); - defineParcelTypeNameAndDebug(reactingParcel, 0); + defineTypeNameAndDebug(basicReactingParcel, 0); + defineParticleTypeNameAndDebug(basicReactingParcel, 0); + defineParcelTypeNameAndDebug(basicReactingParcel, 0); }; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::reactingParcel::reactingParcel +Foam::basicReactingParcel::basicReactingParcel ( - ReactingCloud<reactingParcel>& owner, + ReactingCloud<basicReactingParcel>& owner, const label typeId, const vector& position, const label celli, @@ -54,7 +54,7 @@ Foam::reactingParcel::reactingParcel const constantProperties& constProps ) : - ReactingParcel<reactingParcel> + ReactingParcel<basicReactingParcel> ( owner, typeId, @@ -72,20 +72,20 @@ Foam::reactingParcel::reactingParcel {} -Foam::reactingParcel::reactingParcel +Foam::basicReactingParcel::basicReactingParcel ( - const Cloud<reactingParcel>& cloud, + const Cloud<basicReactingParcel>& cloud, Istream& is, bool readFields ) : - ReactingParcel<reactingParcel>(cloud, is, readFields) + ReactingParcel<basicReactingParcel>(cloud, is, readFields) {} // * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * // -Foam::reactingParcel::~reactingParcel() +Foam::basicReactingParcel::~basicReactingParcel() {} diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/reactingParcel.H b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H similarity index 78% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/reactingParcel.H rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H index 3986a73fc8bdec123e0302e572914c3d8fd6db5c..98af0d0e0fdccfae2b5a150e4861c12315374f32 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/reactingParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/basicReactingParcel.H @@ -23,19 +23,19 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::reactingParcel + Foam::basicReactingParcel Description - Foam::reactingParcel + SourceFiles - reactingParcel.C - reactingParcelIO.C + basicReactingParcel.C + basicReactingParcelIO.C \*---------------------------------------------------------------------------*/ -#ifndef reactingParcel_H -#define reactingParcel_H +#ifndef basicReactingParcel_H +#define basicReactingParcel_H #include "ReactingParcel.H" @@ -45,25 +45,25 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class reactingParcel Declaration + Class basicReactingParcel Declaration \*---------------------------------------------------------------------------*/ -class reactingParcel +class basicReactingParcel : - public ReactingParcel<reactingParcel> + public ReactingParcel<basicReactingParcel> { public: //- Run-time type information - TypeName("reactingParcel"); + TypeName("basicReactingParcel"); // Constructors //- Construct from components - reactingParcel + basicReactingParcel ( - ReactingCloud<reactingParcel>& owner, + ReactingCloud<basicReactingParcel>& owner, const label typeId, const vector& position, const label celli, @@ -78,28 +78,29 @@ public: ); //- Construct from Istream - reactingParcel + basicReactingParcel ( - const Cloud<reactingParcel>& c, + const Cloud<basicReactingParcel>& c, Istream& is, bool readFields = true ); //- Construct and return a clone - autoPtr<reactingParcel> clone() const + autoPtr<basicReactingParcel> clone() const { - return autoPtr<reactingParcel>(new reactingParcel(*this)); + return autoPtr<basicReactingParcel> + (new basicReactingParcel(*this)); } // Destructors - virtual ~reactingParcel(); + virtual ~basicReactingParcel(); }; template<> -inline bool contiguous<reactingParcel>() +inline bool contiguous<basicReactingParcel>() { return false; // Now have scalar lists/fields (mass fractions) } diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/defineReactingParcel.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/defineBasicReactingParcel.C similarity index 59% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/defineReactingParcel.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/defineBasicReactingParcel.C index 427def96de1536c6d764f39f7725e9817afc5eae..87106d9d7e9c17823c9411e15cefea25a4a289db 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/defineReactingParcel.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/defineBasicReactingParcel.C @@ -24,28 +24,28 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicReactingParcel.H" #include "ReactingCloud.H" namespace Foam { - defineTemplateTypeNameAndDebug(Cloud<reactingParcel>, 0); + defineTemplateTypeNameAndDebug(Cloud<basicReactingParcel>, 0); - defineParcelTypeNameAndDebug(KinematicParcel<reactingParcel>, 0); -// defineTemplateTypeNameAndDebug(KinematicParcel<reactingParcel>, 0); - defineParcelTypeNameAndDebug(ThermoParcel<reactingParcel>, 0); - defineTemplateTypeNameAndDebug(ThermoParcel<reactingParcel>, 0); - defineParcelTypeNameAndDebug(ReactingParcel<reactingParcel>, 0); - defineTemplateTypeNameAndDebug(ReactingParcel<reactingParcel>, 0); + defineParcelTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0); +// defineTemplateTypeNameAndDebug(KinematicParcel<basicReactingParcel>, 0); + defineParcelTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0); + defineTemplateTypeNameAndDebug(ThermoParcel<basicReactingParcel>, 0); + defineParcelTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0); + defineTemplateTypeNameAndDebug(ReactingParcel<basicReactingParcel>, 0); - defineParcelTypeNameAndDebug(KinematicCloud<reactingParcel>, 0); -// defineTemplateTypeNameAndDebug(KinematicCloud<reactingParcel>, 0); + defineParcelTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0); +// defineTemplateTypeNameAndDebug(KinematicCloud<basicReactingParcel>, 0); - defineParcelTypeNameAndDebug(ThermoCloud<reactingParcel>, 0); -// defineTemplateTypeNameAndDebug(ThermoCloud<reactingParcel>, 0); + defineParcelTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0); +// defineTemplateTypeNameAndDebug(ThermoCloud<basicReactingParcel>, 0); - defineParcelTypeNameAndDebug(ReactingCloud<reactingParcel>, 0); -// defineTemplateTypeNameAndDebug(ReactingCloud<reactingParcel>, 0); + defineParcelTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0); +// defineTemplateTypeNameAndDebug(ReactingCloud<basicReactingParcel>, 0); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelCompositionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C similarity index 92% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelCompositionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C index fd8a908fbf4fccb0e7370fc5133a9cc7ade9fda9..2cd9da2d65bf0ed0cdd0701aea0ce2562ba890a5 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelCompositionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelCompositionModels.C @@ -24,20 +24,20 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicReactingParcel.H" #include "ReactingCloud.H" #include "SingleMixtureFraction.H" namespace Foam { - makeCompositionModel(ReactingCloud<reactingParcel>); + makeCompositionModel(ReactingCloud<basicReactingParcel>); // Add instances of composition model to the table makeCompositionModelType ( SingleMixtureFraction, ReactingCloud, - reactingParcel + basicReactingParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C similarity index 88% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelDispersionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C index cde646184536a44857320c76d0d466bf66b316bc..985cb0fee6e9ea8390fb13c8b90a531bb3445b97 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelDispersionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDispersionModels.C @@ -24,7 +24,7 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicReactingParcel.H" #include "KinematicCloud.H" #include "NoDispersion.H" #include "GradientDispersionRAS.H" @@ -32,11 +32,11 @@ License namespace Foam { - makeDispersionModel(KinematicCloud<reactingParcel>); + makeDispersionModel(KinematicCloud<basicReactingParcel>); defineNamedTemplateTypeNameAndDebug ( - DispersionRASModel<KinematicCloud<reactingParcel> >, + DispersionRASModel<KinematicCloud<basicReactingParcel> >, 0 ); @@ -45,19 +45,19 @@ namespace Foam ( NoDispersion, KinematicCloud, - reactingParcel + basicReactingParcel ); makeDispersionModelType ( GradientDispersionRAS, KinematicCloud, - reactingParcel + basicReactingParcel ); makeDispersionModelType ( StochasticDispersionRAS, KinematicCloud, - reactingParcel + basicReactingParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C similarity index 86% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelDragModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C index 209ae7d86d717a49189d8e18e9c50b4086c453c6..2de3b1614351198bc51aab8752e11a80c3a60caa 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelDragModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelDragModels.C @@ -24,18 +24,18 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicParcel.H" +#include "basicReactingParcel.H" #include "KinematicCloud.H" #include "NoDrag.H" #include "SphereDrag.H" namespace Foam { - makeDragModel(KinematicCloud<kinematicParcel>); + makeDragModel(KinematicCloud<basicReactingParcel>); // Add instances of drag model to the table - makeDragModelType(NoDrag, KinematicCloud, kinematicParcel); - makeDragModelType(SphereDrag, KinematicCloud, kinematicParcel); + makeDragModelType(NoDrag, KinematicCloud, basicReactingParcel); + makeDragModelType(SphereDrag, KinematicCloud, basicReactingParcel); }; diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C similarity index 81% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelHeatTransferModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C index 29afb72f4b371f2e83f3ab4276ae1ef58e56a5d3..7bd38923d3d3279ffec247c08b701c7ee8809938 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelHeatTransferModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelHeatTransferModels.C @@ -24,18 +24,28 @@ License \*---------------------------------------------------------------------------*/ -#include "thermoParcel.H" +#include "basicReactingParcel.H" #include "ThermoCloud.H" #include "NoHeatTransfer.H" #include "RanzMarshall.H" namespace Foam { - makeHeatTransferModel(ThermoCloud<thermoParcel>); + makeHeatTransferModel(ThermoCloud<basicReactingParcel>); // Add instances of heat transfer model to the table - makeHeatTransferModelType(NoHeatTransfer, ThermoCloud, thermoParcel); - makeHeatTransferModelType(RanzMarshall, ThermoCloud, thermoParcel); + makeHeatTransferModelType + ( + NoHeatTransfer, + ThermoCloud, + basicReactingParcel + ); + makeHeatTransferModelType + ( + RanzMarshall, + ThermoCloud, + basicReactingParcel + ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C similarity index 81% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelInjectionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C index d43f9570ca6b01a142cb9cb26fed9dd3be07a0ce..64296007dc7b98e0b16e6204dff6cec1845a32f9 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelInjectionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelInjectionModels.C @@ -24,18 +24,28 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicReactingParcel.H" #include "ReactingCloud.H" #include "ManualInjection.H" #include "NoInjection.H" namespace Foam { - makeInjectionModel(KinematicCloud<reactingParcel>); + makeInjectionModel(KinematicCloud<basicReactingParcel>); // Add instances of injection model to the table - makeInjectionModelType(ManualInjection, KinematicCloud, reactingParcel); - makeInjectionModelType(NoInjection, KinematicCloud, reactingParcel); + makeInjectionModelType + ( + ManualInjection, + KinematicCloud, + basicReactingParcel + ); + makeInjectionModelType + ( + NoInjection, + KinematicCloud, + basicReactingParcel + ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelMassTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C similarity index 91% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelMassTransferModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C index 6768b459c79700bd3f5db1706c683548fa86b87f..b6347d5353d7217859b82eee0b30e8b4ef41b5b2 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelMassTransferModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelMassTransferModels.C @@ -24,7 +24,7 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicReactingParcel.H" #include "ThermoCloud.H" #include "NoMassTransfer.H" #include "ConstantRateDevolatilisation.H" @@ -32,26 +32,26 @@ License namespace Foam { - makeMassTransferModel(ReactingCloud<reactingParcel>); + makeMassTransferModel(ReactingCloud<basicReactingParcel>); // Add instances of mass transfer model to the table makeMassTransferModelType ( NoMassTransfer, ReactingCloud, - reactingParcel + basicReactingParcel ); makeMassTransferModelType ( ConstantRateDevolatilisation, ReactingCloud, - reactingParcel + basicReactingParcel ); makeMassTransferModelType ( SingleKineticRateDevolatilisation, ReactingCloud, - reactingParcel + basicReactingParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelSurfaceReactionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C similarity index 92% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelSurfaceReactionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C index 5392a1dacaf2411c7bd1dee99142fd63ce1a5e49..8cf01454056c9f64172c9dece79a8bc25c5021fd 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelSurfaceReactionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelSurfaceReactionModels.C @@ -24,20 +24,20 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicReactingParcel.H" #include "ReactingCloud.H" #include "NoSurfaceReaction.H" namespace Foam { - makeSurfaceReactionModel(ReactingCloud<reactingParcel>); + makeSurfaceReactionModel(ReactingCloud<basicReactingParcel>); // Add instances of surface reaction model to the table makeSurfaceReactionModelType ( NoSurfaceReaction, ReactingCloud, - reactingParcel + basicReactingParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C similarity index 83% rename from src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelWallInteractionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C index 67e8930eedbde4bc5e8b1bb85081836d45aaad81..688350fe04898e8e4bb8b69956e9099319da4aee 100644 --- a/src/lagrangian/intermediate/parcels/derived/kinematicParcel/makeKinematicParcelWallInteractionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicReactingParcel/makeBasicReactingParcelWallInteractionModels.C @@ -24,22 +24,28 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicParcel.H" +#include "basicReactingParcel.H" #include "KinematicCloud.H" #include "Rebound.H" #include "StandardWallInteraction.H" namespace Foam { - makeWallInteractionModel(KinematicCloud<kinematicParcel>); + makeWallInteractionModel(KinematicCloud<basicReactingParcel>); +// makeWallInteractionModel(ReactingCloud<basicReactingParcel>); // Add instances of wall interaction model to the table - makeWallInteractionModelType(Rebound, KinematicCloud, kinematicParcel); + makeWallInteractionModelType + ( + Rebound, + KinematicCloud, + basicReactingParcel + ); makeWallInteractionModelType ( StandardWallInteraction, KinematicCloud, - kinematicParcel + basicReactingParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/thermoParcel.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C similarity index 79% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/thermoParcel.C rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C index 4667cc3880e915bfdd23825e998014f892c2eed7..d392cb15b0f87907554435f214c2ffc89a9440ef 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/thermoParcel.C +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C @@ -24,23 +24,23 @@ License \*---------------------------------------------------------------------------*/ -#include "thermoParcel.H" +#include "basicThermoParcel.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // namespace Foam { - defineTypeNameAndDebug(thermoParcel, 0); - defineParticleTypeNameAndDebug(thermoParcel, 0); - defineParcelTypeNameAndDebug(thermoParcel, 0); + defineTypeNameAndDebug(basicThermoParcel, 0); + defineParticleTypeNameAndDebug(basicThermoParcel, 0); + defineParcelTypeNameAndDebug(basicThermoParcel, 0); }; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::thermoParcel::thermoParcel +Foam::basicThermoParcel::basicThermoParcel ( - ThermoCloud<thermoParcel>& owner, + ThermoCloud<basicThermoParcel>& owner, const label typeId, const vector position, const label celli, @@ -50,7 +50,7 @@ Foam::thermoParcel::thermoParcel const constantProperties& constProps ) : - ThermoParcel<thermoParcel> + ThermoParcel<basicThermoParcel> ( owner, typeId, @@ -64,20 +64,20 @@ Foam::thermoParcel::thermoParcel {} -Foam::thermoParcel::thermoParcel +Foam::basicThermoParcel::basicThermoParcel ( - const Cloud<thermoParcel>& cloud, + const Cloud<basicThermoParcel>& cloud, Istream& is, bool readFields ) : - ThermoParcel<thermoParcel>(cloud, is, readFields) + ThermoParcel<basicThermoParcel>(cloud, is, readFields) {} // * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * // -Foam::thermoParcel::~thermoParcel() +Foam::basicThermoParcel::~basicThermoParcel() {} diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/thermoParcel.H b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H similarity index 79% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/thermoParcel.H rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H index 4030e605927b2a1c8b360f0936552568323e6b8b..890340635334dc2fe3e2051a222cd55d87b1b36d 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/thermoParcel.H +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H @@ -23,18 +23,18 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::thermoParcel + Foam::basicThermoParcel Description - Foam::thermoParcel + SourceFiles - thermoParcel.C + basicThermoParcel.C \*---------------------------------------------------------------------------*/ -#ifndef thermoParcel_H -#define thermoParcel_H +#ifndef basicThermoParcel_H +#define basicThermoParcel_H #include "ThermoParcel.H" @@ -44,25 +44,25 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class thermoParcel Declaration + Class basicThermoParcel Declaration \*---------------------------------------------------------------------------*/ -class thermoParcel +class basicThermoParcel : - public ThermoParcel<thermoParcel> + public ThermoParcel<basicThermoParcel> { public: //- Runtime type information - TypeName("thermoParcel"); + TypeName("basicThermoParcel"); // Constructors //- Construct from components - thermoParcel + basicThermoParcel ( - ThermoCloud<thermoParcel>& owner, + ThermoCloud<basicThermoParcel>& owner, const label typeId, const vector position, const label celli, @@ -73,28 +73,28 @@ public: ); //- Construct from Istream - thermoParcel + basicThermoParcel ( - const Cloud<thermoParcel>& c, + const Cloud<basicThermoParcel>& c, Istream& is, bool readFields = true ); //- Construct and return a clone - autoPtr<thermoParcel> clone() const + autoPtr<basicThermoParcel> clone() const { - return autoPtr<thermoParcel>(new thermoParcel(*this)); + return autoPtr<basicThermoParcel>(new basicThermoParcel(*this)); } // Destructors - virtual ~thermoParcel(); + virtual ~basicThermoParcel(); }; template<> -inline bool contiguous<thermoParcel>() +inline bool contiguous<basicThermoParcel>() { return true; } diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/defineThermoParcel.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C similarity index 66% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/defineThermoParcel.C rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C index a807484782b9b2ad6c3ee88b01de05ffefd80906..8d5b906e3152b10ba14677027602b0592626252d 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/defineThermoParcel.C +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/defineBasicThermoParcel.C @@ -24,23 +24,23 @@ License \*---------------------------------------------------------------------------*/ -#include "thermoParcel.H" +#include "basicThermoParcel.H" #include "ThermoCloud.H" namespace Foam { - defineTemplateTypeNameAndDebug(Cloud<thermoParcel>, 0); + defineTemplateTypeNameAndDebug(Cloud<basicThermoParcel>, 0); - defineParcelTypeNameAndDebug(KinematicParcel<thermoParcel>, 0); -// defineTemplateTypeNameAndDebug(KinematicParcel<thermoParcel>, 0); - defineParcelTypeNameAndDebug(ThermoParcel<thermoParcel>, 0); - defineTemplateTypeNameAndDebug(ThermoParcel<thermoParcel>, 0); + defineParcelTypeNameAndDebug(KinematicParcel<basicThermoParcel>, 0); +// defineTemplateTypeNameAndDebug(KinematicParcel<basicThermoParcel>, 0); + defineParcelTypeNameAndDebug(ThermoParcel<basicThermoParcel>, 0); + defineTemplateTypeNameAndDebug(ThermoParcel<basicThermoParcel>, 0); - defineParcelTypeNameAndDebug(KinematicCloud<thermoParcel>, 0); -// defineTemplateTypeNameAndDebug(KinematicCloud<thermoParcel>, 0); + defineParcelTypeNameAndDebug(KinematicCloud<basicThermoParcel>, 0); +// defineTemplateTypeNameAndDebug(KinematicCloud<basicThermoParcel>, 0); - defineParcelTypeNameAndDebug(ThermoCloud<thermoParcel>, 0); -// defineTemplateTypeNameAndDebug(ThermoCloud<thermoParcel>, 0); + defineParcelTypeNameAndDebug(ThermoCloud<basicThermoParcel>, 0); +// defineTemplateTypeNameAndDebug(ThermoCloud<basicThermoParcel>, 0); }; diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelDispersionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C similarity index 88% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelDispersionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C index 9061d6ed93f7f7f88391a2190e5bd6b3c610aaec..9c23ac599460f208c6b7cb5c8d798ac51664431d 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelDispersionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDispersionModels.C @@ -24,7 +24,7 @@ License \*---------------------------------------------------------------------------*/ -#include "thermoParcel.H" +#include "basicThermoParcel.H" #include "KinematicCloud.H" #include "NoDispersion.H" #include "GradientDispersionRAS.H" @@ -32,11 +32,11 @@ License namespace Foam { - makeDispersionModel(KinematicCloud<thermoParcel>); + makeDispersionModel(KinematicCloud<basicThermoParcel>); defineNamedTemplateTypeNameAndDebug ( - DispersionRASModel<KinematicCloud<thermoParcel> >, + DispersionRASModel<KinematicCloud<basicThermoParcel> >, 0 ); @@ -45,19 +45,19 @@ namespace Foam ( NoDispersion, KinematicCloud, - thermoParcel + basicThermoParcel ); makeDispersionModelType ( GradientDispersionRAS, KinematicCloud, - thermoParcel + basicThermoParcel ); makeDispersionModelType ( StochasticDispersionRAS, KinematicCloud, - thermoParcel + basicThermoParcel ); }; diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelDragModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C similarity index 86% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelDragModels.C rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C index 6899dfd07c9f0f2ef18bbefcbb866eb94e534927..8166e0ad462c39e4a02ddd4ad65e3837a18b04ca 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelDragModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelDragModels.C @@ -24,18 +24,18 @@ License \*---------------------------------------------------------------------------*/ -#include "thermoParcel.H" +#include "basicThermoParcel.H" #include "KinematicCloud.H" #include "NoDrag.H" #include "SphereDrag.H" namespace Foam { - makeDragModel(KinematicCloud<thermoParcel>); + makeDragModel(KinematicCloud<basicThermoParcel>); // Add instances of drag model to the table - makeDragModelType(NoDrag, KinematicCloud, thermoParcel); - makeDragModelType(SphereDrag, KinematicCloud, thermoParcel); + makeDragModelType(NoDrag, KinematicCloud, basicThermoParcel); + makeDragModelType(SphereDrag, KinematicCloud, basicThermoParcel); }; diff --git a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelHeatTransferModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C similarity index 85% rename from src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelHeatTransferModels.C rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C index 3291f4eb8ad05e25f368742f5462faab139036b2..daed9b5bb5a1f9a7e9d02ae2ccc41f10681ccaf5 100644 --- a/src/lagrangian/intermediate/parcels/derived/reactingParcel/makeReactingParcelHeatTransferModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelHeatTransferModels.C @@ -24,18 +24,18 @@ License \*---------------------------------------------------------------------------*/ -#include "reactingParcel.H" +#include "basicThermoParcel.H" #include "ThermoCloud.H" #include "NoHeatTransfer.H" #include "RanzMarshall.H" namespace Foam { - makeHeatTransferModel(ThermoCloud<reactingParcel>); + makeHeatTransferModel(ThermoCloud<basicThermoParcel>); // Add instances of heat transfer model to the table - makeHeatTransferModelType(NoHeatTransfer, ThermoCloud, reactingParcel); - makeHeatTransferModelType(RanzMarshall, ThermoCloud, reactingParcel); + makeHeatTransferModelType(NoHeatTransfer, ThermoCloud, basicThermoParcel); + makeHeatTransferModelType(RanzMarshall, ThermoCloud, basicThermoParcel); }; diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelInjectionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C similarity index 85% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelInjectionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C index fb12cd9e158aef7db2aa121322448dfeb110b439..357ba8249889166cb2b5524b37864f25ba3e7fae 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelInjectionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelInjectionModels.C @@ -24,19 +24,19 @@ License \*---------------------------------------------------------------------------*/ -#include "thermoParcel.H" +#include "basicThermoParcel.H" #include "ThermoCloud.H" #include "NoInjection.H" #include "ManualInjection.H" namespace Foam { - makeInjectionModel(KinematicCloud<thermoParcel>); + makeInjectionModel(KinematicCloud<basicThermoParcel>); // Add instances of injection model to the table - makeInjectionModelType(NoInjection, KinematicCloud, thermoParcel); + makeInjectionModelType(NoInjection, KinematicCloud, basicThermoParcel); - makeInjectionModelType(ManualInjection, KinematicCloud, thermoParcel); + makeInjectionModelType(ManualInjection, KinematicCloud, basicThermoParcel); }; diff --git a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelWallInteractionModels.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C similarity index 91% rename from src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelWallInteractionModels.C rename to src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C index aab77c9b70d3a89dade6d40ac276c7299e047d34..fc79685f3ae06807c48e6d7588d6bacc1c0101da 100644 --- a/src/lagrangian/intermediate/parcels/derived/thermoParcel/makeThermoParcelWallInteractionModels.C +++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/makeBasicThermoParcelWallInteractionModels.C @@ -24,27 +24,27 @@ License \*---------------------------------------------------------------------------*/ -#include "thermoParcel.H" +#include "basicThermoParcel.H" #include "KinematicCloud.H" #include "Rebound.H" #include "StandardWallInteraction.H" namespace Foam { - makeWallInteractionModel(KinematicCloud<thermoParcel>); + makeWallInteractionModel(KinematicCloud<basicThermoParcel>); // Add instances of wall interaction model to the table makeWallInteractionModelType ( Rebound, KinematicCloud, - thermoParcel + basicThermoParcel ); makeWallInteractionModelType ( StandardWallInteraction, KinematicCloud, - thermoParcel + basicThermoParcel ); }; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H index f3e5d03a6c7805430aaf8e3d6adbc0b88519d27f..b85ef99ddc8a07074de0543ccc9cc69852f2cd8a 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionModel/DispersionModel.H @@ -26,7 +26,6 @@ Class Foam::DispersionModel Description - Templated dispersion model class \*---------------------------------------------------------------------------*/ diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H index cac9552386e9a857c1ffd151fbedd43231f4da70..1caab64203d3714eea70fcd23e1242b6a90eba07 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.H @@ -26,10 +26,6 @@ Class Foam::DispersionRASModel Description - Templated dispersion RAS model - -SourceFiles - DispersionRASModel.C \*---------------------------------------------------------------------------*/ diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H index 59cd314e5e00b974f434b65cf72dd2e6f8604e8d..31bfdc4ad0b2bfeecd55e7d9a7003ebdff56b226 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/GradientDispersionRAS/GradientDispersionRAS.H @@ -27,7 +27,7 @@ Class Description The velocity is perturbed in the direction of -grad(k), with a - Gaussian random number distribution with variance sigma, + Gaussian random number distribution with variance sigma. where sigma is defined below \*---------------------------------------------------------------------------*/ diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C index 58d62844073daad9b3e3db389bd6cc1a23fa7297..9078a33cd776bb7b1418b14793af87666c6d419a 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C @@ -22,6 +22,8 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +Description + \*---------------------------------------------------------------------------*/ #include "StochasticDispersionRAS.H" diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H index 52deb49d578f7d6a9b95ebc4b35d7e9ca62ad7d0..f704a5daba69ec0f8a036a1594cc30dff0fa42cf 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.H @@ -26,10 +26,9 @@ Class Foam::StochasticDispersionRAS Description - The velocity is perturbed in random direction. - - A Gaussian random number distribution is used with variance sigma, - where sigma is defined below + The velocity is perturbed in random direction, with a + Gaussian random number distribution with variance sigma. + where sigma is defined below \*---------------------------------------------------------------------------*/ diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H index 28ab6d944cd30118e4c2662af0b2ca3105876270..87ef3062408fea33fbf897d75cdbc6d2d2fd134f 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/DragModel/DragModel.H @@ -25,6 +25,7 @@ License Class Foam::DragModel + Description Templated drag model class @@ -121,10 +122,7 @@ public: virtual bool active() const = 0; //- Return drag coefficient - virtual scalar Cd - ( - const scalar Re - ) const = 0; + virtual scalar Cd(const scalar Re) const = 0; //- Return linearised coefficient for velocity equation // Drag force per unit particle mass = Cu(U - Up) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H index f469bbbc465b6a21bae8664f2f169aafdc0ca45c..ae8385a204516e178a83deaa0cd452246ea81886 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/NoDrag/NoDrag.H @@ -74,10 +74,7 @@ public: bool active() const; - scalar Cd - ( - const scalar - ) const; + scalar Cd(const scalar) const; }; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H index a82b5aa2dcdf7c89e5d5cdbebdc11f732a723075..935bd07c48bd430c196c3c11a65d50c5ae8ff63e 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/DragModel/SphereDrag/SphereDrag.H @@ -74,10 +74,7 @@ public: bool active() const; - scalar Cd - ( - const scalar Re - ) const; + scalar Cd(const scalar Re) const; }; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H index 9a657d1598e1b96d0192b428d91c326c1bb1b33f..2a7e8c4a0e5f7f096f92a9e7fa8f2caf0aed9e32 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/InjectionModel/InjectionModel.H @@ -25,6 +25,7 @@ License Class Foam::InjectionModel + Description Templated injection model class diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C index 06373ab5cbabdcc53d23ca541173472dbb0b74e3..dc8541525b593e69099b4a736d1c053d3d2d6c28 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.C @@ -46,7 +46,7 @@ Foam::ManualInjection<CloudType>::ManualInjection IOobject ( positionsFile_, - owner.runTime().constant(), + owner.db().time().constant(), owner.mesh(), IOobject::MUST_READ, IOobject::NO_WRITE diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H index 289a0b588ad7daeaec7b2bc7cbad5cde8156c0e8..77059c857027a6a69db1828b53c17fc3e9584456 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ManualInjection/ManualInjection.H @@ -27,12 +27,10 @@ Class Description Manual injection - - For manual injection, - User specifies - -# Total mass to inject - -# Parcel positions in file \<positionsFile\> - -# Initial parcel velocity + - Total mass to inject + - Parcel positions in file <positionsFile> + - Initial parcel velocity - Parcel diameters obtained by PDF model - All parcels introduced at the start of the calculation diff --git a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.H index 7dcad47a24e0562ce324e5bd6540ca2b5039a8fd..0c6c5a851ac085a60571b906edb086dbb06ba8f5 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/WallInteractionModel/WallInteractionModel/WallInteractionModel.H @@ -25,6 +25,7 @@ License Class Foam::WallInteractionModel + Description Templated wall interaction model class diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H index 0215550638428e9f3a2b87cf8f39225bba478bb7..470549c91646c9ff9db1956eda428c114237c719 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H +++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/CompositionModel/CompositionModel.H @@ -25,9 +25,9 @@ License Class Foam::CompositionModel -Description - Templated reacting parcel composition model class. +Description + Templated reacting parcel composition model class Consists of gases (via thermo package), liquids and solids SourceFiles diff --git a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H index c8357bbff59161fd6348a788d34cfa96cab22e14..1269c983069528eb255134a1a99c046f3b44ea6d 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H +++ b/src/lagrangian/intermediate/submodels/Reacting/CompositionModel/SingleMixtureFraction/SingleMixtureFraction.H @@ -28,7 +28,6 @@ Class Description Templated parcel single mixture fraction class - - Each phase sums to a mass fraction of 1 SourceFiles diff --git a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H index 5f5b1bc72c053018ef25a26ca0042e5ab3a9e933..cb5164782a1c83e4fd493abb555a78335b29c27b 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H +++ b/src/lagrangian/intermediate/submodels/Reacting/MassTransferModel/MassTransferModel/MassTransferModel.H @@ -25,6 +25,7 @@ License Class Foam::MassTransferModel + Description Templated mass transfer model class diff --git a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H b/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H index b4d1a8f913380d5eb5ffdf17a0a12096c8b19c97..c6ab5c122539b1efc5e8daabc54a6188e0beceaf 100644 --- a/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H +++ b/src/lagrangian/intermediate/submodels/Reacting/SurfaceReactionModel/SurfaceReactionModel/SurfaceReactionModel.H @@ -25,6 +25,7 @@ License Class Foam::SurfaceReactionModel + Description Templated surface reaction model class diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H index 6ea85606e12cecc02d001fdd1f55d23256c546d9..e1ae0b7383c54bf067ef06c2b17e76e89a3a9208 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/HeatTransferModel.H @@ -25,6 +25,7 @@ License Class Foam::HeatTransferModel + Description Templated heat transfer model class @@ -39,7 +40,6 @@ SourceFiles #include "IOdictionary.H" #include "autoPtr.H" -//#include "KinematicCloud.H" #include "runTimeSelectionTables.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C index 9b7b16a6e26e4927402f89cac522cbcb25954886..a87332daafff81c0c68f1764613590c391ab2e0f 100644 --- a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C +++ b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C @@ -72,7 +72,7 @@ Foam::radiation::cloudAbsorptionEmission::~cloudAbsorptionEmission() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> -Foam::radiation::cloudAbsorptionEmission::a() const +Foam::radiation::cloudAbsorptionEmission::aDisp() const { tmp<volScalarField> ta ( @@ -107,7 +107,7 @@ Foam::radiation::cloudAbsorptionEmission::a() const Foam::tmp<Foam::volScalarField> -Foam::radiation::cloudAbsorptionEmission::e() const +Foam::radiation::cloudAbsorptionEmission::eDisp() const { tmp<volScalarField> te ( @@ -132,7 +132,7 @@ Foam::radiation::cloudAbsorptionEmission::e() const Foam::tmp<Foam::volScalarField> -Foam::radiation::cloudAbsorptionEmission::E() const +Foam::radiation::cloudAbsorptionEmission::EDisp() const { tmp<volScalarField> tE ( diff --git a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H index 1956dfaa112d39edf9536d4c5fd0144f194df8d8..0f4c9e5a532d626cb669ba876d8e3fa8b729bff0 100644 --- a/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H +++ b/src/lagrangian/intermediate/submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.H @@ -23,7 +23,7 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::radiation::cloudAbsorptionEmission + Foam::cloudAbsorptionEmission Description Retrieves absorption/emission data from a cloud object @@ -86,18 +86,24 @@ public: // Member Operators - // Edit - // Access - //- Return absorption coefficient - tmp<volScalarField> a() const; + // Absorption coefficient + + //- Absorption coefficient for dispersed phase + tmp<volScalarField> aDisp() const; + + + // Emission coefficient + + //- Emission coefficient for dispersed phase + tmp<volScalarField> eDisp() const; + - //- Return emission coefficient - tmp<volScalarField> e() const; + // Emission contribution - //- Return emission contribution - tmp<volScalarField> E() const; + //- Return emission contribution for dispersed phase + tmp<volScalarField> EDisp() const; }; diff --git a/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H b/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H index 26185f63621c128c863ba68a29d3d4e673be755b..579a3faaf210b7ce4bdf0af59ca40b81f6583146 100644 --- a/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H +++ b/src/lagrangian/intermediate/submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.H @@ -23,7 +23,7 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::radiation::cloudScatter + Foam::scatterModel Description Cloud radiation scatter model diff --git a/src/thermophysicalModels/radiation/Make/files b/src/thermophysicalModels/radiation/Make/files index f2fcb57d03288f6ad76904c9389e007fa9d7a4ab..9b385e8a5675a2cb704020f20a6d9649f1a840e8 100755 --- a/src/thermophysicalModels/radiation/Make/files +++ b/src/thermophysicalModels/radiation/Make/files @@ -24,8 +24,8 @@ submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmiss /* Boundary conditions */ -boundaryConditions/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C -boundaryConditions/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C +derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C +derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C LIB = $(FOAM_LIBBIN)/libradiation diff --git a/src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C similarity index 100% rename from src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C rename to src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C diff --git a/src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.H b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.H similarity index 100% rename from src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.H rename to src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.H diff --git a/src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C similarity index 100% rename from src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C rename to src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C diff --git a/src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.H b/src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.H similarity index 100% rename from src/thermophysicalModels/radiation/boundaryConditions/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.H rename to src/thermophysicalModels/radiation/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.H diff --git a/src/thermophysicalModels/radiation/radiationModel/P1/P1.C b/src/thermophysicalModels/radiation/radiationModel/P1/P1.C index f4f2d4c07faedf46b546469d46db4c4d90ba2d40..f453f41cd0bfe70ce35b759034f62aa2ca30ebf4 100644 --- a/src/thermophysicalModels/radiation/radiationModel/P1/P1.C +++ b/src/thermophysicalModels/radiation/radiationModel/P1/P1.C @@ -53,13 +53,9 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components -Foam::radiation::P1::P1 -( - const fvMesh& mesh, - const basicThermo& thermo -) +Foam::radiation::P1::P1(const volScalarField& T) : - radiationModel(typeName, mesh, thermo), + radiationModel(typeName, T), G_ ( IOobject @@ -143,12 +139,10 @@ void Foam::radiation::P1::correct() { return; } - a_ = absorptionEmission_->a(); e_ = absorptionEmission_->e(); E_ = absorptionEmission_->E(); const volScalarField sigmaEff = scatter_->sigmaEff(); - const volScalarField& T = thermo_.T(); // Construct diffusion const volScalarField gamma @@ -170,7 +164,7 @@ void Foam::radiation::P1::correct() fvm::laplacian(gamma, G_) - fvm::Sp(a_, G_) == - - 4.0*(e_*radiation::sigmaSB*pow4(T) + mathematicalConstant::pi*E_) + - 4.0*(e_*radiation::sigmaSB*pow4(T_) + E_) ); } @@ -187,17 +181,26 @@ Foam::tmp<Foam::volScalarField> Foam::radiation::P1::Rp() const mesh_.time().timeName(), mesh_, IOobject::NO_READ, - IOobject::NO_WRITE + IOobject::NO_WRITE, + false ), - 4.0*e_*radiation::sigmaSB + 4.0*absorptionEmission_->eCont()*radiation::sigmaSB ) ); } -Foam::tmp<Foam::volScalarField> Foam::radiation::P1::Ru() const +Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> > +Foam::radiation::P1::Ru() const { - return a_*G_ - 4.0*mathematicalConstant::pi*E_; + const DimensionedField<scalar, volMesh>& G = + G_.dimensionedInternalField(); + const DimensionedField<scalar, volMesh> E = + absorptionEmission_->ECont()().dimensionedInternalField(); + const DimensionedField<scalar, volMesh> a = + absorptionEmission_->aCont()().dimensionedInternalField(); + + return a*G - 4.0*E; } diff --git a/src/thermophysicalModels/radiation/radiationModel/P1/P1.H b/src/thermophysicalModels/radiation/radiationModel/P1/P1.H index e7a981aeffbe0d2a790d291317188023a0ec902f..dc12624304ef7f21a508385a802584517ddcb520 100644 --- a/src/thermophysicalModels/radiation/radiationModel/P1/P1.H +++ b/src/thermophysicalModels/radiation/radiationModel/P1/P1.H @@ -93,7 +93,7 @@ public: // Constructors //- Construct from components - P1(const fvMesh& mesh, const basicThermo& thermo); + P1(const volScalarField& T); // Destructor @@ -118,7 +118,7 @@ public: virtual tmp<volScalarField> Rp() const; //- Source term component (constant) - virtual tmp<volScalarField> Ru() const; + virtual tmp<DimensionedField<scalar, volMesh> > Ru() const; }; diff --git a/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.C b/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.C index e21063e64daf420bdd6bb53139dced86cf53b318..e7602376d9c04ea4686a9079b5d036e2050a8d91 100644 --- a/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.C +++ b/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.C @@ -51,13 +51,9 @@ namespace Foam // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // Construct from components -Foam::radiation::noRadiation::noRadiation -( - const fvMesh& mesh, - const basicThermo& thermo -) +Foam::radiation::noRadiation::noRadiation(const volScalarField& T) : - radiationModel(typeName, mesh, thermo) + radiationModel(typeName, T) {} @@ -99,8 +95,7 @@ Foam::tmp<Foam::volScalarField> Foam::radiation::noRadiation::Rp() const dimensionedScalar ( "Rp", - radiation::sigmaSB.dimensions()/dimLength - *pow3(dimTemperature), + radiation::sigmaSB.dimensions()/dimLength, 0.0 ) ) @@ -108,11 +103,12 @@ Foam::tmp<Foam::volScalarField> Foam::radiation::noRadiation::Rp() const } -Foam::tmp<Foam::volScalarField> Foam::radiation::noRadiation::Ru() const +Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> > +Foam::radiation::noRadiation::Ru() const { - return tmp<volScalarField> + return tmp<DimensionedField<scalar, volMesh> > ( - new volScalarField + new DimensionedField<scalar, volMesh> ( IOobject ( diff --git a/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H b/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H index 19a9eaff77c3796684f23d256a01d8059549d24f..c11138f99fbbad46f618e29e0c5f9ac55e6147be 100644 --- a/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H +++ b/src/thermophysicalModels/radiation/radiationModel/noRadiation/noRadiation.H @@ -73,7 +73,7 @@ public: // Constructors //- Construct from components - noRadiation(const fvMesh& mesh, const basicThermo& thermo); + noRadiation(const volScalarField& T); // Destructor @@ -95,7 +95,7 @@ public: tmp<volScalarField> Rp() const; //- Source term component (constant) - tmp<volScalarField> Ru() const; + tmp<DimensionedField<scalar, volMesh> > Ru() const; }; diff --git a/src/thermophysicalModels/radiation/radiationModel/radiationModel/newRadiationModel.C b/src/thermophysicalModels/radiation/radiationModel/radiationModel/newRadiationModel.C index aa4afc803c2ab985e7c65e9ef29ff0f909301860..5ec693d9cc4b2979620d29a476914dd22b5fae80 100644 --- a/src/thermophysicalModels/radiation/radiationModel/radiationModel/newRadiationModel.C +++ b/src/thermophysicalModels/radiation/radiationModel/radiationModel/newRadiationModel.C @@ -38,8 +38,7 @@ namespace radiation autoPtr<radiationModel> radiationModel::New ( - const fvMesh& mesh, - const basicThermo& thermo + const volScalarField& T ) { word radiationModelTypeName; @@ -53,8 +52,8 @@ autoPtr<radiationModel> radiationModel::New IOobject ( "radiationProperties", - mesh.time().constant(), - mesh.db(), + T.mesh().time().constant(), + T.mesh().db(), IOobject::MUST_READ, IOobject::NO_WRITE ) @@ -73,7 +72,7 @@ autoPtr<radiationModel> radiationModel::New { FatalErrorIn ( - "radiationModel::New(const fvMesh&, const basicThermo&)" + "radiationModel::New(const volScalarField&)" ) << "Unknown radiationModel type " << radiationModelTypeName << nl << nl << "Valid radiationModel types are :" << nl @@ -81,7 +80,7 @@ autoPtr<radiationModel> radiationModel::New << exit(FatalError); } - return autoPtr<radiationModel>(cstrIter()(mesh, thermo)); + return autoPtr<radiationModel>(cstrIter()(T)); } diff --git a/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.C b/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.C index 95aac903e8ce49cd578e4d17404729f2e62b10fb..1f5691a8cc23fe8d43e3406d7bb50ad124e64105 100644 --- a/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.C +++ b/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.C @@ -46,8 +46,7 @@ namespace Foam Foam::radiation::radiationModel::radiationModel ( const word& type, - const fvMesh& mesh, - const basicThermo& thermo + const volScalarField& T ) : IOdictionary @@ -55,18 +54,18 @@ Foam::radiation::radiationModel::radiationModel IOobject ( "radiationProperties", - mesh.time().constant(), - mesh.db(), + T.mesh().time().constant(), + T.mesh().db(), IOobject::MUST_READ, IOobject::NO_WRITE ) ), - thermo_(thermo), - mesh_(mesh), + T_(T), + mesh_(T.mesh()), radiation_(lookup("radiation")), radiationModelCoeffs_(subDict(type + "Coeffs")), absorptionEmission_(absorptionEmissionModel::New(*this, mesh_)), - scatter_(scatterModel::New(*this, mesh)) + scatter_(scatterModel::New(*this, mesh_)) {} @@ -96,18 +95,18 @@ bool Foam::radiation::radiationModel::read() Foam::tmp<Foam::fvScalarMatrix> Foam::radiation::radiationModel::Sh ( - volScalarField& h + basicThermo& thermo ) const { - const volScalarField cp = thermo_.Cp(); - const volScalarField& T = thermo_.T(); - const volScalarField T3 = pow3(T); + volScalarField& h = thermo.h(); + const volScalarField cp = thermo.Cp(); + const volScalarField T3 = pow3(T_); return ( Ru() - - fvm::Sp(Rp()*T3/cp, h) - - Rp()*T3*(T - h/cp) + - fvm::Sp(4.0*Rp()*T3/cp, h) + - Rp()*T3*(T_ - 4.0*h/cp) ); } diff --git a/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.H b/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.H index a4aa0480a3e646951bf5135d7cf2401b6ab632f4..703fafca794d9927454d28bd284b47ad66cc6094 100644 --- a/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.H +++ b/src/thermophysicalModels/radiation/radiationModel/radiationModel/radiationModel.H @@ -73,8 +73,8 @@ protected: // Protected data - //- Reference to the thermo package - const basicThermo& thermo_; + //- Reference to the temperature field + const volScalarField& T_; //- Reference to the mesh const fvMesh& mesh_; @@ -120,10 +120,9 @@ public: radiationModel, dictionary, ( - const fvMesh& mesh, - const basicThermo& thermo + const volScalarField& T ), - (mesh, thermo) + (T) ); @@ -133,8 +132,7 @@ public: radiationModel ( const word& type, - const fvMesh& mesh, - const basicThermo& thermo + const volScalarField& T ); @@ -143,8 +141,7 @@ public: //- Return a reference to the selected radiation model static autoPtr<radiationModel> New ( - const fvMesh& mesh, - const basicThermo& thermo + const volScalarField& T ); @@ -170,12 +167,12 @@ public: virtual tmp<volScalarField> Rp() const = 0; //- Source term component (constant) - virtual tmp<volScalarField> Ru() const = 0; + virtual tmp<DimensionedField<scalar, volMesh> > Ru() const = 0; - //- Source term + //- Enthalpy source term virtual tmp<fvScalarMatrix> Sh ( - volScalarField& h + basicThermo& thermo ) const; }; diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C index 4402c2f1b3d637746e17d0c4cbef408fb319251b..046da0bad6b44adc8b23617c4dee4a908e455bb0 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.C @@ -56,4 +56,165 @@ Foam::radiation::absorptionEmissionModel::~absorptionEmissionModel() {} +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::a() const +{ + return aDisp() + aCont(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::aCont() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "aCont", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimensionedScalar("zero", dimless/dimLength, 0.0) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::aDisp() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "aDisp", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimensionedScalar("zero", dimless/dimLength, 0.0) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::e() const +{ + return eDisp() + eCont(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::eCont() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "eCont", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimensionedScalar("zero", dimless/dimLength, 0.0) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::eDisp() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "eDisp", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimensionedScalar("zero", dimless/dimLength, 0.0) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::E() const +{ + return EDisp() + ECont(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::ECont() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "ECont", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimensionedScalar("zero", dimMass/dimLength/pow3(dimTime), 0.0) + ) + ); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::absorptionEmissionModel::EDisp() const +{ + return tmp<volScalarField> + ( + new volScalarField + ( + IOobject + ( + "EDisp", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimensionedScalar("zero", dimMass/dimLength/pow3(dimTime), 0.0) + ) + ); +} + + // ************************************************************************* // diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H index c56153c5a677d36a3d05e0c8131e59734f472f9d..6b50ac26e8f437e694b7a1cad963f14da4c014c0 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/absorptionEmissionModel/absorptionEmissionModel.H @@ -69,7 +69,7 @@ public: //- Runtime type information TypeName("absorptionEmissionModel"); - // Declare runtime constructor selection table + //- Declare runtime constructor selection table declareRunTimeSelectionTable ( @@ -94,7 +94,7 @@ public: ); - // Selector + //- Selector static autoPtr<absorptionEmissionModel> New ( @@ -103,7 +103,7 @@ public: ); - // Destructor + //- Destructor virtual ~absorptionEmissionModel(); @@ -112,14 +112,40 @@ public: // Access - //- Return absorption coefficient - virtual tmp<volScalarField> a() const = 0; + // Absorption coefficient - //- Return emission coefficient - virtual tmp<volScalarField> e() const = 0; + //- Absorption coefficient (net) + virtual tmp<volScalarField> a() const; - //- Return emission contribution - virtual tmp<volScalarField> E() const = 0; + //- Absorption coefficient for continuous phase + virtual tmp<volScalarField> aCont() const; + + //- Absorption coefficient for dispersed phase + virtual tmp<volScalarField> aDisp() const; + + + // Emission coefficient + + //- Emission coefficient (net) + virtual tmp<volScalarField> e() const; + + //- Return emission coefficient for continuous phase + virtual tmp<volScalarField> eCont() const; + + //- Return emission coefficient for dispersed phase + virtual tmp<volScalarField> eDisp() const; + + + // Emission contribution + + //- Emission contribution (net) + virtual tmp<volScalarField> E() const; + + //- Emission contribution for continuous phase + virtual tmp<volScalarField> ECont() const; + + //- Emission contribution for dispersed phase + virtual tmp<volScalarField> EDisp() const; }; diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C index a8f3004d3c6d8da4172d43191125d95b48e8aa09..15dc20d40cd64476cd81860007e818f85c1fb5aa 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.C @@ -74,21 +74,45 @@ Foam::radiation::binaryAbsorptionEmission::~binaryAbsorptionEmission() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -Foam::tmp<Foam::volScalarField> Foam::radiation::binaryAbsorptionEmission::a() const +Foam::tmp<Foam::volScalarField> +Foam::radiation::binaryAbsorptionEmission::aCont() const { - return model1_->a() + model2_->a(); + return model1_->aCont() + model2_->aCont(); } -Foam::tmp<Foam::volScalarField> Foam::radiation::binaryAbsorptionEmission::e() const +Foam::tmp<Foam::volScalarField> +Foam::radiation::binaryAbsorptionEmission::aDisp() const { - return model1_->e() + model2_->e(); + return model1_->aDisp() + model2_->aDisp(); } -Foam::tmp<Foam::volScalarField> Foam::radiation::binaryAbsorptionEmission::E() const +Foam::tmp<Foam::volScalarField> +Foam::radiation::binaryAbsorptionEmission::eCont() const { - return model1_->E() + model2_->E(); + return model1_->eCont() + model2_->eCont(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::binaryAbsorptionEmission::eDisp() const +{ + return model1_->eDisp() + model2_->eDisp(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::binaryAbsorptionEmission::ECont() const +{ + return model1_->ECont() + model2_->ECont(); +} + + +Foam::tmp<Foam::volScalarField> +Foam::radiation::binaryAbsorptionEmission::EDisp() const +{ + return model1_->EDisp() + model2_->EDisp(); } diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H index 473340af35eda17531e8f606d043271087dcd34b..46c040b79beebd10908784bfc9b04b81e5774868 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/binaryAbsorptionEmission/binaryAbsorptionEmission.H @@ -89,18 +89,33 @@ public: // Member Operators - // Edit - // Access - //- Return absorption coefficient - tmp<volScalarField> a() const; + // Absorption coefficient + + //- Absorption coefficient for continuous phase + tmp<volScalarField> aCont() const; + + //- Absorption coefficient for dispersed phase + tmp<volScalarField> aDisp() const; + + + // Emission coefficient + + //- Emission coefficient for continuous phase + tmp<volScalarField> eCont() const; + + //- Emission coefficient for dispersed phase + tmp<volScalarField> eDisp() const; + + + // Emission contribution - //- Return emission coefficient - tmp<volScalarField> e() const; + //- Emission contribution for continuous phase + tmp<volScalarField> ECont() const; - //- Return emission contribution - tmp<volScalarField> E() const; + //- Emission contribution for continuous phase + tmp<volScalarField> EDisp() const; }; diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C index 9661c99059736512ad8024da56109d00800a52cd..bd2e27ea5b27d9769715d7f7fed2bd92e9d4060b 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.C @@ -70,7 +70,7 @@ Foam::radiation::constantAbsorptionEmission::~constantAbsorptionEmission() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> -Foam::radiation::constantAbsorptionEmission::a() const +Foam::radiation::constantAbsorptionEmission::aCont() const { tmp<volScalarField> ta ( @@ -95,7 +95,7 @@ Foam::radiation::constantAbsorptionEmission::a() const Foam::tmp<Foam::volScalarField> -Foam::radiation::constantAbsorptionEmission::e() const +Foam::radiation::constantAbsorptionEmission::eCont() const { tmp<volScalarField> te ( @@ -119,7 +119,8 @@ Foam::radiation::constantAbsorptionEmission::e() const } -Foam::tmp<Foam::volScalarField> Foam::radiation::constantAbsorptionEmission::E() const +Foam::tmp<Foam::volScalarField> +Foam::radiation::constantAbsorptionEmission::ECont() const { tmp<volScalarField> tE ( diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.H b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.H index 921011b086dc6caec3802777203cc92e645b7adb..96a08cef242f77a4f921cce04d0baa897f6ac092 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.H +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/constantAbsorptionEmission/constantAbsorptionEmission.H @@ -26,7 +26,8 @@ Class Foam::radiation::constantAbsorptionEmission Description - Constant radiation absorption and emission coefficients + Constant radiation absorption and emission coefficients for continuous + phase SourceFiles constantAbsorptionEmission.C @@ -92,18 +93,24 @@ public: // Member Operators - // Edit - // Access - //- Return absorption coefficient - tmp<volScalarField> a() const; + // Absorption coefficient + + //- Absorption coefficient for continuous phase + tmp<volScalarField> aCont() const; + + + // Emission coefficient + + //- Emission coefficient for continuous phase + tmp<volScalarField> eCont() const; + - //- Return emission coefficient - tmp<volScalarField> e() const; + // Emission contribution - //- Return emission contribution - tmp<volScalarField> E() const; + //- Emission contribution for continuous phase + tmp<volScalarField> ECont() const; }; diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.C b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.C index fd4dd62269e8ea9cadc45d0da6f1bfc731c31c92..8dc2196a9343934267c2b792d899497e20781eab 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.C +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.C @@ -63,75 +63,4 @@ Foam::radiation::noAbsorptionEmission::~noAbsorptionEmission() {} -// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // - -Foam::tmp<Foam::volScalarField> -Foam::radiation::noAbsorptionEmission::a() const -{ - return tmp<volScalarField> - ( - new volScalarField - ( - IOobject - ( - "a", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - mesh_, - dimensionedScalar("a", dimless/dimLength, 0.0) - ) - ); -} - - -Foam::tmp<Foam::volScalarField> -Foam::radiation::noAbsorptionEmission::e() const -{ - return tmp<volScalarField> - ( - new volScalarField - ( - IOobject - ( - "e", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - mesh_, - dimensionedScalar("e", dimless/dimLength, 0.0) - ) - ); -} - - -Foam::tmp<Foam::volScalarField> -Foam::radiation::noAbsorptionEmission::E() const -{ - return tmp<volScalarField> - ( - new volScalarField - ( - IOobject - ( - "E", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - mesh_, - dimensionedScalar("E", dimMass/dimLength/pow3(dimTime), 0.0) - ) - ); -} - - // ************************************************************************* // diff --git a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.H b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.H index e21f397d0fee673ad8d67bffe1c8a0e259871927..2db4ba2235670cfebbb5b2b458df1a700744d721 100644 --- a/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.H +++ b/src/thermophysicalModels/radiation/submodels/absorptionEmissionModel/noAbsorptionEmission/noAbsorptionEmission.H @@ -54,12 +54,6 @@ class noAbsorptionEmission public absorptionEmissionModel { - // Private data - - //- Coefficients dictionary - dictionary coeffsDict_; - - public: //- Runtime type information @@ -79,22 +73,6 @@ public: // Destructor ~noAbsorptionEmission(); - - - // Member Operators - - // Edit - - // Access - - //- Return absorption coefficient - tmp<volScalarField> a() const; - - //- Return emission coefficient - tmp<volScalarField> e() const; - - //- Return emission contribution - tmp<volScalarField> E() const; };