https://mooseframework.inl.gov
TruncatedGaussian.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
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 "TruncatedGaussian.h"
11 #include "TruncatedNormal.h"
12 
13 registerMooseObject("StochasticToolsApp", TruncatedGaussian);
14 
17 {
19  params.addClassDescription(
20  "TruncatedGaussian likelihood function evaluating the model goodness against experiments.");
21  params.addRequiredParam<Real>("lower_bound", "Lower bound for the quantity of interest.");
22  params.addRequiredParam<Real>("upper_bound", "Upper bound for the quantity of interest.");
23  return params;
24 }
25 
27  : Gaussian(parameters),
28  _lower_bound(getParam<Real>("lower_bound")),
29  _upper_bound(getParam<Real>("upper_bound"))
30 {
31  if (!(_lower_bound < _upper_bound))
32  mooseError("The specified lower bound should be less than the upper bound.");
33 }
34 
35 Real
36 TruncatedGaussian::function(const std::vector<Real> & exp,
37  const std::vector<Real> & model,
38  const Real & noise,
39  const Real & lower_bound,
40  const Real & upper_bound,
41  const bool & log_likelihood)
42 {
43  Real result = 0.0;
44  for (unsigned i = 0; i < exp.size(); ++i)
45  result += std::log(TruncatedNormal::pdf(exp[i], model[i], noise, lower_bound, upper_bound));
46  if (!log_likelihood)
47  result = std::exp(result);
48  return result;
49 }
50 
51 Real
52 TruncatedGaussian::function(const std::vector<Real> & x) const
53 {
55 }
const Real _lower_bound
Lower bound.
auto exp(const T &)
virtual Real function(const std::vector< Real > &x) const override
Return the probability density or mass function at vector x.
const Real & _noise
Noise value.
Definition: Gaussian.h:44
A class used to generate a Gaussian likelihood of observing model predictions.
Definition: Gaussian.h:18
void addRequiredParam(const std::string &name, const std::string &doc_string)
registerMooseObject("StochasticToolsApp", TruncatedGaussian)
const Real _upper_bound
Upper bound.
const std::vector< double > x
virtual Real pdf(const Real &x) const override
static InputParameters validParams()
Definition: Gaussian.C:17
const bool _log_likelihood
return log-likelihood or likelihood
Definition: Gaussian.h:41
std::vector< Real > _exp_values
Experimental data values.
Definition: Gaussian.h:47
const PertinentGeochemicalSystem model(database, {"H2O", "H+", "HCO3-", "O2(aq)", "Ca++", ">(s)FeOH", "radius_neg1", "radius_neg1.5"}, {"Calcite"}, {}, {"Calcite_asdf"}, {"CH4(aq)"}, {">(s)FeOCa+"}, "O2(aq)", "e-")
TruncatedGaussian(const InputParameters &parameters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseError(Args &&... args) const
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()
A class used to generate a truncated Gaussian likelihood of observing model predictions.