45 pdf(typeName, dict, rndGen),
46 minValue_(
readScalar(pdfDict_.lookup(
"minValue"))),
47 maxValue_(
readScalar(pdfDict_.lookup(
"maxValue"))),
48 expectation_(
readScalar(pdfDict_.lookup(
"expectation"))),
49 variance_(
readScalar(pdfDict_.lookup(
"variance"))),
54 FatalErrorIn(
"normal::normal(const dictionary&, Random&)")
55 <<
"Minimum value must be greater than zero. "
56 <<
"Supplied minValue = " << minValue_
60 if (maxValue_ < minValue_)
62 FatalErrorIn(
"normal::normal(const dictionary&, Random&)")
63 <<
"Maximum value is smaller than the minimum value:"
64 <<
" maxValue = " << maxValue_ <<
", minValue = " << minValue_
81 scalar a =
erf((minValue_ - expectation_)/variance_);
82 scalar
b =
erf((maxValue_ - expectation_)/variance_);
84 scalar
y = rndGen_.scalar01();
85 scalar x = erfInv(y*(b - a) + a)*variance_ + expectation_;
90 x =
min(
max(x, minValue_), maxValue_);
111 scalar
h =
log(1.0 - y*y)/a_;
112 scalar x =
sqrt(-k +
sqrt(k*k - h));