20 #ifndef LIBMESH_SENSITIVITY_DATA_H 21 #define LIBMESH_SENSITIVITY_DATA_H 25 #include "libmesh/libmesh_common.h" 26 #include "libmesh/parameter_vector.h" 27 #include "libmesh/system.h" 110 unsigned int parameter_index)
const;
117 unsigned int parameter_index1,
118 unsigned int parameter_index2)
const;
125 unsigned int parameter_index);
133 unsigned int parameter_index1,
134 unsigned int parameter_index2);
174 const std::size_t Np = parameter_vector.
size();
175 const unsigned int Nq = sys.
n_qois();
180 for (
unsigned int i=0; i != Nq; ++i)
195 const std::size_t Np = parameter_vector.
size();
196 const unsigned int Nq = sys.
n_qois();
201 for (
unsigned int i=0; i != Nq; ++i)
206 for (std::size_t j=0; j != Np; ++j)
215 unsigned int parameter_index)
const 217 libmesh_assert_less (qoi_index,
_grad_data.size());
218 libmesh_assert_less (parameter_index,
_grad_data[qoi_index].size());
220 return _grad_data[qoi_index][parameter_index];
227 unsigned int parameter_index)
229 libmesh_assert_less (qoi_index,
_grad_data.size());
230 libmesh_assert_less (parameter_index,
_grad_data[qoi_index].size());
232 return _grad_data[qoi_index][parameter_index];
239 unsigned int parameter_index1,
240 unsigned int parameter_index2)
const 242 libmesh_assert_less (qoi_index,
_hess_data.size());
243 libmesh_assert_less (parameter_index1,
_hess_data[qoi_index].size());
244 libmesh_assert_less (parameter_index2,
_hess_data[qoi_index][parameter_index1].size());
246 return _hess_data[qoi_index][parameter_index1][parameter_index2];
253 unsigned int parameter_index1,
254 unsigned int parameter_index2)
256 libmesh_assert_less (qoi_index,
_hess_data.size());
257 libmesh_assert_less (parameter_index1,
_hess_data[qoi_index].size());
258 libmesh_assert_less (parameter_index2,
_hess_data[qoi_index][parameter_index1].size());
260 return _hess_data[qoi_index][parameter_index1][parameter_index2];
265 #endif // LIBMESH_SENSITIVITY_DATA_H const Number & derivative(unsigned int qoi_index, unsigned int parameter_index) const
SensitivityData()
Default constructor: empty data set.
std::vector< std::vector< std::vector< Number > > > _hess_data
Data structure for specifying which Parameters should be independent variables in a parameter sensiti...
Data structure for specifying which Quantities of Interest should be calculated in an adjoint or a pa...
std::vector< std::vector< Number > > _grad_data
Data storage; currently pretty trivial.
void allocate_hessian_data(const QoISet &qoi_indices, const System &sys, const ParameterVector ¶meter_vector)
Given QoISet and ParameterVector, allocates space for all required second derivative data...
unsigned int n_qois() const
Number of currently active quantities of interest.
const SensitivityData & _sd
The libMesh namespace provides an interface to certain functionality in the library.
bool has_index(std::size_t) const
Return whether or not this index is in the set to be calculated.
std::vector< dof_id_type, Threads::scalable_allocator< dof_id_type > > Row
void allocate_data(const QoISet &qoi_indices, const System &sys, const ParameterVector ¶meter_vector)
Given QoISet and ParameterVector, allocates space for all required first derivative data...
Data structure for holding completed parameter sensitivity calculations.
Manages consistently variables, degrees of freedom, and coefficient vectors.
void clear()
Clears and deallocates all data.
const Number & second_derivative(unsigned int qoi_index, unsigned int parameter_index1, unsigned int parameter_index2) const
const Number & operator[](unsigned int parameter)
ConstRow(const SensitivityData &sd, unsigned int qoi)
Row(SensitivityData &sd, unsigned int qoi)
Number & operator[](unsigned int parameter)
ConstRow operator[](unsigned int qoi) const
Vector address type operator: sd[q][p] is an alias for sd.derivative(q,p)