www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
NormalDistribution Class Reference

A class used to generate a normal distribution. More...

#include <NormalDistribution.h>

Inheritance diagram for NormalDistribution:
[legend]

Public Member Functions

 NormalDistribution (const InputParameters &parameters)
 
virtual Real pdf (const Real &x) const override
 
virtual Real cdf (const Real &x) const override
 
virtual Real quantile (const Real &p) const override
 

Static Public Member Functions

static InputParameters validParams ()
 
static Real pdf (const Real &x, const Real &mean, const Real &std_dev)
 
static Real cdf (const Real &x, const Real &mean, const Real &std_dev)
 
static Real quantile (const Real &p, const Real &mean, const Real &std_dev)
 

Protected Attributes

const Real & _mean
 The mean (or expectation) of the distribution (mu) More...
 
const Real & _standard_deviation
 The standard deviation of the distribution (sigma) More...
 

Static Protected Attributes

static const std::array< Real, 6 > _a
 
static const std::array< Real, 6 > _b
 

Detailed Description

A class used to generate a normal distribution.

Definition at line 22 of file NormalDistribution.h.

Constructor & Destructor Documentation

◆ NormalDistribution()

NormalDistribution::NormalDistribution ( const InputParameters &  parameters)

Definition at line 35 of file NormalDistribution.C.

36  : Distribution(parameters),
37  _mean(getParam<Real>("mean")),
38  _standard_deviation(getParam<Real>("standard_deviation"))
39 {
40 }

Member Function Documentation

◆ cdf() [1/2]

Real NormalDistribution::cdf ( const Real &  x) const
overridevirtual

◆ cdf() [2/2]

Real NormalDistribution::cdf ( const Real &  x,
const Real &  mean,
const Real &  std_dev 
)
static

Definition at line 50 of file NormalDistribution.C.

51 {
52  return 0.5 * (1.0 + std::erf((x - mean) / (std_dev * std::sqrt(2.0))));
53 }

◆ pdf() [1/2]

Real NormalDistribution::pdf ( const Real &  x) const
overridevirtual

Reimplemented in JohnsonSBDistribution, and TruncatedNormalDistribution.

Definition at line 69 of file NormalDistribution.C.

70 {
71  TIME_SECTION(_perf_pdf);
72  return pdf(x, _mean, _standard_deviation);
73 }

Referenced by TestDistributionDirectPostprocessor::getValue(), and TruncatedNormalDistribution::pdf().

◆ pdf() [2/2]

Real NormalDistribution::pdf ( const Real &  x,
const Real &  mean,
const Real &  std_dev 
)
static

Definition at line 43 of file NormalDistribution.C.

44 {
45  return 1.0 / (std_dev * std::sqrt(2.0 * M_PI)) *
46  std::exp(-0.5 * Utility::pow<2>((x - mean) / std_dev));
47 }

◆ quantile() [1/2]

Real NormalDistribution::quantile ( const Real &  p) const
overridevirtual

Reimplemented in JohnsonSBDistribution, and TruncatedNormalDistribution.

Definition at line 83 of file NormalDistribution.C.

84 {
85  TIME_SECTION(_perf_quantile);
87 }

Referenced by TestDistributionDirectPostprocessor::getValue(), JohnsonSBDistribution::quantile(), and TruncatedNormalDistribution::quantile().

◆ quantile() [2/2]

Real NormalDistribution::quantile ( const Real &  p,
const Real &  mean,
const Real &  std_dev 
)
static

Definition at line 56 of file NormalDistribution.C.

57 {
58  Real x = (p < 0.5 ? p : 1.0 - p);
59  Real y = std::sqrt(-2.0 * std::log(x));
60  Real sgn = (p - 0.5 < 0.0 ? -1.0 : 1.0);
61  Real Zp = sgn * (y + (_a[0] + _a[1] * y + _a[2] * Utility::pow<2>(y) +
62  _a[3] * Utility::pow<3>(y) + _a[4] * Utility::pow<4>(y)) /
63  (_b[0] + _b[1] * y + _b[2] * Utility::pow<2>(y) +
64  _b[3] * Utility::pow<3>(y) + _b[4] * Utility::pow<4>(y)));
65  return Zp * std_dev + mean;
66 }

◆ validParams()

InputParameters NormalDistribution::validParams ( )
static

Definition at line 25 of file NormalDistribution.C.

26 {
27  InputParameters params = Distribution::validParams();
28  params.addClassDescription("Normal distribution");
29  params.addRequiredParam<Real>("mean", "Mean (or expectation) of the distribution.");
30  params.addRequiredRangeCheckedParam<Real>(
31  "standard_deviation", "standard_deviation > 0", "Standard deviation of the distribution ");
32  return params;
33 }

Referenced by JohnsonSBDistribution::validParams(), and TruncatedNormalDistribution::validParams().

Member Data Documentation

◆ _a

const std::array< Real, 6 > NormalDistribution::_a
staticprotected
Initial value:
= {
{-0.322232431088, -1.0, -0.342242088547, -0.0204231210245, -0.0000453642210148}}

Coefficients for the rational function used to approximate the quantile

Definition at line 40 of file NormalDistribution.h.

Referenced by quantile().

◆ _b

const std::array< Real, 6 > NormalDistribution::_b
staticprotected
Initial value:
= {
{0.099348462606, 0.588581570495, 0.531103462366, 0.10353775285, 0.0038560700634}}

Definition at line 41 of file NormalDistribution.h.

Referenced by quantile().

◆ _mean

const Real& NormalDistribution::_mean
protected

The mean (or expectation) of the distribution (mu)

Definition at line 45 of file NormalDistribution.h.

Referenced by cdf(), TruncatedNormalDistribution::cdf(), TruncatedNormalDistribution::pdf(), pdf(), TruncatedNormalDistribution::quantile(), and quantile().

◆ _standard_deviation

const Real& NormalDistribution::_standard_deviation
protected

The standard deviation of the distribution (sigma)

Definition at line 48 of file NormalDistribution.h.

Referenced by cdf(), TruncatedNormalDistribution::cdf(), TruncatedNormalDistribution::pdf(), pdf(), TruncatedNormalDistribution::quantile(), and quantile().


The documentation for this class was generated from the following files:
NormalDistribution::cdf
virtual Real cdf(const Real &x) const override
Definition: NormalDistribution.C:76
NormalDistribution::_a
static const std::array< Real, 6 > _a
Definition: NormalDistribution.h:40
NormalDistribution::_standard_deviation
const Real & _standard_deviation
The standard deviation of the distribution (sigma)
Definition: NormalDistribution.h:48
validParams
InputParameters validParams()
NormalDistribution::quantile
virtual Real quantile(const Real &p) const override
Definition: NormalDistribution.C:83
NormalDistribution::_b
static const std::array< Real, 6 > _b
Definition: NormalDistribution.h:41
NormalDistribution::_mean
const Real & _mean
The mean (or expectation) of the distribution (mu)
Definition: NormalDistribution.h:45
NormalDistribution::pdf
virtual Real pdf(const Real &x) const override
Definition: NormalDistribution.C:69