30 template<
class CloudType>
38 SMDCalcMethod_(this->coeffDict().lookup(
"SMDCalculationMethod"))
41 const scalar xx0 = 12.0;
43 1.0/(1.0 -
exp(-xx0)*(1.0 + xx0 +
sqr(xx0)/2.0 +
pow3(xx0)/6.0));
47 scalar xx = 0.12*(
n + 1);
49 (1.0 -
exp(-xx)*(1.0 + xx +
sqr(xx)/2.0 +
pow3(xx)/6.0))*rrd100;
52 if (SMDCalcMethod_ ==
"method1")
56 else if (SMDCalcMethod_ ==
"method2")
64 <<
"Unknown SMDCalculationMethod. Valid options are " 65 <<
"(method1 | method2). Using method2" <<
endl;
70 template<
class CloudType>
74 SMDCalcMethod_(bum.SMDCalcMethod_)
80 template<
class CloudType>
87 template<
class CloudType>
119 scalar semiMass = nParticle*
pow3(d);
122 scalar rtd = 0.5*this->
TABCmu_*mu/(rho*r2);
125 scalar omega2 = this->
TABComega_*sigma/(rho*r3) - rtd*rtd;
129 scalar omega =
sqrt(omega2);
130 scalar We = rhoc*
sqr(Urmag)*r/
sigma;
133 scalar
y1 = y - Wetmp;
134 scalar y2 = yDot/omega;
136 scalar a =
sqrt(y1*y1 + y2*y2);
144 phic =
max(
min(phic, 1), -1);
146 scalar phit =
acos(phic);
159 if ((Wetmp - a < -1) && (yDot < 0))
164 scalar theta =
acos((coste-Wetmp)/a);
174 tb = (theta-
phi)/omega;
180 yDot = -a*omega*
sin(omega*tb + phi);
189 r/(1.0 + (4.0/3.0)*
sqr(y) + rho*r3/(8*
sigma)*
sqr(yDot));
224 nParticle = semiMass/
pow3(d);
dimensionedScalar acos(const dimensionedScalar &ds)
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
A list of keyword definitions, which are a keyword followed by any number of values (e...
dimensioned< Type > max(const dimensioned< Type > &, const dimensioned< Type > &)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionedScalar & sigma
Stefan-Boltzmann constant: default SI units: [W/m^2/K^4].
dimensionedScalar sqrt(const dimensionedScalar &ds)
Ostream & endl(Ostream &os)
Add newline and flush stream.
const CloudType & owner() const
Return const access to the owner cloud.
dimensionedScalar exp(const dimensionedScalar &ds)
Random & rndGen()
Return references to the random object.
virtual ~TAB()
Destructor.
dimensionedScalar y1(const dimensionedScalar &ds)
const scalar twoPi(2 *pi)
dimensionedScalar sin(const dimensionedScalar &ds)
The TAB Method for Numerical Calculation of Spray Droplet Breakup.
dimensioned< Type > min(const dimensioned< Type > &, const dimensioned< Type > &)
TAB(const dictionary &dict, CloudType &owner)
Construct from dictionary.
dimensionedScalar pow3(const dimensionedScalar &ds)
#define WarningInFunction
Report a warning using Foam::Warning.
dimensioned< scalar > mag(const dimensioned< Type > &)
Templated break-up model class.
Templated base class for dsmc cloud.
virtual bool update(const scalar dt, const vector &g, scalar &d, scalar &tc, scalar &ms, scalar &nParticle, scalar &KHindex, scalar &y, scalar &yDot, const scalar d0, const scalar rho, const scalar mu, const scalar sigma, const vector &U, const scalar rhoc, const scalar muc, const vector &Urel, const scalar Urmag, const scalar tMom, scalar &dChild, scalar &massChild)
Update the parcel diameter.