34 namespace distributions
46 const dictionary&
dict
56 cumSHat[i + 1] = cumSHat[i] + sHat[i];
76 (cumulativeStrengths_[i + 1] - cumulativeStrengths_[i])
77 *distributions_[i].phi(0,
x);
95 (cumulativeStrengths_[i + 1] - cumulativeStrengths_[i])
96 *distributions_[i].Phi(0,
x);
121 cumulativeStrengths_(readCumulativeStrengths(
dict))
125 dict.lookupBackwardsCompatible<scalar>({
"min",
"minValue"},
units)
129 dict.lookupBackwardsCompatible<scalar>({
"max",
"maxValue"},
units)
142 mu.size() != cumulativeStrengths_.
size() - 1
143 ||
sigma.size() != cumulativeStrengths_.
size() - 1
147 <<
type() <<
": Differing numbers of means, standard deviations "
148 <<
"and strengths were given:" <<
nl <<
" mu = " <<
mu
149 <<
", sigma = " <<
sigma <<
", strength = "
153 distributions_.resize(
mu.size());
173 validateBounds(
dict);
174 if (q() != 0) validatePositive(
dict);
186 cumulativeStrengths_(d.cumulativeStrengths_),
187 distributions_(d.distributions_.size())
189 forAll(d.distributions_, i)
200 d.distributions_[i].min_,
201 d.distributions_[i].max_,
202 d.distributions_[i].mu_,
203 d.distributions_[i].sigma_
220 const scalar
S = rndGen_.sample01<scalar>();
226 i < cumulativeStrengths_.size() - 1
227 && cumulativeStrengths_[i + 1] <
S;
232 (
S - cumulativeStrengths_[i])
233 /(cumulativeStrengths_[i + 1] - cumulativeStrengths_[i]);
235 return distributions_[i].sampleForZeroQ(
s);
241 return distributions_[0].min();
247 return distributions_[0].max();
265 mu[i] = distributions_[i].mu();
266 sigma[i] = distributions_[i].sigma();
277 return distributions_[0].plotX(
n);
#define forAll(list, i)
Loop across all elements in list.
Macros for easy insertion into run-time selection tables.
void size(const label)
Override size to be inconsistent with allocated storage.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
Base class for statistical distributions.
Multiple superimposed normal distributions.
virtual scalar min() const
Return the minimum value.
virtual ~multiNormal()
Destructor.
virtual void write(Ostream &os, const unitConversion &units) const
Write stream.
virtual scalar sampleForZeroQ() const
Sample the distribution for zero effective size exponent.
multiNormal(const unitConversion &units, const dictionary &dict, const label sampleQ, randomGenerator &&rndGen)
Construct from a dictionary.
virtual scalar max() const
Return the maximum value.
virtual tmp< scalarField > plotX(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,...
Base class for distributions that have a closed integral form for the cumulative density function (CD...
A class for managing temporary objects.
Unit conversion structure. Contains the associated dimensions and the multiplier with which to conver...
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(lagrangian::Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(lagrangian::Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(lagrangian::Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.name(), lagrangian::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)
tmp< fvMatrix< Type > > S(const Pair< tmp< volScalarField::Internal >> &, const VolField< Type > &)
void write(std::ostream &os, const bool binary, List< floatScalar > &fField)
Write floats ascii or binary.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
errorManip< error > abort(error &err)
scalar integerPow(const scalar x, const label e)
Compute the power of the number x to the integer e.
List< scalar > scalarList
A List of scalars.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
layerAndWeight min(const layerAndWeight &a, const layerAndWeight &b)
const HashTable< unitConversion > & units()
Get the table of unit conversions.
void writeEntry(Ostream &os, const HashTable< T, Key, Hash > &ht)
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
randomGenerator rndGen(653213)