26 #ifndef GRINS_QOI_BASE_H
27 #define GRINS_QOI_BASE_H
33 #include "libmesh/diff_qoi.h"
44 template <
typename Scalar>
45 class ParameterMultiPointer;
51 class MultiphysicsSystem;
52 class AssemblyContext;
58 QoIBase(
const std::string& qoi_name );
88 const unsigned int qoi_index );
93 const unsigned int qoi_index );
102 const unsigned int qoi_index );
108 virtual void parallel_op(
const libMesh::Parallel::Communicator& communicator,
109 libMesh::Number& sys_qoi,
110 libMesh::Number& local_qoi );
116 virtual void thread_join( libMesh::Number& qoi,
const libMesh::Number& other_qoi );
121 virtual void output_qoi( std::ostream& out )
const;
124 libMesh::Number
value()
const;
127 const std::string&
name()
const;
149 #endif // GRINS_QOI_BASE_H
virtual bool assemble_on_interior() const =0
Does the QoI need an element interior assembly loop?
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 void init(const GetPot &input, const MultiphysicsSystem &system)
Method to allow QoI to cache any system information needed for QoI calculation, for example...
virtual bool assemble_on_sides() const =0
Does the QoI need a domain boundary assembly loop?
QoIBase(const std::string &qoi_name)
virtual void init_context(AssemblyContext &context)
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.
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.
virtual QoIBase * clone() const =0
Clone this QoI.