30 template<
class CloudType>
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);
161 scalar tChar = d/Urmag*
sqrt(rho/rhoc);
163 scalar tFirst = cInit_*tChar;
166 scalar tCharSecond = 0;
169 bool multimode =
false;
177 if (weGas > weConst_)
179 if (weGas < weCrit1_)
181 tCharSecond = c1_*
pow((weGas - weConst_), cExp1_);
183 else if (weGas >= weCrit1_ && weGas <= weCrit2_)
185 tCharSecond = c2_*
pow((weGas - weConst_), cExp2_);
189 tCharSecond = c3_*
pow((weGas - weConst_), cExp3_);
193 scalar weC = weBuCrit_*(1.0 + ohnCoeffCrit_*
pow(ohnesorge, ohnExpCrit_));
194 scalar weB = weBuBag_*(1.0 + ohnCoeffBag_*
pow(ohnesorge, ohnExpBag_));
195 scalar weMM = weBuMM_*(1.0 + ohnCoeffMM_*
pow(ohnesorge, ohnExpMM_));
197 if (weGas > weC && weGas < weB)
202 if (weGas >= weB && weGas <= weMM)
212 tSecond = tCharSecond*tChar;
214 scalar tBreakUP = tFirst + tSecond;
217 scalar d32 = coeffD_*d*
pow(ohnesorge, onExpD_)*
pow(weGasCorr, weExpD_);
219 if (bag || multimode)
221 scalar d05 = d32Coeff_ * d32;
229 x = cDmaxBM_*rndGen.
sample01<scalar>();
236 *
exp(-0.5*
sqr((x - mu_)/sigma_));
250 scalar dC = weConst_*sigma/(rhoc*
sqr(Urmag));
251 scalar d32Red = 4.0*(d32*dC)/(5.0*dC - d32);
253 scalar d05 = d32Coeff_ * d32Red;
261 x = cDmaxS_*rndGen.
sample01<scalar>();
268 *
exp(-0.5*
sqr((x - mu_)/sigma_));
278 massChild = corePerc_*mass0;
287 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)
dimensionedScalar sqrt(const dimensionedScalar &ds)
const dimensionedScalar sigma
Stefan-Boltzmann constant: default SI units: [W/m2/K4].
const CloudType & owner() const
Return const access to the owner cloud.
Secondary Breakup Model to take account of the different breakup regimes, bag, molutimode, shear....
Type sample01()
Advance the state and return a sample of a given type from a.
stressControl lookup("compactNormalStress") >> compactNormalStress
dimensionedScalar exp(const dimensionedScalar &ds)
Random & rndGen()
Return references to the random object.
const scalar twoPi(2 *pi)
const dimensionedScalar mu
Atomic mass unit.
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
dimensionedScalar pow3(const dimensionedScalar &ds)
Templated break-up model class.
Templated base class for dsmc cloud.
virtual ~SHF()
Destructor.