https://mooseframework.inl.gov
Loading...
Searching...
No Matches
DirectPerturbationReporter.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"
13#include "VectorCalculators.h"
14
15#include "nlohmann/json.h"
16
17// Forward declaration
19
26{
27public:
30
31 virtual void initialize() override final;
32
33 virtual void execute() override final {}
34 virtual void finalize() override final {}
35
36private:
40 template <typename DataType>
41 void declareValueHelper(const ReporterName & r_name);
42
45
48
51};
52
57template <typename DataType>
58class DirectPerturbationReporterContext : public ReporterGeneralContext<std::vector<DataType>>
59{
60public:
70 const MooseObject & producer,
71 ReporterState<std::vector<DataType>> & state,
73 const std::vector<DataType> & data,
74 const bool relative_sensitivity);
75
76 virtual void finalize() override;
77 virtual std::string type() const override
78 {
79 return "DirectPerturbationSensitivity<" + MooseUtils::prettyCppType<DataType>() + ">";
80 }
81
82private:
89 void addSensitivityContribution(DataType & add_to,
90 const DataType & to_add,
91 const DataType & reference_value,
92 const Real interval) const;
93
97 DataType initializeDataType(const DataType & example_output) const;
98
101
103 const std::vector<DataType> & _data;
104
107};
Reporter context for computing direct perturbation-based sensitivity coefficients.
DirectPerturbationSampler & _sampler
Reference to the direct perturbation sampler.
virtual std::string type() const override
const bool _relative_sensitivity
If relative sensitivities should be computed.
void addSensitivityContribution(DataType &add_to, const DataType &to_add, const DataType &reference_value, const Real interval) const
Compute direct perturbation sensitivity, split into a separate function due to the different operator...
DataType initializeDataType(const DataType &example_output) const
Initialize the sensitivity container, split into a separate function due to the different constructor...
const std::vector< DataType > & _data
Data used for the statistic calculation.
Reporter class for computing and displaying local sensitivity coefficients around a nominal value usi...
DirectPerturbationSampler & _sampler
Direct perturbation sampler.
const bool _relative_sensitivity
If relative sensitivity should be computed.
static InputParameters validParams()
void declareValueHelper(const ReporterName &r_name)
Helper for adding direct perturbation-based reporter values.
bool _initialized
Whether or not initialize() has been called for reporter value declaration.
virtual void initialize() override final
virtual void finalize() override final
virtual void execute() override final
A class used to generate samples for a direct perturbation analysis.
const InputParameters & parameters() const
const ReporterState< T > & state() const