35template<
class CloudType>
46 this->
coeffs().template getOrDefault<
word>(
"HdotGradH",
"HdotGradH")
48 HdotGradHInterpPtr_(nullptr),
49 magneticSusceptibility_
51 this->
coeffs().getScalar(
"magneticSusceptibility")
56template<
class CloudType>
63 HdotGradHName_(pf.HdotGradHName_),
64 HdotGradHInterpPtr_(pf.HdotGradHInterpPtr_),
65 magneticSusceptibility_(pf.magneticSusceptibility_)
71template<
class CloudType>
78template<
class CloudType>
84 this->
mesh().template lookupObject<volVectorField>(HdotGradHName_);
88 this->owner().
solution().interpolationSchemes(),
99template<
class CloudType>
102 const typename CloudType::parcelType&
p,
103 const typename CloudType::parcelType::trackingData&
td,
110 forceSuSp value(Zero);
112 const interpolation<vector>& HdotGradHInterp = *HdotGradHInterpPtr_;
115 mass*3.0*constant::electromagnetic::mu0.value()/
p.rho()
116 *magneticSusceptibility_/(magneticSusceptibility_ + 3)
117 *HdotGradHInterp.interpolate(
p.coordinates(),
p.currentTetIndices());
Calculates particle paramagnetic (magnetic field) force.
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.
virtual ~ParamagneticForce()
Destructor.
ParamagneticForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
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.
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)
const dimensionedScalar mu0
Magnetic constant/permeability of free space: default SI units: [H/m].
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.
void deleteDemandDrivenData(DataPtr &dataPtr)