https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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{
20public:
23
24 virtual void initialize() override {}
25 virtual void execute() override;
26 virtual void finalize() override {}
27
28private:
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
47void to_json(nlohmann::json & json, const PolynomialChaos * const & pc);
48
55template <typename OutType>
56class PCStatisticsContext : public ReporterGeneralContext<std::pair<OutType, std::vector<OutType>>>
57{
58public:
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
68private:
73};
74
81template <typename OutType>
83 std::pair<std::vector<OutType>, std::vector<std::vector<OutType>>>>
84{
85public:
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
98protected:
99 virtual void store(nlohmann::json & json) const override;
100
101private:
104};
void to_json(nlohmann::json &json, const PolynomialChaos *const &pc)
const InputParameters & parameters() const
PCSobolContext is almost identical to SobolReporterContext with InType == Outype.
virtual std::string type() const override
virtual void store(nlohmann::json &json) const override
virtual void finalize() override
const PolynomialChaos & _pc
Polynomial chaos surrogate object.
PCStatisticsContext is almost identical to ReporterStatisticsContext with InType == Outype.
const PolynomialChaos & _pc
Polynomial chaos surrogate object.
const MooseEnumItem _stat
The stat to compute.
virtual void storeInfo(nlohmann::json &json) const override
virtual void finalize() override
static std::vector< Real > computeLocalSensitivity(const PolynomialChaos &pc, const std::vector< Real > &data)
Helper function for computing local sensitivity from a polynomial chaos model.
static InputParameters validParams()
virtual void execute() override
std::vector< Sampler * > _loc_sampler
Samplers for local sensitivity calculation.
std::vector< std::vector< std::vector< Real > > * > _loc_sampler_sense
Local sensitivity from sampled points.
const std::vector< std::vector< Real > > & _loc_point
Points for local sensitivity calculation.
virtual void initialize() override
std::vector< std::vector< std::vector< Real > > * > _loc_point_sense
Local sensitivity from specified points.
std::vector< const PolynomialChaos * > _pc
Polynomial chaos models.
virtual void finalize() override
Interface for objects that need to use samplers.