Line data Source code
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 "BayesianPosteriorTargeted.h" 11 : #include <cmath> 12 : 13 : registerMooseObject("StochasticToolsApp", BayesianPosteriorTargeted); 14 : 15 : InputParameters 16 8 : BayesianPosteriorTargeted::validParams() 17 : { 18 8 : InputParameters params = ParallelAcquisitionFunctionBase::validParams(); 19 8 : params.addClassDescription("Bayesian posterior targeted from El Gammal et al. 2023."); 20 8 : return params; 21 0 : } 22 : 23 4 : BayesianPosteriorTargeted::BayesianPosteriorTargeted(const InputParameters & parameters) 24 4 : : ParallelAcquisitionFunctionBase(parameters) 25 : { 26 4 : } 27 : 28 : void 29 16 : BayesianPosteriorTargeted::computeAcquisitionInternal( 30 : std::vector<Real> & acq, 31 : const std::vector<Real> & gp_mean, 32 : const std::vector<Real> & gp_std, 33 : const std::vector<std::vector<Real>> & test_inputs, 34 : const std::vector<std::vector<Real>> & /*train_inputs*/, 35 : const std::vector<Real> & /*generic*/) const 36 : { 37 : Real psi = std::pow(test_inputs[0].size(), -0.85); 38 1616 : for (unsigned int i = 0; i < test_inputs.size(); ++i) 39 : { 40 1600 : acq[i] = std::exp(2.0 * psi * gp_mean[i]) * (std::exp(gp_std[i]) - 1.0); 41 1600 : if (std::isinf(acq[i])) 42 0 : acq[i] = std::numeric_limits<Real>::max(); 43 : } 44 16 : }