30 template<
class CloudType>
38 weCorrCoeff_(this->coeffDict().template lookup<scalar>(
"weCorrCoeff")),
39 weBuCrit_(this->coeffDict().
template lookup<scalar>(
"weBuCrit")),
40 weBuBag_(this->coeffDict().
template lookup<scalar>(
"weBuBag")),
41 weBuMM_(this->coeffDict().
template lookup<scalar>(
"weBuMM")),
42 ohnCoeffCrit_(this->coeffDict().
template lookup<scalar>(
"ohnCoeffCrit")),
43 ohnCoeffBag_(this->coeffDict().
template lookup<scalar>(
"ohnCoeffBag")),
44 ohnCoeffMM_(this->coeffDict().
template lookup<scalar>(
"ohnCoeffMM")),
45 ohnExpCrit_(this->coeffDict().
template lookup<scalar>(
"ohnExpCrit")),
46 ohnExpBag_(this->coeffDict().
template lookup<scalar>(
"ohnExpBag")),
47 ohnExpMM_(this->coeffDict().
template lookup<scalar>(
"ohnExpMM")),
48 cInit_(this->coeffDict().
template lookup<scalar>(
"Cinit")),
49 c1_(this->coeffDict().
template lookup<scalar>(
"C1")),
50 c2_(this->coeffDict().
template lookup<scalar>(
"C2")),
51 c3_(this->coeffDict().
template lookup<scalar>(
"C3")),
52 cExp1_(this->coeffDict().
template lookup<scalar>(
"Cexp1")),
53 cExp2_(this->coeffDict().
template lookup<scalar>(
"Cexp2")),
54 cExp3_(this->coeffDict().
template lookup<scalar>(
"Cexp3")),
55 weConst_(this->coeffDict().
template lookup<scalar>(
"Weconst")),
56 weCrit1_(this->coeffDict().
template lookup<scalar>(
"Wecrit1")),
57 weCrit2_(this->coeffDict().
template lookup<scalar>(
"Wecrit2")),
58 coeffD_(this->coeffDict().
template lookup<scalar>(
"CoeffD")),
59 onExpD_(this->coeffDict().
template lookup<scalar>(
"OnExpD")),
60 weExpD_(this->coeffDict().
template lookup<scalar>(
"WeExpD")),
61 mu_(this->coeffDict().
template lookup<scalar>(
"mu")),
62 sigma_(this->coeffDict().
template lookup<scalar>(
"sigma")),
63 d32Coeff_(this->coeffDict().
template lookup<scalar>(
"d32Coeff")),
64 cDmaxBM_(this->coeffDict().
template lookup<scalar>(
"cDmaxBM")),
65 cDmaxS_(this->coeffDict().
template lookup<scalar>(
"cDmaxS")),
66 corePerc_(this->coeffDict().
template lookup<scalar>(
"corePerc"))
70 template<
class CloudType>
74 weCorrCoeff_(bum.weCorrCoeff_),
75 weBuCrit_(bum.weBuCrit_),
76 weBuBag_(bum.weBuBag_),
78 ohnCoeffCrit_(bum.ohnCoeffCrit_),
79 ohnCoeffBag_(bum.ohnCoeffBag_),
80 ohnCoeffMM_(bum.ohnCoeffMM_),
81 ohnExpCrit_(bum.ohnExpCrit_),
82 ohnExpBag_(bum.ohnExpBag_),
83 ohnExpMM_(bum.ohnExpMM_),
91 weConst_(bum.weConst_),
92 weCrit1_(bum.weCrit1_),
93 weCrit2_(bum.weCrit2_),
99 d32Coeff_(bum.d32Coeff_),
100 cDmaxBM_(bum.cDmaxBM_),
101 cDmaxS_(bum.cDmaxS_),
102 corePerc_(bum.corePerc_)
108 template<
class CloudType>
115 template<
class CloudType>
143 bool addChild =
false;
145 scalar d03 =
pow3(d);
147 scalar mass0 = nParticle*rhopi6*d03;
150 scalar weGas = 0.5*rhoc*
sqr(Urmag)*d/
sigma;
151 scalar weLiquid = 0.5*rho*
sqr(Urmag)*d/
sigma;
154 scalar reLiquid = 0.5*Urmag*d/
mu;
155 scalar ohnesorge =
sqrt(weLiquid)/(reLiquid + vSmall);
157 scalar weGasCorr = weGas/(1.0 + weCorrCoeff_*ohnesorge);
163 scalar rChar = Urmag/d*
sqrt(rhoc/rho);
167 if (tc*rChar < small)
173 scalar tChar = 1/rChar;
175 scalar tFirst = cInit_*tChar;
178 scalar tCharSecond = 0;
181 bool multimode =
false;
186 if (weGas > weConst_)
188 if (weGas < weCrit1_)
190 tCharSecond = c1_*
pow((weGas - weConst_), cExp1_);
192 else if (weGas >= weCrit1_ && weGas <= weCrit2_)
194 tCharSecond = c2_*
pow((weGas - weConst_), cExp2_);
198 tCharSecond = c3_*
pow((weGas - weConst_), cExp3_);
202 scalar weC = weBuCrit_*(1.0 + ohnCoeffCrit_*
pow(ohnesorge, ohnExpCrit_));
203 scalar weB = weBuBag_*(1.0 + ohnCoeffBag_*
pow(ohnesorge, ohnExpBag_));
204 scalar weMM = weBuMM_*(1.0 + ohnCoeffMM_*
pow(ohnesorge, ohnExpMM_));
206 if (weGas > weC && weGas < weB)
211 if (weGas >= weB && weGas <= weMM)
221 tSecond = tCharSecond*tChar;
223 scalar tBreakUP = tFirst + tSecond;
226 scalar d32 = coeffD_*d*
pow(ohnesorge, onExpD_)*
pow(weGasCorr, weExpD_);
228 if (bag || multimode)
230 scalar d05 = d32Coeff_ * d32;
238 x = cDmaxBM_*rndGen.
sample01<scalar>();
245 *
exp(-0.5*
sqr((x - mu_)/sigma_));
259 scalar dC = weConst_*sigma/(rhoc*
sqr(Urmag));
260 scalar d32Red = 4.0*(d32*dC)/(5.0*dC - d32);
262 scalar d05 = d32Coeff_ * d32Red;
270 x = cDmaxS_*rndGen.
sample01<scalar>();
277 *
exp(-0.5*
sqr((x - mu_)/sigma_));
287 massChild = corePerc_*mass0;
296 nParticle = mass/(rhopi6*
pow3(d));
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 properties.
SHF(const dictionary &, CloudType &)
Construct from dictionary.
A list of keyword definitions, which are a keyword followed by any number of values (e...
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionedScalar & sigma
Stefan-Boltzmann constant: default SI units: [W/m^2/K^4].
dimensionedScalar sqrt(const dimensionedScalar &ds)
const CloudType & owner() const
Return const access to the owner cloud.
Secondary Breakup Model to take account of the different breakup regimes, bag, solutionmode, shear....
Type sample01()
Advance the state and return a sample of a given type from a.
dimensionedScalar exp(const dimensionedScalar &ds)
Random & rndGen()
Return references to the random object.
const scalar twoPi(2 *pi)
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar pow3(const dimensionedScalar &ds)
const dimensionedScalar & mu
Atomic mass unit.
Templated break-up model class.
Templated base class for dsmc cloud.
virtual ~SHF()
Destructor.