https://mooseframework.inl.gov
PolynomialChaosTrainer.h
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 #pragma once
11 
12 #include "SurrogateTrainer.h"
13 #include "PolynomialQuadrature.h"
14 #include "QuadratureSampler.h"
16 #include "Calculators.h"
17 
18 #include "Distribution.h"
19 
21 
23 {
24 public:
27  virtual void preTrain() override;
28  virtual void train() override;
29  virtual void postTrain() override;
30 
31 private:
33  const std::vector<Real> & _predictor_row;
34 
36  const unsigned int & _order;
37 
39  unsigned int & _ndim;
40 
42  std::vector<std::vector<unsigned int>> & _tuple;
43 
45  std::size_t & _ncoeff;
46 
48  std::vector<Real> & _coeff;
49 
51  std::vector<std::unique_ptr<const PolynomialQuadrature::Polynomial>> & _poly;
52 
54  unsigned int _rtype;
55 
58 
61 
63  std::vector<std::unique_ptr<RealCalculator>> _calculators;
65 
69  DenseVector<Real> _rhs;
71 };
A class used to produce samples based on quadrature for Polynomial Chaos.
unsigned int _rtype
The method in which to perform the regression (0=integration, 1=OLS)
std::size_t & _ncoeff
Total number of coefficient (defined by size of _tuple)
const Real & _ridge_penalty
The penalty parameter for Ridge regularization.
std::vector< std::vector< unsigned int > > & _tuple
A _ndim-by-_ncoeff matrix containing the appropriate one-dimensional polynomial order.
virtual void train() override
const unsigned int & _order
Maximum polynomial order. The sum of 1D polynomial orders does not go above this value.
static InputParameters validParams()
std::vector< std::unique_ptr< const PolynomialQuadrature::Polynomial > > & _poly
The distributions used for sampling.
QuadratureSampler * _quad_sampler
QuadratureSampler pointer, necessary for applying quadrature weights.
const std::vector< Real > & _predictor_row
Predictor values.
StochasticTools::Calculator< std::vector< Real >, Real > RealCalculator
virtual void postTrain() override
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
This is the main trainer base class.
std::vector< Real > & _coeff
These are the coefficients we are after in the PC expansion.
DenseMatrix< Real > _matrix
const InputParameters & parameters() const
unsigned int & _ndim
Total number of parameters/dimensions.
std::vector< std::unique_ptr< RealCalculator > > _calculators
Calculators used for standardization in linear regression.
PolynomialChaosTrainer(const InputParameters &parameters)
virtual void preTrain() override