https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Gamma Class Reference

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

#include <Gamma.h>

Inheritance diagram for Gamma:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 Gamma (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
 
virtual Real median () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
PerfGraphperfGraph ()
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static Real pdf (const Real &x, const Real &alpha, const Real &beta)
 
static Real cdf (const Real &x, const Real &alpha, const Real &beta)
 
static Real quantile (const Real &p, const Real &alpha, const Real &beta)
 
static Real incompleteGamma (const Real &a, const Real &x)
 Lower incomplete gamma function. More...
 
static Real incompleteGammaInv (const Real &a, const Real &p)
 Inverse of lower incomplete gamma function. More...
 

Public Attributes

const ConsoleStream _console
 

Protected Member Functions

PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 

Protected Attributes

const Real_alpha
 Shape. More...
 
const Real_theta
 Scaling. More...
 
const bool & _enabled
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const Parallel::Communicator & _communicator
 

Detailed Description

A class used to generate a Gamma distribution.

Definition at line 17 of file Gamma.h.

Constructor & Destructor Documentation

◆ Gamma()

Gamma::Gamma ( const InputParameters parameters)

Definition at line 27 of file Gamma.C.

28  : Distribution(parameters), _alpha(getParam<Real>("shape")), _theta(getParam<Real>("scale"))
29 {
30 }
const Real & _alpha
Shape.
Definition: Gamma.h:47
Distribution(const InputParameters &parameters)
const Real & _theta
Scaling.
Definition: Gamma.h:49
const InputParameters & parameters() const

Member Function Documentation

◆ cdf() [1/2]

Real Gamma::cdf ( const Real x) const
overridevirtual

Implements Distribution.

Definition at line 64 of file Gamma.C.

65 {
66  return cdf(x, _alpha, 1.0 / _theta);
67 }
virtual Real cdf(const Real &x) const override
Definition: Gamma.C:64
const Real & _alpha
Shape.
Definition: Gamma.h:47
const std::vector< double > x
const Real & _theta
Scaling.
Definition: Gamma.h:49

◆ cdf() [2/2]

Real Gamma::cdf ( const Real x,
const Real alpha,
const Real beta 
)
static

Definition at line 43 of file Gamma.C.

44 {
45  if (x <= 0.0)
46  return 0.0;
47  else
48  return incompleteGamma(alpha, beta * x);
49 }
const std::vector< double > x
static const std::string alpha
Definition: NS.h:134
static Real incompleteGamma(const Real &a, const Real &x)
Lower incomplete gamma function.
Definition: Gamma.C:76

◆ incompleteGamma()

Real Gamma::incompleteGamma ( const Real a,
const Real x 
)
static

Lower incomplete gamma function.

Non-boost implementation from: Temme, N. (1994). A Set of Algorithms for the Incomplete Gamma Functions. Probability in the Engineering and Informational Sciences, 8(2), 291-307.

Definition at line 76 of file Gamma.C.

Referenced by cdf(), and incompleteGammaInv().

77 {
78  const Real tol = 1e-14;
79  const unsigned int max_iter = 1e6;
80  const Real coef = std::pow(x, a) * std::exp(-x) / std::tgamma(a + 1.0);
81  Real cn = 1.0;
82  Real an = a;
83  Real val = 1.0;
84  for (unsigned int i = 0; i < max_iter; ++i)
85  {
86  an += 1.0;
87  cn *= x / an;
88  val += cn;
89  if (std::abs(cn / val) < tol)
90  return coef * val;
91  }
92 
93  mooseAssert(false, "Could not compute incomplete gamma function.");
94  return coef * val;
95 }
const double tol
const std::vector< double > x
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MooseUnits pow(const MooseUnits &, int)

◆ incompleteGammaInv()

Real Gamma::incompleteGammaInv ( const Real a,
const Real p 
)
static

Inverse of lower incomplete gamma function.

Non-boost implementation uses Newton-Raphson to find root of incompleteGamma(a, x) - p

Definition at line 98 of file Gamma.C.

Referenced by quantile().

99 {
100  Real x = a > 1.0 ? a : std::pow(p * std::tgamma(a + 1.0), 1.0 / a);
101  const Real scale = std::tgamma(a);
102  const Real tol = 1e-14;
103  const unsigned int max_iter = 1e6;
104  Real f;
105  Real df;
106  for (unsigned int i = 0; i < max_iter; ++i)
107  {
108  f = incompleteGamma(a, x) - p;
109  if (std::abs(f) < tol)
110  return x;
111  df = std::pow(x, a - 1.0) * std::exp(-x) / scale;
112  x -= f / df;
113  }
114 
115  mooseAssert(false, "Could not find inverse of incomplete gamma function.");
116  return x;
117 }
void scale(MeshBase &mesh, const Real xs, const Real ys=0., const Real zs=0.)
const double tol
const std::vector< double > x
Real f(Real x)
Test function for Brents method.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static Real incompleteGamma(const Real &a, const Real &x)
Lower incomplete gamma function.
Definition: Gamma.C:76
MooseUnits pow(const MooseUnits &, int)

◆ pdf() [1/2]

Real Gamma::pdf ( const Real x) const
overridevirtual

Implements Distribution.

Definition at line 58 of file Gamma.C.

59 {
60  return pdf(x, _alpha, 1.0 / _theta);
61 }
const Real & _alpha
Shape.
Definition: Gamma.h:47
virtual Real pdf(const Real &x) const override
Definition: Gamma.C:58
const std::vector< double > x
const Real & _theta
Scaling.
Definition: Gamma.h:49

◆ pdf() [2/2]

Real Gamma::pdf ( const Real x,
const Real alpha,
const Real beta 
)
static

Definition at line 33 of file Gamma.C.

34 {
35  if (x <= 0.0)
36  return 0.0;
37  else
38  return std::pow(beta, alpha) * std::pow(x, alpha - 1.0) * std::exp(-beta * x) /
39  std::tgamma(alpha);
40 }
const std::vector< double > x
static const std::string alpha
Definition: NS.h:134
MooseUnits pow(const MooseUnits &, int)

◆ quantile() [1/2]

Real Gamma::quantile ( const Real p) const
overridevirtual

Implements Distribution.

Definition at line 70 of file Gamma.C.

71 {
72  return quantile(p, _alpha, 1.0 / _theta);
73 }
const Real & _alpha
Shape.
Definition: Gamma.h:47
const Real & _theta
Scaling.
Definition: Gamma.h:49
virtual Real quantile(const Real &p) const override
Definition: Gamma.C:70

◆ quantile() [2/2]

Real Gamma::quantile ( const Real p,
const Real alpha,
const Real beta 
)
static

Definition at line 52 of file Gamma.C.

53 {
54  return incompleteGammaInv(alpha, p) / beta;
55 }
static const std::string alpha
Definition: NS.h:134
static Real incompleteGammaInv(const Real &a, const Real &p)
Inverse of lower incomplete gamma function.
Definition: Gamma.C:98

◆ validParams()

InputParameters Gamma::validParams ( )
static

Definition at line 17 of file Gamma.C.

18 {
20  params.addClassDescription("Gamma distribution");
21  params.addRequiredRangeCheckedParam<Real>("shape", "shape > 0", "Shape parameter (k or alpha).");
22  params.addRangeCheckedParam<Real>(
23  "scale", 1.0, "scale > 0", "Scale parameter (theta or 1/beta).");
24  return params;
25 }
void addRequiredRangeCheckedParam(const std::string &name, const std::string &parsed_function, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static InputParameters validParams()
void addClassDescription(const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)

Member Data Documentation

◆ _alpha

const Real& Gamma::_alpha
protected

Shape.

Definition at line 47 of file Gamma.h.

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

◆ _theta

const Real& Gamma::_theta
protected

Scaling.

Definition at line 49 of file Gamma.h.

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


The documentation for this class was generated from the following files: