https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
ReporterInterface Class Reference

Interface to allow object to consume Reporter values. More...

#include <ReporterInterface.h>

Inheritance diagram for ReporterInterface:
[legend]

Public Member Functions

 ReporterInterface (const MooseObject *moose_object)
 
 ReporterInterface (const ReporterInterface &object, const Moose::Kokkos::FunctorCopy &key)
 Special constructor used for Kokkos functor copy during parallel dispatch.
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

const ReporterContextBasegetReporterContextBaseByName (const ReporterName &reporter_name) const
 Get the reporter context to allow non-typed operations with the data.
 
const ReporterNamegetReporterName (const std::string &param_name) const
 
virtual void addReporterDependencyHelper (const ReporterName &)
 A method that can be overridden to update the UO dependencies.
 
template<typename T >
const T & getReporterValue (const std::string &param_name, const std::size_t time_index=0)
 doco-normal-methods-begin Returns read-only reference to a Reporter value that is provided by an input parameter.
 
template<typename T >
const T & getReporterValue (const std::string &param_name, ReporterMode mode, const std::size_t time_index=0)
 
template<typename T >
const T & getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0)
 Returns read-only reference to a Reporter value that is provided by name directly.
 
template<typename T >
const T & getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0)
 
bool hasReporterValue (const std::string &param_name) const
 Return True if the Reporter value exists.
 
bool hasReporterValueByName (const ReporterName &reporter_name) const
 
template<typename T >
bool hasReporterValue (const std::string &param_name) const
 
template<typename T >
bool hasReporterValueByName (const ReporterName &reporter_name) const
 

Private Member Functions

bool reportersAdded () const
 
template<typename T >
void possiblyCheckHasReporter (const ReporterName &reporter_name, const std::string &param_name="") const
 Helpers for "possibly" checking if a Reporter value exists.
 

Private Attributes

const InputParameters_ri_params
 Parameters for the MooseObject inherting from this interface.
 
FEProblemBase_ri_fe_problem_base
 Provides access to FEProblemBase::getReporterData.
 
const ReporterData_ri_reporter_data
 The ReporterData.
 
const MooseObject_ri_moose_object
 The MooseObject needing this interface.
 

Detailed Description

Interface to allow object to consume Reporter values.

Definition at line 22 of file ReporterInterface.h.

Constructor & Destructor Documentation

◆ ReporterInterface() [1/2]

ReporterInterface::ReporterInterface ( const MooseObject moose_object)

Definition at line 20 of file ReporterInterface.C.

21 : _ri_params(moose_object->parameters()),
24 _ri_moose_object(*moose_object)
25{
26}
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
const ReporterData & getReporterData() const
Provides const access the ReporterData object.
T getCheckedPointerParam(const std::string &name, const std::string &error_string="") const
Verifies that the requested parameter exists and is not NULL and returns it to the caller.
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
const InputParameters & _ri_params
Parameters for the MooseObject inherting from this interface.
const MooseObject & _ri_moose_object
The MooseObject needing this interface.
const ReporterData & _ri_reporter_data
The ReporterData.
FEProblemBase & _ri_fe_problem_base
Provides access to FEProblemBase::getReporterData.

◆ ReporterInterface() [2/2]

ReporterInterface::ReporterInterface ( const ReporterInterface object,
const Moose::Kokkos::FunctorCopy key 
)

Special constructor used for Kokkos functor copy during parallel dispatch.

Definition at line 29 of file ReporterInterface.C.

Member Function Documentation

◆ addReporterDependencyHelper()

virtual void ReporterInterface::addReporterDependencyHelper ( const ReporterName )
inlineprotectedvirtual

A method that can be overridden to update the UO dependencies.

This is needed because the get methods for this interface cannot be virtual because of the template parameter. See GeneralUserObject for how it is utilized.

Reimplemented in UserObjectBase.

Definition at line 112 of file ReporterInterface.h.

112{}

Referenced by getReporterValueByName().

◆ getReporterContextBaseByName()

const ReporterContextBase & ReporterInterface::getReporterContextBaseByName ( const ReporterName reporter_name) const
protected

Get the reporter context to allow non-typed operations with the data.

Parameters
reporter_nameA ReporterName object that for the desired Reporter context.
Returns
ReporterContextBase of the reporter value

Definition at line 60 of file ReporterInterface.C.

61{
62 if (!reportersAdded())
64 "Cannot call getReporterContextBaseByName() until all Reporters have been constructed.");
65
66 return _ri_reporter_data.getReporterContextBase(reporter_name);
67}
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition MooseBase.h:271
const ReporterContextBase & getReporterContextBase(const ReporterName &reporter_name) const
bool reportersAdded() const

◆ getReporterName()

const ReporterName & ReporterInterface::getReporterName ( const std::string &  param_name) const
protected
Returns
The ReporterName associated with the parametre param_name.

Performs error checking to mak sure that the parameter is valid.

Definition at line 70 of file ReporterInterface.C.

71{
72 if (!_ri_params.isParamValid(param_name))
74 "When getting a Reporter, failed to get a parameter with the name \"",
75 param_name,
76 "\".",
77 "\n\nKnown parameters:\n",
79
80 if (_ri_params.isType<ReporterName>(param_name))
81 return _ri_params.get<ReporterName>(param_name);
82
83 _ri_moose_object.mooseError("Supplied parameter with name \"",
84 param_name,
85 "\" of type \"",
86 _ri_params.type(param_name),
87 "\" is not an expected type for getting a Reporter.\n\n",
88 "The expected type is \"ReporterName\".");
89}
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
std::string type(const std::string &name) const
Prints the type of the requested parameter by name.
bool isType(const std::string &name) const
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...
The Reporter system is comprised of objects that can contain any number of data values.

Referenced by getReporterValue(), and hasReporterValue().

◆ getReporterValue() [1/2]

template<typename T >
const T & ReporterInterface::getReporterValue ( const std::string &  param_name,
const std::size_t  time_index = 0 
)
protected

doco-normal-methods-begin Returns read-only reference to a Reporter value that is provided by an input parameter.

Template Parameters
TThe C++ type of the Reporter value being consumed
Parameters
param_nameThe name of the parameter that gives the name of the Reporter, which must be a ReporterName parameter (i.e., getParam<ReporterName>(param_name)).
modeThe mode that the object will consume the Reporter value @pararm time_index (optional) If zero is provided the current value is returned. Use a positive index to return previous values (1 = older, 2 = older, etc.). The maximum number of old values is dictated by the ReporterData object.

Definition at line 148 of file ReporterInterface.h.

149{
150 return getReporterValue<T>(param_name, REPORTER_MODE_UNSET, time_index);
151}
const ReporterMode REPORTER_MODE_UNSET

◆ getReporterValue() [2/2]

template<typename T >
const T & ReporterInterface::getReporterValue ( const std::string &  param_name,
ReporterMode  mode,
const std::size_t  time_index = 0 
)
protected

Definition at line 155 of file ReporterInterface.h.

158{
159 const auto & reporter_name = getReporterName(param_name);
160
161 possiblyCheckHasReporter<T>(reporter_name, param_name);
162
163 return getReporterValueByName<T>(reporter_name, mode, time_index);
164}
const ReporterName & getReporterName(const std::string &param_name) const

◆ getReporterValueByName() [1/2]

template<typename T >
const T & ReporterInterface::getReporterValueByName ( const ReporterName reporter_name,
const std::size_t  time_index = 0 
)
protected

Returns read-only reference to a Reporter value that is provided by name directly.

Template Parameters
TThe C++ type of the Reporter value being consumed
Parameters
reporter_nameA ReporterName object that for the desired Reporter value.
modeThe mode that the object will consume the Reporter value @pararm time_index (optional) If zero is provided the current value is returned. Use a positive index to return previous values (1 = older, 2 = older, etc.). The maximum number of old values is dictated by the ReporterData object.

Definition at line 168 of file ReporterInterface.h.

170{
171 return getReporterValueByName<T>(reporter_name, REPORTER_MODE_UNSET, time_index);
172}

Referenced by ParsedVectorReporter::ParsedVectorReporter().

◆ getReporterValueByName() [2/2]

template<typename T >
const T & ReporterInterface::getReporterValueByName ( const ReporterName reporter_name,
ReporterMode  mode,
const std::size_t  time_index = 0 
)
protected

Definition at line 176 of file ReporterInterface.h.

179{
180 possiblyCheckHasReporter<T>(reporter_name);
181
182 addReporterDependencyHelper(reporter_name);
183
184 return _ri_reporter_data.getReporterValue<T>(reporter_name, _ri_moose_object, mode, time_index);
185}
const T & getReporterValue(const ReporterName &reporter_name, const MooseObject &consumer, const ReporterMode &mode, const std::size_t time_index=0) const
Method for returning read only references to Reporter values.
virtual void addReporterDependencyHelper(const ReporterName &)
A method that can be overridden to update the UO dependencies.

◆ hasReporterValue() [1/2]

bool ReporterInterface::hasReporterValue ( const std::string &  param_name) const
protected

Return True if the Reporter value exists.

Template Parameters
TThe C++ type of the Reporter value being consumed
Parameters
reporter_nameA ReporterName object that for the desired Reporter value.

Definition at line 40 of file ReporterInterface.C.

41{
42 if (!reportersAdded())
44 "Cannot call hasReporterValue() until all Reporters have been constructed.");
45
46 return hasReporterValueByName(getReporterName(param_name));
47}
bool hasReporterValueByName(const ReporterName &reporter_name) const

◆ hasReporterValue() [2/2]

template<typename T >
bool ReporterInterface::hasReporterValue ( const std::string &  param_name) const
protected

Definition at line 189 of file ReporterInterface.h.

190{
191 if (!reportersAdded())
193 "Cannot call hasReporterValue() until all Reporters have been constructed.");
194
195 return hasReporterValueByName<T>(getReporterName(param_name));
196}

◆ hasReporterValueByName() [1/2]

bool ReporterInterface::hasReporterValueByName ( const ReporterName reporter_name) const
protected

Definition at line 50 of file ReporterInterface.C.

51{
52 if (!reportersAdded())
54 "Cannot call hasReporterValueByName() until all Reporters have been constructed.");
55
56 return _ri_reporter_data.hasReporterValue(reporter_name);
57}
bool hasReporterValue(const ReporterName &reporter_name) const
Return True if a Reporter value with the given type and name have been created.

Referenced by hasReporterValue(), and AdvancedOutput::initShowHideLists().

◆ hasReporterValueByName() [2/2]

template<typename T >
bool ReporterInterface::hasReporterValueByName ( const ReporterName reporter_name) const
protected

Definition at line 200 of file ReporterInterface.h.

201{
202 if (!reportersAdded())
204 "Cannot call hasReporterValueByName() until all Reporters have been constructed.");
205
206 return _ri_reporter_data.hasReporterValue<T>(reporter_name);
207}

◆ possiblyCheckHasReporter()

template<typename T >
void ReporterInterface::possiblyCheckHasReporter ( const ReporterName reporter_name,
const std::string &  param_name = "" 
) const
private

Helpers for "possibly" checking if a Reporter value exists.

This is only able to check for existance after all Reporters have been added (after the task creating them has been called). If called before said task, this will do nothing, hence the "possibly". This allows us to have errors reported directly by the object requesting the Reporter instead of through a system with less context.

Definition at line 211 of file ReporterInterface.h.

213{
214 if (reportersAdded() && !hasReporterValueByName<T>(reporter_name))
215 {
216 std::stringstream oss;
217 oss << "A Reporter value with the name \"" << reporter_name << "\" and type \""
218 << MooseUtils::prettyCppType<T>() << "\" was not found.";
219
220 if (_ri_params.isParamValid(param_name))
221 _ri_moose_object.paramError(param_name, oss.str());
222 else
223 _ri_moose_object.mooseError(oss.str());
224 }
225}
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition MooseBase.h:457

◆ reportersAdded()

bool ReporterInterface::reportersAdded ( ) const
private
Returns
True if all Reporters have been added (the task associated with adding them is complete)

Definition at line 92 of file ReporterInterface.C.

93{
95}
bool isTaskComplete(const std::string &task) const
ActionWarehouse & actionWarehouse()
Return a writable reference to the ActionWarehouse associated with this app.
Definition MooseApp.h:217
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition MooseBase.h:87

Referenced by getReporterContextBaseByName(), hasReporterValue(), hasReporterValueByName(), and possiblyCheckHasReporter().

◆ validParams()

InputParameters ReporterInterface::validParams ( )
static

Definition at line 15 of file ReporterInterface.C.

16{
17 return emptyInputParameters();
18}
InputParameters emptyInputParameters()

Referenced by Executioner::validParams(), MFEMObject::validParams(), and UserObjectBase::validParams().

Member Data Documentation

◆ _ri_fe_problem_base

FEProblemBase& ReporterInterface::_ri_fe_problem_base
private

Provides access to FEProblemBase::getReporterData.

Definition at line 137 of file ReporterInterface.h.

Referenced by reportersAdded().

◆ _ri_moose_object

const MooseObject& ReporterInterface::_ri_moose_object
private

◆ _ri_params

const InputParameters& ReporterInterface::_ri_params
private

Parameters for the MooseObject inherting from this interface.

Definition at line 134 of file ReporterInterface.h.

Referenced by getReporterName(), and possiblyCheckHasReporter().

◆ _ri_reporter_data

const ReporterData& ReporterInterface::_ri_reporter_data
private

The documentation for this class was generated from the following files: