ENH: particleForces. Not caching gradH field, looking up HdotGradH

field directly.

Renaming Ftot to accelTot to remind that the functions return
accelerations.
This commit is contained in:
graham
2010-04-14 13:59:58 +01:00
parent 55cd7409d8
commit c948fadb10
2 changed files with 24 additions and 41 deletions

View File

@ -43,7 +43,6 @@ Foam::particleForces::particleForces
dict_(dict.subDict("particleForces")), dict_(dict.subDict("particleForces")),
g_(g), g_(g),
gradUPtr_(NULL), gradUPtr_(NULL),
gradHPtr_(NULL),
gravity_(dict_.lookup("gravity")), gravity_(dict_.lookup("gravity")),
virtualMass_(dict_.lookup("virtualMass")), virtualMass_(dict_.lookup("virtualMass")),
Cvm_(0.0), Cvm_(0.0),
@ -51,7 +50,7 @@ Foam::particleForces::particleForces
paramagnetic_(dict_.lookup("paramagnetic")), paramagnetic_(dict_.lookup("paramagnetic")),
magneticSusceptibility_(0.0), magneticSusceptibility_(0.0),
UName_(dict_.lookupOrDefault<word>("U", "U")), UName_(dict_.lookupOrDefault<word>("U", "U")),
HName_(dict_.lookupOrDefault<word>("H", "H")) HdotGradHName_(dict_.lookupOrDefault<word>("HdotGradH", "HdotGradH"))
{ {
if (virtualMass_) if (virtualMass_)
{ {
@ -71,7 +70,6 @@ Foam::particleForces::particleForces(const particleForces& f)
dict_(f.dict_), dict_(f.dict_),
g_(f.g_), g_(f.g_),
gradUPtr_(f.gradUPtr_), gradUPtr_(f.gradUPtr_),
gradHPtr_(f.gradHPtr_),
gravity_(f.gravity_), gravity_(f.gravity_),
virtualMass_(f.virtualMass_), virtualMass_(f.virtualMass_),
Cvm_(f.Cvm_), Cvm_(f.Cvm_),
@ -79,7 +77,7 @@ Foam::particleForces::particleForces(const particleForces& f)
paramagnetic_(f.paramagnetic_), paramagnetic_(f.paramagnetic_),
magneticSusceptibility_(f.magneticSusceptibility_), magneticSusceptibility_(f.magneticSusceptibility_),
UName_(f.UName_), UName_(f.UName_),
HName_(f.HName_) HdotGradHName_(f.HdotGradHName_)
{} {}
@ -147,9 +145,9 @@ const Foam::word& Foam::particleForces::UName() const
} }
const Foam::word& Foam::particleForces::HName() const const Foam::word& Foam::particleForces::HdotGradHName() const
{ {
return HName_; return HdotGradHName_;
} }
@ -168,20 +166,6 @@ void Foam::particleForces::cacheFields(const bool store)
gradUPtr_ = NULL; gradUPtr_ = NULL;
} }
} }
if (store && paramagnetic_)
{
const volVectorField& H = mesh_.lookupObject<volVectorField>(HName_);
gradHPtr_ = fvc::grad(H).ptr();
}
else
{
if (gradHPtr_)
{
delete gradHPtr_;
gradHPtr_ = NULL;
}
}
} }
@ -196,7 +180,7 @@ Foam::vector Foam::particleForces::calcCoupled
const scalar d const scalar d
) const ) const
{ {
vector Ftot = vector::zero; vector accelTot = vector::zero;
// Virtual mass force // Virtual mass force
if (virtualMass_) if (virtualMass_)
@ -205,17 +189,17 @@ Foam::vector Foam::particleForces::calcCoupled
( (
"Foam::particleForces::calcCoupled(...) - virtual mass force" "Foam::particleForces::calcCoupled(...) - virtual mass force"
); );
// Ftot += Cvm_*rhoc/rho*d(Uc - U)/dt; // accelTot += Cvm_*rhoc/rho*d(Uc - U)/dt;
} }
// Pressure gradient force // Pressure gradient force
if (pressureGradient_) if (pressureGradient_)
{ {
const volTensorField& gradU = *gradUPtr_; const volTensorField& gradU = *gradUPtr_;
Ftot += rhoc/rho*(U & gradU[cellI]); accelTot += rhoc/rho*(U & gradU[cellI]);
} }
return Ftot; return accelTot;
} }
@ -230,26 +214,27 @@ Foam::vector Foam::particleForces::calcNonCoupled
const scalar d const scalar d
) const ) const
{ {
vector Ftot = vector::zero; vector accelTot = vector::zero;
// Gravity force // Gravity force
if (gravity_) if (gravity_)
{ {
Ftot += g_*(1.0 - rhoc/rho); accelTot += g_*(1.0 - rhoc/rho);
} }
// Magnetic field force // Magnetic field force
if (paramagnetic_) if (paramagnetic_)
{ {
const volVectorField& H = mesh_.lookupObject<volVectorField>(HName_); const volVectorField& HdotGradH = mesh_.lookupObject<volVectorField>
(
HdotGradHName_
);
const volTensorField& gradH = *gradHPtr_; accelTot +=
Ftot +=
3.0*constant::electromagnetic::mu0.value()/rho 3.0*constant::electromagnetic::mu0.value()/rho
*magneticSusceptibility_/(magneticSusceptibility_ + 3) *magneticSusceptibility_/(magneticSusceptibility_ + 3)
*(H[cellI] & gradH[cellI]); *HdotGradH[cellI];
// force is: // force is:
@ -257,14 +242,14 @@ Foam::vector Foam::particleForces::calcNonCoupled
// *constant::mathematical::pi // *constant::mathematical::pi
// *constant::electromagnetic::mu0.value() // *constant::electromagnetic::mu0.value()
// *pow3(d/2) // *pow3(d/2)
// *magneticSusceptibility/(magneticSusceptibility + 3) // *magneticSusceptibility_/(magneticSusceptibility_ + 3)
// *(H[cellI] & gradH[cellI]); // *HdotGradH[cellI];
// which is divided by mass ((4/3)*pi*r^3*rho) to produce // which is divided by mass ((4/3)*pi*r^3*rho) to produce
// acceleration // acceleration
} }
return Ftot; return accelTot;
} }

View File

@ -69,9 +69,6 @@ class particleForces
//- Velocity gradient field //- Velocity gradient field
const volTensorField* gradUPtr_; const volTensorField* gradUPtr_;
//- Magnetic field strength gradient field
const volTensorField* gradHPtr_;
// Forces to include in particle motion evaluation // Forces to include in particle motion evaluation
@ -99,8 +96,9 @@ class particleForces
//- Name of velocity field - default = "U" //- Name of velocity field - default = "U"
const word UName_; const word UName_;
//- Name of magnetic field strength field - default = "H" //- Name of paramagnetic field strength field - default =
const word HName_; // "HdotGradH"
const word HdotGradHName_;
public: public:
@ -154,8 +152,8 @@ public:
//- Return magnetic susceptibility //- Return magnetic susceptibility
scalar magneticSusceptibility() const; scalar magneticSusceptibility() const;
//- Return name of velocity field //- Return name of paramagnetic field strength field
const word& HName() const; const word& HdotGradHName() const;
// Evaluation // Evaluation