26 #ifndef GRINS_QOI_BASE_H
27 #define GRINS_QOI_BASE_H
33 #include "libmesh/diff_qoi.h"
45 class MultiphysicsSystem;
46 class AssemblyContext;
52 QoIBase(
const std::string& qoi_name );
75 virtual void init(
const GetPot& input,
77 unsigned int qoi_num );
84 const unsigned int qoi_index );
89 const unsigned int qoi_index );
98 const unsigned int qoi_index );
104 virtual void parallel_op(
const libMesh::Parallel::Communicator& communicator,
105 libMesh::Number& sys_qoi,
106 libMesh::Number& local_qoi );
112 virtual void thread_join( libMesh::Number& qoi,
const libMesh::Number& other_qoi );
117 virtual void output_qoi( std::ostream& out )
const;
120 libMesh::Number
value()
const;
123 const std::string&
name()
const;
145 #endif // GRINS_QOI_BASE_H
const std::string & name() const
Returns the name of this QoI.
libMesh::Number _qoi_value
virtual void element_qoi_derivative(AssemblyContext &context, const unsigned int qoi_index)
Compute the qoi derivative with respect to the solution on element interiors.
virtual bool assemble_on_sides() const =0
Does the QoI need a domain boundary assembly loop?
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...
QoIBase(const std::string &qoi_name)
virtual void init_context(AssemblyContext &context)
virtual QoIBase * clone() const =0
Clone this QoI.
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.
ParameterUser base class. Utility methods for subclasses.
virtual bool assemble_on_interior() const =0
Does the QoI need an element interior assembly loop?
Interface with libMesh for solving Multiphysics problems.
virtual void element_qoi(AssemblyContext &context, const unsigned int qoi_index)
Compute the qoi value for element interiors.
libMesh::Number value() const
Returns the current QoI value.
virtual void output_qoi(std::ostream &out) const
Basic output for computed QoI's.
virtual void side_qoi(AssemblyContext &context, const unsigned int qoi_index)
Compute the qoi value on the domain boundary.
virtual void thread_join(libMesh::Number &qoi, const libMesh::Number &other_qoi)
Call the operation to accumulate this QoI from multiple threads.
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.