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& ,
87 const unsigned int ){}
92 const unsigned int ){}
101 const unsigned int ){}
107 virtual void parallel_op(
const libMesh::Parallel::Communicator& communicator,
108 libMesh::Number& sys_qoi,
109 libMesh::Number& local_qoi );
115 virtual void thread_join( libMesh::Number& qoi,
const libMesh::Number& other_qoi );
120 virtual void output_qoi( std::ostream& out )
const;
123 libMesh::Number
value()
const;
126 const std::string&
name()
const;
148 #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.
virtual void side_qoi_derivative(AssemblyContext &, const unsigned int)
Compute the qoi derivative with respect to the solution on the domain boundary.
virtual void side_qoi(AssemblyContext &, const unsigned int)
Compute the qoi value on the domain boundary.
virtual void element_qoi_derivative(AssemblyContext &, const unsigned int)
Compute the qoi derivative with respect to the solution on element interiors.
libMesh::Number _qoi_value
virtual bool assemble_on_sides() const =0
Does the QoI need a domain boundary assembly loop?
QoIBase(const std::string &qoi_name)
virtual void reinit(MultiphysicsSystem &)
Reinitialize QoI.
virtual void init(const GetPot &, const MultiphysicsSystem &, unsigned int)
Method to allow QoI to cache any system information needed for QoI calculation, for example...
virtual void init_context(AssemblyContext &)
ParameterUser base class. Utility methods for subclasses.
Interface with libMesh for solving Multiphysics problems.
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 element_qoi(AssemblyContext &, const unsigned int)
Compute the qoi value for element interiors.
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.