34 namespace distributions
42 const Foam::scalar Foam::distributions::normal::a_ = 0.147;
59 Foam::scalar Foam::distributions::normal::approxErfInv(
const scalar
y)
61 const scalar l =
log(1 -
y*
y),
b = 2/(
pi*a_) + l/2;
74 static const scalar sqrt2Pi =
sqrt(2*
pi);
87 static const scalar sqrt2 =
sqrt(scalar(2));
88 return (1 + approxErf((
x - mu_)/(sigma_*sqrt2)))/2;
92 return unintegrableForNonZeroQ::Phi(q,
x);
97 Foam::scalar Foam::distributions::normal::sampleForZeroQ(
const scalar
s)
const
99 static const scalar sqrt2 =
sqrt(scalar(2));
100 const Pair<scalar>& Phi01 = this->Phi01();
101 const scalar PhiS = (1 -
s)*Phi01[0] +
s*Phi01[1];
102 return approxErfInv(2*PhiS - 1)*sigma_*sqrt2 + mu_;
122 min_(
dict.lookupBackwardsCompatible<scalar>({
"min",
"minValue"})),
123 max_(
dict.lookupBackwardsCompatible<scalar>({
"max",
"maxValue"})),
124 mu_(
dict.lookupBackwardsCompatible<scalar>({
"mu",
"expectation"})),
125 sigma_(
dict.lookup<scalar>(
"sigma"))
127 validateBounds(
dict);
128 if (q() != 0) validatePositive(
dict);
176 return sampleForZeroQ(rndGen_.sample01<scalar>());
Macros for easy insertion into run-time selection tables.
A list of keyword definitions, which are a keyword followed by any number of values (e....
Accumulating histogram of values. Specified bin resolution automatic generation of bins.
virtual tmp< scalarField > x(const label n) const
Return coordinates to plot across the range of the distribution.
Normal distribution, scaled so that it spans between a specified minimum and maximum value,...
virtual scalar min() const
Return the minimum value.
virtual scalar sample() const
Sample the distribution.
normal(const dictionary &dict, Random &rndGen, const label sampleQ)
Construct from a dictionary.
virtual tmp< scalarField > x(const label n) const
Return coordinates to plot across the range of the distribution.
virtual ~normal()
Destructor.
virtual scalar max() const
Return the maximum value.
virtual scalar mean() const
Return the mean value.
scalar sample() const
Sample the distribution.
virtual scalar mean() const
Return the mean value.
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.name(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
const dimensionedScalar sigma
Stefan-Boltzmann constant: default SI units: [W/m^2/K^4].
const dimensionedScalar mu
Atomic mass unit.
defineTypeNameAndDebug(exponential, 0)
addToRunTimeSelectionTable(distribution, exponential, dictionary)
dimensionedScalar exp(const dimensionedScalar &ds)
dimensionedScalar sign(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.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
scalar integerPow(const scalar x, const label e)
Compute the power of the number x to the integer e.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
dimensionedScalar log(const dimensionedScalar &ds)
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
dimensionedScalar sqrt(const dimensionedScalar &ds)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)