https://mooseframework.inl.gov
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 {
27 public:
30 
31  virtual void initialize() override final;
32 
33  virtual void execute() override final {}
34  virtual void finalize() override final {}
35 
36 private:
40  template <typename DataType>
41  void declareValueHelper(const ReporterName & r_name);
42 
45 
48 
51 };
52 
57 template <typename DataType>
58 class DirectPerturbationReporterContext : public ReporterGeneralContext<std::vector<DataType>>
59 {
60 public:
70  const MooseObject & producer,
71  ReporterState<std::vector<DataType>> & state,
72  DirectPerturbationSampler & sampler,
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 
82 private:
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 };
A class used to generate samples for a direct perturbation analysis.
const ReporterState< std::vector< DataType > > & state() const
Reporter class for computing and displaying local sensitivity coefficients around a nominal value usi...
static InputParameters validParams()
void declareValueHelper(const ReporterName &r_name)
Helper for adding direct perturbation-based reporter values.
const std::vector< DataType > & _data
Data used for the statistic calculation.
const bool _relative_sensitivity
If relative sensitivity should be computed.
DirectPerturbationReporterContext(const libMesh::ParallelObject &other, const MooseObject &producer, ReporterState< std::vector< DataType >> &state, DirectPerturbationSampler &sampler, const std::vector< DataType > &data, const bool relative_sensitivity)
Constructor.
DataType initializeDataType(const DataType &example_output) const
Initialize the sensitivity container, split into a separate function due to the different constructor...
Reporter context for computing direct perturbation-based sensitivity coefficients.
virtual void execute() override final
DirectPerturbationSampler & _sampler
Reference to the direct perturbation sampler.
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...
virtual void finalize() override final
const InputParameters & parameters() const
const bool _relative_sensitivity
If relative sensitivities should be computed.
virtual std::string type() const override
DirectPerturbationReporter(const InputParameters &parameters)
DirectPerturbationSampler & _sampler
Direct perturbation sampler.
virtual void initialize() override final
bool _initialized
Whether or not initialize() has been called for reporter value declaration.