36 template<
class CloudType>
39 const scalar a = 0.147;
41 scalar h =
log(1.0 - y*y)/a;
55 template<
class CloudType>
59 const objectRegistry& obr = this->owner().
mesh();
76 <<
"Turbulence model not found in mesh database" <<
nl 77 <<
"Database objects include: " << obr.sortedToc()
80 return tmp<volScalarField>(
nullptr);
87 template<
class CloudType>
96 rndGen_(owner.rndGen()),
104 template<
class CloudType>
111 rndGen_(bmf.rndGen_),
112 lambda_(bmf.lambda_),
113 turbulence_(bmf.turbulence_),
121 template<
class CloudType>
128 template<
class CloudType>
159 template<
class CloudType>
163 const typename CloudType::parcelType::trackingData& td,
172 const scalar dp = p.d();
173 const scalar Tc = td.Tc();
175 const scalar
alpha = 2.0*lambda_/dp;
176 const scalar cc = 1.0 + alpha*(1.257 + 0.4*
exp(-1.1/alpha));
184 const label celli = p.cell();
186 const scalar kc = k[celli];
210 Random& rnd = this->owner().rndGen();
213 const scalar u = 2*rnd.
scalar01() - 1;
215 const scalar a =
sqrt(1 -
sqr(u));
const char *const group
Group name for atomic constants.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
dimensionedScalar log(const dimensionedScalar &ds)
scalar scalarNormal()
Advance the state and return a scalar sample from a normal.
const vector & Su() const
Return const access to the explicit contribution [kg m/s^2].
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
bool isTmp() const
Return true if this is really a temporary object.
ThermalDiffusivity< CompressibleTurbulenceModel< fluidThermo > > turbulenceModel
dimensionedScalar sqrt(const dimensionedScalar &ds)
const fvMesh & mesh() const
Return the mesh database.
Abstract base class for particle forces.
dimensionedScalar pow5(const dimensionedScalar &ds)
Fundamental dimensioned constants.
Helper container for force Su and Sp terms.
stressControl lookup("compactNormalStress") >> compactNormalStress
dimensionedScalar cos(const dimensionedScalar &ds)
dimensionedScalar exp(const dimensionedScalar &ds)
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 coupled force.
static const word propertiesName
Default name of the turbulence properties dictionary.
static word groupName(Name name, const word &group)
const Type & value() const
Return const reference to value.
bool readScalar(const char *buf, doubleScalar &s)
Read whole of buf as a scalar. Return true if successful.
errorManip< error > abort(error &err)
BrownianMotionForce(CloudType &owner, const fvMesh &mesh, const dictionary &dict)
Construct from mesh.
const scalar twoPi(2 *pi)
ParcelType parcelType
Type of parcel the cloud was instantiated for.
dimensionedScalar sin(const dimensionedScalar &ds)
virtual void cacheFields(const bool store)
Cache fields.
const dimensionedScalar k
Boltzmann constant.
Template functions to aid in the implementation of demand driven data.
Mesh data needed to do the Finite Volume discretisation.
dimensioned< scalar > mag(const dimensioned< Type > &)
virtual ~BrownianMotionForce()
Destructor.
volScalarField alpha(IOobject("alpha", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
T * ptr() const
Return tmp pointer for reuse.
A class for managing temporary objects.
void deleteDemandDrivenData(DataPtr &dataPtr)
Templated base class for dsmc cloud.
scalar scalar01()
Advance the state and return a scalar sample from a uniform.
Calculates particle Brownian motion force.