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)