19#include "libmesh/diff_qoi.h"
20#include "libmesh/int_range.h"
21#include "libmesh/parallel.h"
27 assemble_qoi_sides(false),
28 assemble_qoi_internal_sides(false),
29 assemble_qoi_elements(true)
34 const std::vector<Number> & other_qoi,
38 qoi[i] += other_qoi[i];
42 std::vector<Number> & sys_qoi,
43 std::vector<Number> & local_qoi,
47 communicator.sum(local_qoi);
virtual void finalize_derivative(NumericVector< Number > &derivatives, std::size_t qoi_index)
Method to finalize qoi derivatives which require more than just a simple sum of element contributions...
DifferentiableQoI()
Constructor.
virtual void thread_join(std::vector< Number > &qoi, const std::vector< Number > &other_qoi, const QoISet &qoi_indices)
Method to combine thread-local qois.
virtual void parallel_op(const Parallel::Communicator &communicator, std::vector< Number > &sys_qoi, std::vector< Number > &local_qoi, const QoISet &qoi_indices)
Method to populate system qoi data structure with process-local qoi.
Provides a uniform interface to vector storage schemes for different linear algebra libraries.
Data structure for specifying which Quantities of Interest should be calculated in an adjoint or a pa...
The libMesh namespace provides an interface to certain functionality in the library.
auto index_range(const T &sizable)
Helper function that returns an IntRange<std::size_t> representing all the indices of the passed-in v...