GRINS-0.7.0
List of all members | Public Member Functions | Protected Attributes
GRINS::QoIBase Class Referenceabstract

#include <qoi_base.h>

Inheritance diagram for GRINS::QoIBase:
Inheritance graph
[legend]
Collaboration diagram for GRINS::QoIBase:
Collaboration graph
[legend]

Public Member Functions

 QoIBase (const std::string &qoi_name)
 
virtual ~QoIBase ()
 
virtual QoIBaseclone () const =0
 Clone this QoI. More...
 
virtual bool assemble_on_interior () const =0
 Does the QoI need an element interior assembly loop? More...
 
virtual bool assemble_on_sides () const =0
 Does the QoI need a domain boundary assembly loop? More...
 
virtual void init (const GetPot &input, const MultiphysicsSystem &system, unsigned int qoi_num)
 Method to allow QoI to cache any system information needed for QoI calculation, for example, solution variable indices. More...
 
virtual void init_context (AssemblyContext &context)
 
virtual void element_qoi (AssemblyContext &context, const unsigned int qoi_index)
 Compute the qoi value for element interiors. More...
 
virtual void element_qoi_derivative (AssemblyContext &context, const unsigned int qoi_index)
 Compute the qoi derivative with respect to the solution on element interiors. More...
 
virtual void side_qoi (AssemblyContext &context, const unsigned int qoi_index)
 Compute the qoi value on the domain boundary. More...
 
virtual void side_qoi_derivative (AssemblyContext &context, const unsigned int qoi_index)
 Compute the qoi derivative with respect to the solution on the domain boundary. More...
 
virtual void parallel_op (const libMesh::Parallel::Communicator &communicator, libMesh::Number &sys_qoi, libMesh::Number &local_qoi)
 Call the parallel operation for this QoI and cache the value. More...
 
virtual void thread_join (libMesh::Number &qoi, const libMesh::Number &other_qoi)
 Call the operation to accumulate this QoI from multiple threads. More...
 
virtual void output_qoi (std::ostream &out) const
 Basic output for computed QoI's. More...
 
libMesh::Number value () const
 Returns the current QoI value. More...
 
const std::string & name () const
 Returns the name of this QoI. More...
 
- Public Member Functions inherited from GRINS::ParameterUser
 ParameterUser (const std::string &user_name)
 
virtual ~ParameterUser ()
 
virtual void set_parameter (libMesh::Number &param_variable, const GetPot &input, const std::string &param_name, libMesh::Number param_default)
 Each subclass can simultaneously read a parameter value from. More...
 
virtual void set_parameter (libMesh::ParsedFunction< libMesh::Number, libMesh::Gradient > &func, const GetPot &input, const std::string &func_param_name, const std::string &param_default)
 Each subclass can simultaneously read a parsed function from. More...
 
virtual void set_parameter (libMesh::ParsedFEMFunction< libMesh::Number > &func, const GetPot &input, const std::string &func_param_name, const std::string &param_default)
 Each subclass can simultaneously read a parsed function from. More...
 
virtual void move_parameter (const libMesh::Number &old_parameter, libMesh::Number &new_parameter)
 When cloning an object, we need to update parameter pointers. More...
 
virtual void move_parameter (const libMesh::ParsedFunction< libMesh::Number, libMesh::Gradient > &old_func, libMesh::ParsedFunction< libMesh::Number, libMesh::Gradient > &new_func)
 When cloning an object, we need to update parameter pointers. More...
 
virtual void move_parameter (const libMesh::ParsedFEMFunction< libMesh::Number > &old_func, libMesh::ParsedFEMFunction< libMesh::Number > &new_func)
 When cloning an object, we need to update parameter pointers. More...
 
virtual void register_parameter (const std::string &param_name, libMesh::ParameterMultiAccessor< libMesh::Number > &param_pointer) const
 Each subclass will register its copy of an independent. More...
 

Protected Attributes

std::string _qoi_name
 
libMesh::Number _qoi_value
 

Additional Inherited Members

- Static Public Attributes inherited from GRINS::ParameterUser
static std::string zero_vector_function = std::string("{0}")
 A parseable function string with LIBMESH_DIM components, all 0. More...
 

Detailed Description

Definition at line 48 of file qoi_base.h.

Constructor & Destructor Documentation

GRINS::QoIBase::QoIBase ( const std::string &  qoi_name)

Definition at line 39 of file qoi_base.C.

40  : ParameterUser(qoi_name),
41  _qoi_name(qoi_name),
42  _qoi_value(0.0)
43  {
44  return;
45  }
std::string _qoi_name
Definition: qoi_base.h:127
libMesh::Number _qoi_value
Definition: qoi_base.h:129
ParameterUser(const std::string &user_name)
GRINS::QoIBase::~QoIBase ( )
virtual

Definition at line 47 of file qoi_base.C.

48  {
49  return;
50  }

Member Function Documentation

virtual bool GRINS::QoIBase::assemble_on_interior ( ) const
pure virtual

Does the QoI need an element interior assembly loop?

This is pure virtual to force to user to specify.

Implemented in GRINS::ParsedBoundaryQoI, GRINS::ParsedInteriorQoI, GRINS::Vorticity, GRINS::WeightedFluxQoI, and GRINS::AverageNusseltNumber.

Referenced by GRINS::CompositeQoI::add_qoi().

virtual bool GRINS::QoIBase::assemble_on_sides ( ) const
pure virtual

Does the QoI need a domain boundary assembly loop?

This is pure virtual to force to user to specify.

Implemented in GRINS::ParsedBoundaryQoI, GRINS::ParsedInteriorQoI, GRINS::Vorticity, GRINS::WeightedFluxQoI, and GRINS::AverageNusseltNumber.

Referenced by GRINS::CompositeQoI::add_qoi().

virtual QoIBase* GRINS::QoIBase::clone ( ) const
pure virtual

Clone this QoI.

We return a raw pointer, but it is expected for the user to take ownership and delete the object when done.

Implemented in GRINS::ParsedBoundaryQoI, GRINS::ParsedInteriorQoI, GRINS::Vorticity, GRINS::WeightedFluxQoI, and GRINS::AverageNusseltNumber.

Referenced by GRINS::CompositeQoI::add_qoi().

void GRINS::QoIBase::element_qoi ( AssemblyContext context,
const unsigned int  qoi_index 
)
virtual

Compute the qoi value for element interiors.

Override this method if your QoI is defined on element interiors

Reimplemented in GRINS::Vorticity, and GRINS::ParsedInteriorQoI.

Definition at line 64 of file qoi_base.C.

66  {
67  return;
68  }
void GRINS::QoIBase::element_qoi_derivative ( AssemblyContext context,
const unsigned int  qoi_index 
)
virtual

Compute the qoi derivative with respect to the solution on element interiors.

Override this method if your QoI is defined on element interiors

Reimplemented in GRINS::Vorticity, and GRINS::ParsedInteriorQoI.

Definition at line 70 of file qoi_base.C.

72  {
73  return;
74  }
void GRINS::QoIBase::init ( const GetPot &  input,
const MultiphysicsSystem system,
unsigned int  qoi_num 
)
virtual

Method to allow QoI to cache any system information needed for QoI calculation, for example, solution variable indices.

Reimplemented in GRINS::Vorticity, GRINS::ParsedBoundaryQoI, GRINS::ParsedInteriorQoI, GRINS::WeightedFluxQoI, and GRINS::AverageNusseltNumber.

Definition at line 53 of file qoi_base.C.

56  {
57  }
void GRINS::QoIBase::init_context ( AssemblyContext context)
virtual

Reimplemented in GRINS::Vorticity, GRINS::ParsedBoundaryQoI, GRINS::ParsedInteriorQoI, and GRINS::AverageNusseltNumber.

Definition at line 59 of file qoi_base.C.

60  {
61  return;
62  }
const std::string & GRINS::QoIBase::name ( ) const
inline

Returns the name of this QoI.

Definition at line 139 of file qoi_base.h.

References _qoi_name.

Referenced by GRINS::SteadyVisualization::output_adjoint(), and GRINS::UnsteadyVisualization::output_adjoint().

140  {
141  return _qoi_name;
142  }
std::string _qoi_name
Definition: qoi_base.h:127
void GRINS::QoIBase::output_qoi ( std::ostream &  out) const
virtual

Basic output for computed QoI's.

If fancier output is desired, override this method.

Definition at line 108 of file qoi_base.C.

References _qoi_name, and _qoi_value.

109  {
110  out << "==========================================================" << std::endl;
111 
112  out << _qoi_name+" = "
113  << std::setprecision(16)
114  << std::scientific
115  << _qoi_value << std::endl;
116 
117  out << "==========================================================" << std::endl;
118 
119  return;
120  }
std::string _qoi_name
Definition: qoi_base.h:127
libMesh::Number _qoi_value
Definition: qoi_base.h:129
void GRINS::QoIBase::parallel_op ( const libMesh::Parallel::Communicator &  communicator,
libMesh::Number &  sys_qoi,
libMesh::Number &  local_qoi 
)
virtual

Call the parallel operation for this QoI and cache the value.

By default, this is just a sum. Override if QoI is more complex.

Definition at line 88 of file qoi_base.C.

References _qoi_value.

91  {
92  communicator.sum(local_qoi);
93 
94  sys_qoi = local_qoi;
95 
96  _qoi_value = sys_qoi;
97 
98  return;
99  }
libMesh::Number _qoi_value
Definition: qoi_base.h:129
void GRINS::QoIBase::side_qoi ( AssemblyContext context,
const unsigned int  qoi_index 
)
virtual

Compute the qoi value on the domain boundary.

Override this method if your QoI is defined on the domain boundary

Reimplemented in GRINS::ParsedBoundaryQoI, and GRINS::AverageNusseltNumber.

Definition at line 76 of file qoi_base.C.

78  {
79  return;
80  }
void GRINS::QoIBase::side_qoi_derivative ( AssemblyContext context,
const unsigned int  qoi_index 
)
virtual

Compute the qoi derivative with respect to the solution on the domain boundary.

Override this method if your QoI is defined on the domain boundary

Reimplemented in GRINS::ParsedBoundaryQoI, and GRINS::AverageNusseltNumber.

Definition at line 82 of file qoi_base.C.

84  {
85  return;
86  }
void GRINS::QoIBase::thread_join ( libMesh::Number &  qoi,
const libMesh::Number &  other_qoi 
)
virtual

Call the operation to accumulate this QoI from multiple threads.

By default, this is just a sum. Override if QoI is more complex.

Definition at line 101 of file qoi_base.C.

102  {
103  qoi += other_qoi;
104 
105  return;
106  }
libMesh::Number GRINS::QoIBase::value ( ) const
inline

Returns the current QoI value.

Definition at line 133 of file qoi_base.h.

References _qoi_value.

134  {
135  return _qoi_value;
136  }
libMesh::Number _qoi_value
Definition: qoi_base.h:129

Member Data Documentation

std::string GRINS::QoIBase::_qoi_name
protected

Definition at line 127 of file qoi_base.h.

Referenced by name(), and output_qoi().

libMesh::Number GRINS::QoIBase::_qoi_value
protected

Definition at line 129 of file qoi_base.h.

Referenced by output_qoi(), parallel_op(), and value().


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

Generated on Thu Jun 2 2016 21:52:32 for GRINS-0.7.0 by  doxygen 1.8.10