33template<
class CloudType>
39 auto* ptr = this->
mesh().template getObjectPtr<volVectorField>(fieldName);
49 this->
mesh().thisDb(),
56 regIOobject::store(ptr);
65template<
class CloudType>
78 Ename_(this->
coeffs().template getOrDefault<
word>(
"E",
"E")),
83template<
class CloudType>
90 qPtr_(pf.qPtr_.clone()),
98template<
class CloudType>
109 this->owner().
solution().interpolationSchemes(),
116 EInterpPtr_.reset(
nullptr);
121template<
class CloudType>
125 const typename CloudType::parcelType::trackingData&
td,
132 const interpolation<vector>& EInterp = *EInterpPtr_;
134 const scalar q = qPtr_->value(
p.d());
139 q*EInterp.interpolate(
p.coordinates(),
p.currentTetIndices()),
Particle electric force model involving the Coulomb force calculation.
virtual autoPtr< ParticleForce< CloudType > > clone() const
Construct and return a clone.
virtual forceSuSp calcNonCoupled(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.
virtual void cacheFields(const bool store)
Cache fields.
CoulombForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
Abstract base class for particle forces.
const fvMesh & mesh() const noexcept
Return the mesh database.
static autoPtr< ParticleForce< CloudType > > New(CloudType &owner, const fvMesh &mesh, const dictionary &dict, const word &forceType)
Selector.
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.
Mesh data needed to do the Finite Volume discretisation.
Abstract base class for volume field interpolation.
static autoPtr< interpolation< Type > > New(const word &interpolationType, const GeometricField< Type, fvPatchField, volMesh > &psi)
Return a reference to the specified interpolation scheme.
virtual Type interpolate(const vector &position, const label celli, const label facei=-1) const =0
Interpolate field to the given point in the given cell.
Selector class for relaxation factors, solver type and solution.
A class for handling words, derived from Foam::string.
Template functions to aid in the implementation of demand driven data.
wallPoints::trackData td(isBlockedFace, regionToBlockSize)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
DSMCCloud< dsmcParcel > CloudType
GeometricField< vector, fvPatchField, volMesh > volVectorField
const word GlobalIOList< Tuple2< scalar, vector > >::typeName("scalarVectorTable")
static constexpr const zero Zero
Global zero (0).
scalarField Re(const UList< complex > &cmplx)
Extract real component.