diff --git a/src/lagrangian/intermediate/submodels/ForceTypes/ParticleForceList/ParticleForceList.C b/src/lagrangian/intermediate/submodels/ForceTypes/ParticleForceList/ParticleForceList.C index 710ecdbb62..3531601edd 100644 --- a/src/lagrangian/intermediate/submodels/ForceTypes/ParticleForceList/ParticleForceList.C +++ b/src/lagrangian/intermediate/submodels/ForceTypes/ParticleForceList/ParticleForceList.C @@ -24,6 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "ParticleForceList.H" +#include "entry.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -57,26 +58,46 @@ Foam::ParticleForceList::ParticleForceList { if (readFields) { - const wordList activeForces(dict.lookup("activeForces")); - - wordHashSet models; - models.insert(activeForces); + wordList modelNames(dict.toc()); Info<< "Constructing particle forces" << endl; - if (models.size() > 0) + + if (modelNames.size() > 0) { - this->setSize(models.size()); + this->setSize(modelNames.size()); label i = 0; - forAllConstIter(wordHashSet, models, iter) + forAllConstIter(IDLList, dict, iter) { - const word& model = iter.key(); - this->set - ( - i, - ParticleForce::New(owner, mesh, dict, model) - ); - i++; + const word& model = iter().keyword(); + if (iter().isDict()) + { + this->set + ( + i++, + ParticleForce::New + ( + owner, + mesh, + iter().dict(), + model + ) + ); + } + else + { + this->set + ( + i++, + ParticleForce::New + ( + owner, + mesh, + dict, + model + ) + ); + } } } else diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/NonSphereDrag/NonSphereDragForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/NonSphereDrag/NonSphereDragForce.C similarity index 96% rename from src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/NonSphereDrag/NonSphereDragForce.C rename to src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/NonSphereDrag/NonSphereDragForce.C index 888e42abf5..6eed9a7c87 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/NonSphereDrag/NonSphereDragForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/NonSphereDrag/NonSphereDragForce.C @@ -41,11 +41,10 @@ Foam::NonSphereDragForce::NonSphereDragForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict, forceType), + ParticleForce(owner, mesh, dict, typeName, true), phi_(readScalar(this->coeffs().lookup("phi"))), a_(exp(2.3288 - 6.4581*phi_ + 2.4486*sqr(phi_))), b_(0.0964 + 0.5565*phi_), diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/NonSphereDrag/NonSphereDragForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/NonSphereDrag/NonSphereDragForce.H similarity index 98% rename from src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/NonSphereDrag/NonSphereDragForce.H rename to src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/NonSphereDrag/NonSphereDragForce.H index b84f1cef6f..f8a18529f3 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/NonSphereDrag/NonSphereDragForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/NonSphereDrag/NonSphereDragForce.H @@ -114,8 +114,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/SphereDrag/SphereDragForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/SphereDrag/SphereDragForce.C similarity index 96% rename from src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/SphereDrag/SphereDragForce.C rename to src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/SphereDrag/SphereDragForce.C index 7887c3d027..6acc18ab4d 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/SphereDrag/SphereDragForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/SphereDrag/SphereDragForce.C @@ -48,11 +48,10 @@ Foam::SphereDragForce::SphereDragForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict) + ParticleForce(owner, mesh, dict, typeName, false) {} diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/SphereDrag/SphereDragForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/SphereDrag/SphereDragForce.H similarity index 97% rename from src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/SphereDrag/SphereDragForce.H rename to src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/SphereDrag/SphereDragForce.H index 484d90a503..6e5eecc36a 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/DragForce/SphereDrag/SphereDragForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Drag/SphereDrag/SphereDragForce.H @@ -66,8 +66,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.C index 6af29abb1b..7dac6c1954 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.C @@ -32,11 +32,10 @@ Foam::GravityForce::GravityForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict), + ParticleForce(owner, mesh, dict, typeName, false), g_(owner.g().value()) {} diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.H index 1bc573df04..192aef8aa5 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Gravity/GravityForce.H @@ -73,8 +73,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C index 77d8c3e037..c8eb1c9565 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.C @@ -33,11 +33,10 @@ Foam::NonInertialFrameForce::NonInertialFrameForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict), + ParticleForce(owner, mesh, dict, typeName, true), WName_ ( this->coeffs().template lookupOrDefault diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.H index aaf8f1065a..f5c1a98de9 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/NonInertialFrame/NonInertialFrameForce.H @@ -94,8 +94,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.C index 24e294e039..15d7b27edb 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.C @@ -34,11 +34,10 @@ Foam::ParamagneticForce::ParamagneticForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict, forceType), + ParticleForce(owner, mesh, dict, typeName, true), HdotGradHName_ ( this->coeffs().template lookupOrDefault("HdotGradH", "HdotGradH") diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.H index f849556f2e..165f385b8e 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Paramagnetic/ParamagneticForce.H @@ -80,8 +80,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.C index 6b6f53aca3..409f26774a 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.C @@ -27,20 +27,6 @@ License // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -template -Foam::ParticleForce::ParticleForce -( - CloudType& owner, - const fvMesh& mesh, - const dictionary& dict -) -: - owner_(owner), - mesh_(mesh), - dict_(dict), - coeffs_(dictionary::null) -{} - template Foam::ParticleForce::ParticleForce @@ -48,14 +34,31 @@ Foam::ParticleForce::ParticleForce CloudType& owner, const fvMesh& mesh, const dictionary& dict, - const word& forceType + const word& forceType, + const bool readCoeffs ) : owner_(owner), mesh_(mesh), - dict_(dict), - coeffs_(dict.subOrEmptyDict(forceType + "Coeffs")) -{} + coeffs_(readCoeffs ? dict : dictionary::null) +{ + if (readCoeffs && (coeffs_.dictName() != forceType)) + { + FatalIOErrorIn + ( + "Foam::ParticleForce::ParticleForce" + "(" + "CloudType&, " + "const fvMesh&, " + "const dictionary&, " + "const word&, " + "const bool" + ")", + dict + ) << "Force " << forceType << " must be specified as a dictionary" + << exit(FatalIOError); + } +} template @@ -63,7 +66,6 @@ Foam::ParticleForce::ParticleForce(const ParticleForce& pf) : owner_(pf.owner_), mesh_(pf.mesh_), - dict_(pf.dict_), coeffs_(pf.coeffs_) {} diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H index 2cbca12d10..79653d4256 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForce.H @@ -61,9 +61,6 @@ class ParticleForce //- Reference to the mesh database const fvMesh& mesh_; - //- Forces dictionary - const dictionary dict_; - //- Force coefficients dictaionary const dictionary coeffs_; @@ -82,10 +79,9 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ), - (owner, mesh, dict, forceType) + (owner, mesh, dict) ); @@ -95,21 +91,14 @@ public: // Constructors - //- Construct null - ParticleForce - ( - CloudType& owner, - const fvMesh& mesh, - const dictionary& dict - ); - //- Construct from mesh ParticleForce ( CloudType& owner, const fvMesh& mesh, const dictionary& dict, - const word& forceType + const word& forceType, + const bool readCoeffs ); //- Construct copy @@ -152,9 +141,6 @@ public: //- Return the mesh database inline const fvMesh& mesh() const; - //- Return the forces dictionary - inline const dictionary& dict() const; - //- Return the force coefficients dictionary inline const dictionary& coeffs() const; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceI.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceI.H index 24aa098e59..a0c3f845b1 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceI.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceI.H @@ -46,13 +46,6 @@ inline const Foam::fvMesh& Foam::ParticleForce::mesh() const } -template -inline const Foam::dictionary& Foam::ParticleForce::dict() const -{ - return dict_; -} - - template inline const Foam::dictionary& Foam::ParticleForce::coeffs() const { diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceNew.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceNew.C index 9c282054c9..6ad230c25e 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceNew.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/ParticleForce/ParticleForceNew.C @@ -50,8 +50,7 @@ Foam::ParticleForce::New "(" "CloudType&, " "const fvMesh&, " - "const dictionary&, " - "const word&" + "const dictionary&" ")" ) << "Unknown particle force type " << forceType @@ -67,8 +66,7 @@ Foam::ParticleForce::New ( owner, mesh, - dict, - forceType + dict ) ); diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.C index a113b44e13..6c12d214a1 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.C @@ -33,11 +33,10 @@ Foam::PressureGradientForce::PressureGradientForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict, forceType), + ParticleForce(owner, mesh, dict, typeName, true), UName_(this->coeffs().lookup("U")), gradUPtr_(NULL) {} diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.H index 4e1f08cc98..5f705e04aa 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/PressureGradient/PressureGradientForce.H @@ -75,8 +75,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.C index e001d29f19..671d642a9d 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.C @@ -32,11 +32,10 @@ Foam::SRFForce::SRFForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict), + ParticleForce(owner, mesh, dict, typeName, false), srfPtr_(NULL) {} diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.H index b8f10d0ea9..d01f595761 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/SRF/SRFForce.H @@ -73,8 +73,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.C b/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.C index 71c0378e7c..ecf50c0caf 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.C +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.C @@ -57,11 +57,10 @@ Foam::BrownianMotionForce::BrownianMotionForce ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ) : - ParticleForce(owner, mesh, dict, forceType), + ParticleForce(owner, mesh, dict, typeName, true), rndGen_(owner.rndGen()), lambda_(readScalar(this->coeffs().lookup("lambda"))), turbulence_(readBool(this->coeffs().lookup("turbulence"))), diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.H b/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.H index 03fed149c9..b68675f6e2 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.H +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/ParticleForces/BrownianMotion/BrownianMotionForce.H @@ -94,8 +94,7 @@ public: ( CloudType& owner, const fvMesh& mesh, - const dictionary& dict, - const word& forceType + const dictionary& dict ); //- Construct copy