34template<
class CloudType>
37 const typename CloudType::parcelType&
p,
38 const typename CloudType::parcelType::trackingData&
td,
51template<
class CloudType>
66template<
class CloudType>
77template<
class CloudType>
84template<
class CloudType>
87 static word resultName(
"curlUcDt");
90 this->
mesh().template getObjectPtr<volVectorField>(resultName);
97 lookupObject<volVectorField>(UName_);
104 const volVectorField& curlUc = *resultPtr;
106 curlUcInterpPtr_.reset
108 interpolation<vector>::New
110 this->owner().solution().interpolationSchemes(),
117 curlUcInterpPtr_.clear();
127template<
class CloudType>
130 const typename CloudType::parcelType&
p,
131 const typename CloudType::parcelType::trackingData&
td,
138 forceSuSp value(Zero);
141 curlUcInterp().interpolate(
p.coordinates(),
p.currentTetIndices());
143 scalar Cl = this->Cl(
p,
td, curlUc,
Re, muc);
145 value.Su() = mass/
p.rho()*
td.rhoc()*Cl*((
td.Uc() -
p.U())^curlUc);
Base class for particle lift force models.
autoPtr< interpolation< vector > > curlUcInterpPtr_
Curl of carrier phase velocity interpolator.
const interpolation< vector > & curlUcInterp() const
Return the curl of the carrier phase velocity interpolator.
virtual void cacheFields(const bool store)
Cache fields.
LiftForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict, const word &forceType)
Construct from mesh.
virtual ~LiftForce()
Destructor.
virtual scalar Cl(const typename CloudType::parcelType &p, const typename CloudType::parcelType::trackingData &td, const vector &curlUc, const scalar Re, const scalar muc) const
Calculate the lift coefficient.
const word UName_
Name of velocity field.
virtual forceSuSp calcCoupled(const typename CloudType::parcelType &p, const typename CloudType::parcelType::trackingData &td, const scalar dt, const scalar mass, const scalar Re, const scalar muc) const
Calculate the non-coupled force.
Abstract base class for particle forces.
const fvMesh & mesh() const noexcept
Return the mesh database.
const CloudType & owner() const noexcept
Return const access to the cloud owner.
ParticleForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict, const word &forceType, const bool readCoeffs)
Construct from mesh.
const dictionary & coeffs() const noexcept
Return the force coefficients dictionary.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Helper container for force Su and Sp terms.
const vector & Su() const
Return const access to the explicit contribution [kg.m/s2].
Mesh data needed to do the Finite Volume discretisation.
static autoPtr< interpolation< Type > > New(const word &interpolationType, const GeometricField< Type, fvPatchField, volMesh > &psi)
Return a reference to the specified interpolation scheme.
bool store()
Register object with its registry and transfer ownership to the registry.
bool checkOut()
Remove object from registry, and remove all file watches.
Selector class for relaxation factors, solver type and solution.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
A class for handling words, derived from Foam::string.
Calculate the curl of the given volField by constructing the Hodge-dual of the symmetric part of the ...
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
tmp< GeometricField< Type, fvPatchField, volMesh > > curl(const GeometricField< Type, fvPatchField, volMesh > &vf)
DSMCCloud< dsmcParcel > CloudType
GeometricField< vector, fvPatchField, volMesh > volVectorField
static constexpr const zero Zero
Global zero (0).
scalarField Re(const UList< complex > &cmplx)
Extract real component.