https://mooseframework.inl.gov
PolynomialChaosReporter.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 "GeneralReporter.h"
14 
15 #include "PolynomialChaos.h"
16 #include "nlohmann/json.h"
17 
19 {
20 public:
23 
24  virtual void initialize() override {}
25  virtual void execute() override;
26  virtual void finalize() override {}
27 
28 private:
30  static std::vector<Real> computeLocalSensitivity(const PolynomialChaos & pc,
31  const std::vector<Real> & data);
32 
34  const std::vector<std::vector<Real>> & _loc_point;
36  std::vector<Sampler *> _loc_sampler;
37 
39  std::vector<const PolynomialChaos *> _pc;
40 
42  std::vector<std::vector<std::vector<Real>> *> _loc_point_sense;
44  std::vector<std::vector<std::vector<Real>> *> _loc_sampler_sense;
45 };
46 
47 void to_json(nlohmann::json & json, const PolynomialChaos * const & pc);
48 
55 template <typename OutType>
56 class PCStatisticsContext : public ReporterGeneralContext<std::pair<OutType, std::vector<OutType>>>
57 {
58 public:
60  const MooseObject & producer,
61  ReporterState<std::pair<OutType, std::vector<OutType>>> & state,
62  const PolynomialChaos & pc,
63  const MooseEnumItem & stat);
64 
65  virtual void finalize() override;
66  virtual void storeInfo(nlohmann::json & json) const override;
67 
68 private:
73 };
74 
81 template <typename OutType>
83  std::pair<std::vector<OutType>, std::vector<std::vector<OutType>>>>
84 {
85 public:
87  const libMesh::ParallelObject & other,
88  const MooseObject & producer,
89  ReporterState<std::pair<std::vector<OutType>, std::vector<std::vector<OutType>>>> & state,
90  const PolynomialChaos & pc);
91 
92  virtual void finalize() override;
93  virtual std::string type() const override
94  {
95  return "SobolIndices<" + MooseUtils::prettyCppType<OutType>() + ">";
96  }
97 
98 protected:
99  virtual void store(nlohmann::json & json) const override;
100 
101 private:
104 };
PCSobolContext is almost identical to SobolReporterContext with InType == Outype. ...
PCSobolContext(const libMesh::ParallelObject &other, const MooseObject &producer, ReporterState< std::pair< std::vector< OutType >, std::vector< std::vector< OutType >>>> &state, const PolynomialChaos &pc)
virtual void store(nlohmann::json &json) const override
const ReporterState< std::pair< OutType, std::vector< OutType > > > & state() const
virtual void finalize() override
virtual void execute() override
static InputParameters validParams()
PCStatisticsContext(const libMesh::ParallelObject &other, const MooseObject &producer, ReporterState< std::pair< OutType, std::vector< OutType >>> &state, const PolynomialChaos &pc, const MooseEnumItem &stat)
std::vector< std::vector< std::vector< Real > > * > _loc_sampler_sense
Local sensitivity from sampled points.
void to_json(nlohmann::json &json, const PolynomialChaos *const &pc)
std::vector< std::vector< std::vector< Real > > * > _loc_point_sense
Local sensitivity from specified points.
PCStatisticsContext is almost identical to ReporterStatisticsContext with InType == Outype...
const std::vector< std::vector< Real > > & _loc_point
Points for local sensitivity calculation.
const PolynomialChaos & _pc
Polynomial chaos surrogate object.
virtual void initialize() override
virtual void finalize() override
virtual void finalize() override
std::vector< const PolynomialChaos * > _pc
Polynomial chaos models.
static std::vector< Real > computeLocalSensitivity(const PolynomialChaos &pc, const std::vector< Real > &data)
Helper function for computing local sensitivity from a polynomial chaos model.
const PolynomialChaos & _pc
Polynomial chaos surrogate object.
PolynomialChaosReporter(const InputParameters &parameters)
std::vector< Sampler * > _loc_sampler
Samplers for local sensitivity calculation.
virtual std::string type() const override
const MooseEnumItem _stat
The stat to compute.
Interface for objects that need to use samplers.
const InputParameters & parameters() const
virtual void storeInfo(nlohmann::json &json) const override