The OpenFOAM Foundation
LISASMDCalcMethod2.H
Go to the documentation of this file.
1 {
2  // calculate the new diameter with the standard 1D Rosin Rammler
3  // distribution. Calculation of the mean radius based on SMR rs.
4  // Coefficient factorGamma depends on nExp. Note that Reitz either used
5  // (Schmidt et al., 1999-01-0496) or skipped (Senecal et al.) this factor!
6  // scalar factorGamma = 0.75*sqrt(mathematicalConstant::pi); // nExp=2
7  scalar factorGamma = 1.;
8  scalar delta = dD/factorGamma;
9
10  // dD is the SMD, and the delta is calculated using gamma
11  // function. Here we assume nExp = 2
12  scalar minValue = dD/10.0;
13  scalar maxValue = dD;
14
15  // The pdf value for 4.0*delta is already very small.
16  // scalar maxValue = delta*4.0;
17
18  if (maxValue - minValue < small)
19  {
20  minValue = maxValue/20.0;
21  }
22
23  scalar range = maxValue - minValue;
24
25  scalar nExp = 3;
26  FixedList<scalar, 500> rrd;
30
32  {
33  scalar xx = minValue + range*n/500;
34  rrd[n] = (probFactorMin - exp(-pow(xx/delta, nExp)))*probFactor;
35  }
36
37
38  bool success = false;
39
40  scalar y = rndGen.sample01<scalar>();
41  label k = 0;
42
43  while(!success && (k<500))
44  {
45  if (rrd[k] > y)
46  {
47  success = true;
48  }
49  k++;
50  }
51
52  x = minValue + range*(k - 0.5)/500.0;
53 }
forAll(rrd, n)
scalar minValue
scalar probFactor
scalar range
label k
scalar probFactorMax
scalar maxValue
bool success
FixedList< scalar, 500 > rrd
scalar delta
scalar nExp
scalar probFactorMin
scalar y
label n
dimensionedScalar exp(const dimensionedScalar &ds)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
Random rndGen(label(0))