From 383823e69d76f3357c48f378bd633586e20ce7fd Mon Sep 17 00:00:00 2001 From: andy Date: Mon, 6 Jul 2009 10:50:47 +0100 Subject: [PATCH] updated particle forces --- .../Templates/KinematicCloud/KinematicCloud.C | 2 + .../Templates/KinematicCloud/KinematicCloud.H | 12 ----- .../particleForces/particleForces.C | 47 +++++++++++++------ .../particleForces/particleForces.H | 18 +++++-- .../constant/coalCloud1Properties | 2 - .../constant/limestoneCloud1Properties | 2 - .../filter/constant/reactingCloud1Properties | 2 - .../constant/reactingCloud1Properties | 2 - .../constant/kinematicCloud1Properties | 2 - .../constant/thermoCloud1Properties | 2 - 10 files changed, 49 insertions(+), 42 deletions(-) diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index e2dd07acf1..e473102c1a 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -177,6 +177,7 @@ template void Foam::KinematicCloud::preEvolve() { this->dispersion().cacheFields(true); + forces_.cacheFields(true); } @@ -189,6 +190,7 @@ void Foam::KinematicCloud::postEvolve() } this->dispersion().cacheFields(false); + forces_.cacheFields(false); this->postProcessing().post(); } diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index 077067a972..ee2b3bafe2 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -274,18 +274,6 @@ public: inline const dictionary& interpolationSchemes() const; - // Forces to include in particle motion evaluation - - //- Return reference to the gravity force flag - inline Switch forceGravity() const; - - //- Return reference to the virtual mass force flag - inline Switch forceVirtualMass() const; - - //- Return reference to the pressure gradient force flag - inline Switch forcePressureGradient() const; - - // Sub-models //- Return const-access to the dispersion model diff --git a/src/lagrangian/intermediate/particleForces/particleForces.C b/src/lagrangian/intermediate/particleForces/particleForces.C index d81ebadefc..5320566c84 100644 --- a/src/lagrangian/intermediate/particleForces/particleForces.C +++ b/src/lagrangian/intermediate/particleForces/particleForces.C @@ -27,6 +27,7 @@ License #include "particleForces.H" #include "fvMesh.H" #include "volFields.H" +#include "fvcGrad.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -40,21 +41,17 @@ Foam::particleForces::particleForces mesh_(mesh), dict_(dict.subDict("particleForces")), g_(g), + gradUPtr_(NULL), gravity_(dict_.lookup("gravity")), virtualMass_(dict_.lookup("virtualMass")), Cvm_(0.0), pressureGradient_(dict_.lookup("pressureGradient")), - gradUName_("unknown_gradUName") + UName_(dict_.lookupOrDefault("U", "U")) { - if (gravity_) + if (virtualMass_) { dict_.lookup("Cvm") >> Cvm_; } - - if (pressureGradient_) - { - dict_.lookup("gradU") >> gradUName_; - } } @@ -63,18 +60,21 @@ Foam::particleForces::particleForces(const particleForces& f) mesh_(f.mesh_), dict_(f.dict_), g_(f.g_), + gradUPtr_(f.gradUPtr_), gravity_(f.gravity_), virtualMass_(f.virtualMass_), Cvm_(f.Cvm_), pressureGradient_(f.pressureGradient_), - gradUName_(f.gradUName_) + UName_(f.UName_) {} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::particleForces::~particleForces() -{} +{ + cacheFields(false); +} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -109,9 +109,26 @@ Foam::Switch Foam::particleForces::pressureGradient() const } -const Foam::word& Foam::particleForces::gradUName() const +const Foam::word& Foam::particleForces::UName() const { - return gradUName_; + return UName_; +} + + +void Foam::particleForces::cacheFields(const bool store) +{ + if (store && pressureGradient_) + { + const volVectorField U = mesh_.lookupObject(UName_); + gradUPtr_ = fvc::grad(U).ptr(); + } + else + { + if (gradUPtr_) + { + delete gradUPtr_; + } + } } @@ -130,15 +147,17 @@ Foam::vector Foam::particleForces::calcCoupled // Virtual mass force if (virtualMass_) { - notImplemented("Foam::particleForces::calc(...) - virtualMass force"); + notImplemented + ( + "Foam::particleForces::calcCoupled(...) - virtual mass force" + ); // Ftot += Cvm_*rhoc/rho*d(Uc - U)/dt; } // Pressure gradient force if (pressureGradient_) { - const volSymmTensorField& gradU = - mesh_.lookupObject(gradUName_); + const volTensorField& gradU = *gradUPtr_; Ftot += rhoc/rho*(U & gradU[cellI]); } diff --git a/src/lagrangian/intermediate/particleForces/particleForces.H b/src/lagrangian/intermediate/particleForces/particleForces.H index aab27da465..fbe88a6dc8 100644 --- a/src/lagrangian/intermediate/particleForces/particleForces.H +++ b/src/lagrangian/intermediate/particleForces/particleForces.H @@ -39,6 +39,7 @@ SourceFiles #include "dictionary.H" #include "Switch.H" #include "vector.H" +#include "volFieldsFwd.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -65,6 +66,9 @@ class particleForces //- Gravity const vector g_; + //- Velocity gradient field + const volTensorField* gradUPtr_; + // Forces to include in particle motion evaluation @@ -80,8 +84,11 @@ class particleForces //- Pressure gradient Switch pressureGradient_; - //- Name of velocity gradient field for pressure gradient force - word gradUName_; + + // Additional info + + //- Name of velucity field - default = "U" + const word UName_; public: @@ -126,12 +133,15 @@ public: //- Return pressure gradient force activate switch Switch pressureGradient() const; - //- Return the name of the velocity gradient field - const word& gradUName() const; + //- Return name of velocity field + const word& UName() const; // Evaluation + //- Cache carrier fields + void cacheFields(const bool store); + //- Calculate action/reaction forces between carrier and particles vector calcCoupled ( diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Properties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Properties index 8f53d4c4b0..7fcb35b37c 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Properties +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/coalCloud1Properties @@ -80,9 +80,7 @@ particleForces { gravity on; virtualMass off; - Cvm 0.5; pressureGradient off; - gradU gradU; } ManualInjectionCoeffs diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestoneCloud1Properties b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestoneCloud1Properties index 51e1df0810..a76ed5115f 100644 --- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestoneCloud1Properties +++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/constant/limestoneCloud1Properties @@ -66,9 +66,7 @@ particleForces { gravity on; virtualMass off; - Cvm 0.5; pressureGradient off; - gradU gradU; } ManualInjectionCoeffs diff --git a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Properties b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Properties index d33cf9f91c..76e55a95ea 100644 --- a/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Properties +++ b/tutorials/lagrangian/porousExplicitSourceReactingParcelFoam/filter/constant/reactingCloud1Properties @@ -74,9 +74,7 @@ particleForces { gravity on; virtualMass off; - Cvm 0.5; pressureGradient off; - gradU gradU; } ManualInjectionCoeffs diff --git a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Properties b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Properties index a669b9451b..6a53da3143 100644 --- a/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Properties +++ b/tutorials/lagrangian/reactingParcelFoam/evaporationTest/constant/reactingCloud1Properties @@ -74,9 +74,7 @@ particleForces { gravity on; virtualMass off; - Cvm 0.5; pressureGradient off; - gradU gradU; } ManualInjectionCoeffs diff --git a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties index 8c69fb42b5..93a7d43a9d 100644 --- a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties +++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/kinematicCloud1Properties @@ -54,9 +54,7 @@ particleForces { gravity on; virtualMass off; - Cvm 0.5; pressureGradient off; - gradU gradU; } ManualInjectionCoeffs diff --git a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties index a7c19443e2..ea9f237fb5 100644 --- a/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties +++ b/tutorials/lagrangian/rhoPisoTwinParcelFoam/simplifiedSiwek/constant/thermoCloud1Properties @@ -66,9 +66,7 @@ particleForces { gravity on; virtualMass off; - Cvm 0.5; pressureGradient off; - gradU gradU; } ManualInjectionCoeffs