www.mooseframework.org
UniformDistribution.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #include "UniformDistribution.h"
11 
12 registerMooseObject("StochasticToolsApp", UniformDistribution);
13 
15 
16 InputParameters
18 {
19  InputParameters params = Distribution::validParams();
20  params.addClassDescription("Continuous uniform distribution.");
21  params.addParam<Real>("lower_bound", 0.0, "Distribution lower bound");
22  params.addParam<Real>("upper_bound", 1.0, "Distribution upper bound");
23  return params;
24 }
25 
26 UniformDistribution::UniformDistribution(const InputParameters & parameters)
27  : Distribution(parameters),
28  _lower_bound(getParam<Real>("lower_bound")),
29  _upper_bound(getParam<Real>("upper_bound"))
30 {
32  mooseError("The lower bound is larger than the upper bound!");
33 }
34 
35 Real
36 UniformDistribution::pdf(const Real & x, const Real & lower_bound, const Real & upper_bound)
37 {
38  if (x < lower_bound || x > upper_bound)
39  return 0.0;
40  else
41  return 1.0 / (upper_bound - lower_bound);
42 }
43 
44 Real
45 UniformDistribution::cdf(const Real & x, const Real & lower_bound, const Real & upper_bound)
46 {
47  if (x < lower_bound)
48  return 0.0;
49  else if (x > upper_bound)
50  return 1.0;
51  else
52  return (x - lower_bound) / (upper_bound - lower_bound);
53 }
54 
55 Real
56 UniformDistribution::quantile(const Real & y, const Real & lower_bound, const Real & upper_bound)
57 {
58  if (y < 0 || y > 1)
59  ::mooseError("The cdf_value provided is out of range 0 to 1.");
60  else
61  return y * (upper_bound - lower_bound) + lower_bound;
62 }
63 
64 Real
65 UniformDistribution::pdf(const Real & x) const
66 {
67  TIME_SECTION(_perf_pdf);
68  return pdf(x, _lower_bound, _upper_bound);
69 }
70 
71 Real
72 UniformDistribution::cdf(const Real & x) const
73 {
74  TIME_SECTION(_perf_cdf);
75  return cdf(x, _lower_bound, _upper_bound);
76 }
77 
78 Real
79 UniformDistribution::quantile(const Real & y) const
80 {
81  TIME_SECTION(_perf_quantile);
83 }
UniformDistribution.h
UniformDistribution::quantile
static Real quantile(const Real &y, const Real &lower_bound, const Real &upper_bound)
Definition: UniformDistribution.C:56
UniformDistribution::UniformDistribution
UniformDistribution(const InputParameters &parameters)
Definition: UniformDistribution.C:26
validParams
InputParameters validParams()
UniformDistribution::cdf
static Real cdf(const Real &x, const Real &lower_bound, const Real &upper_bound)
Definition: UniformDistribution.C:45
registerMooseObject
registerMooseObject("StochasticToolsApp", UniformDistribution)
UniformDistribution::_lower_bound
const Real & _lower_bound
The lower bound for the uniform distribution.
Definition: UniformDistribution.h:38
UniformDistribution::_upper_bound
const Real & _upper_bound
The upper bound for the uniform distribution.
Definition: UniformDistribution.h:41
UniformDistribution::pdf
static Real pdf(const Real &x, const Real &lower_bound, const Real &upper_bound)
Definition: UniformDistribution.C:36
defineLegacyParams
defineLegacyParams(UniformDistribution)
UniformDistribution
A class used to generate uniform distribution.
Definition: UniformDistribution.h:21
UniformDistribution::validParams
static InputParameters validParams()
Definition: UniformDistribution.C:17