Line data Source code
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 "ExtremeValue.h" 11 : 12 : registerMooseObject("StochasticToolsApp", ExtremeValue); 13 : 14 : InputParameters 15 40 : ExtremeValue::validParams() 16 : { 17 40 : InputParameters params = Gaussian::validParams(); 18 40 : params.addClassDescription("Generalized extreme value likelihood function evaluating the model " 19 : "goodness against experiments."); 20 40 : return params; 21 0 : } 22 : 23 20 : ExtremeValue::ExtremeValue(const InputParameters & parameters) : Gaussian(parameters) {} 24 : 25 : Real 26 20 : ExtremeValue::function(const std::vector<Real> & exp, 27 : const std::vector<Real> & model, 28 : const Real & noise, 29 : const bool & log_likelihood) 30 : { 31 : Real result = 0.0; 32 80 : for (unsigned i = 0; i < exp.size(); ++i) 33 : { 34 60 : Real x = (exp[i] - model[i]) / noise; 35 60 : Real pdf = std::exp(-(x + std::exp(-x))) / noise; 36 60 : result += std::log(pdf); 37 : } 38 20 : if (!log_likelihood) 39 0 : result = std::exp(result); 40 20 : return result; 41 : } 42 : 43 : Real 44 20 : ExtremeValue::function(const std::vector<Real> & x) const 45 : { 46 20 : return function(_exp_values, x, _noise, _log_likelihood); 47 : }