Go to the documentation of this file.
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
Manages consistently variables, degrees of freedom, and coefficient vectors.
std::vector< dof_id_type, Threads::scalable_allocator< dof_id_type > > Row
bool has_index(std::size_t) const
Return whether or not this index is in the set to be calculated.
Row(SensitivityData &sd, unsigned int qoi)
The libMesh namespace provides an interface to certain functionality in the library.
void clear()
Clears and deallocates all data.
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.
std::vector< std::vector< Number > > _grad_data
Data storage; currently pretty trivial.
unsigned int n_qois() const
Number of currently active quantities of interest.
Data structure for specifying which Quantities of Interest should be calculated in an adjoint or a pa...
Data structure for specifying which Parameters should be independent variables in a parameter sensiti...
ConstRow operator[](unsigned int qoi) const
Vector address type operator: sd[q][p] is an alias for sd.derivative(q,p)
std::vector< std::vector< std::vector< Number > > > _hess_data
Number & operator[](unsigned int parameter)
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.
const Number & derivative(unsigned int qoi_index, unsigned int parameter_index) const
const Number & second_derivative(unsigned int qoi_index, unsigned int parameter_index1, unsigned int parameter_index2) const
const SensitivityData & _sd
ConstRow(const SensitivityData &sd, unsigned int qoi)
SensitivityData()
Default constructor: empty data set.
const Number & operator[](unsigned int parameter)