* may not detect errors.
*/
template <class InputVector, typename number>
+ void get_function_values (const InputVector& fe_function,
+ const VectorSlice<const std::vector<unsigned int> >& indices,
+ std::vector<std::vector<number> >& values,
+ const bool quadrature_points_fastest) const;
+
+ /**
+ * Like the previous function,
+ * but allows to only fill a
+ * slice of a vector instead of
+ * the whole one.
+ */
+ template <class InputVector, typename number>
void get_function_values (const InputVector& fe_function,
const VectorSlice<const std::vector<unsigned int> >& indices,
VectorSlice<std::vector<std::vector<number> > >& values,
* corresponding arguments.
*/
template <class InputVector>
+ void get_function_gradients (const InputVector& fe_function,
+ const VectorSlice<const std::vector<unsigned int> >& indices,
+ std::vector<std::vector<Tensor<1,spacedim> > >& gradients,
+ bool quadrature_points_fastest = false) const;
+
+ /**
+ * Same as the previous function,
+ * but filling only a slice of
+ * the result vector.
+ */
+ template <class InputVector>
void get_function_gradients (const InputVector& fe_function,
const VectorSlice<const std::vector<unsigned int> >& indices,
VectorSlice<std::vector<std::vector<Tensor<1,spacedim> > > >& gradients,
* corresponding arguments.
*/
template <class InputVector>
+ void get_function_hessians (
+ const InputVector& fe_function,
+ const VectorSlice<const std::vector<unsigned int> >& indices,
+ std::vector<std::vector<Tensor<2,spacedim> > >& hessians,
+ bool quadrature_points_fastest = false) const;
+ /**
+ * Same as the previous function,
+ * but filling only a slice of
+ * the result vector.
+ */
+ template <class InputVector>
void get_function_hessians (
const InputVector& fe_function,
const VectorSlice<const std::vector<unsigned int> >& indices,
}
+template <int dim, int spacedim>
+template <class InputVector, typename number>
+inline void
+FEValuesBase<dim,spacedim>::get_function_values (
+ const InputVector& fe_function,
+ const VectorSlice<const std::vector<unsigned int> >& indices,
+ std::vector<std::vector<number> >& values,
+ const bool quadrature_points_fastest) const
+{
+ VectorSlice<std::vector<std::vector<number> > > slice(values);
+ get_function_values(fe_function, indices, slice, quadrature_points_fastest);
+}
+
+
+
+template <int dim, int spacedim>
+template <class InputVector>
+inline void
+FEValuesBase<dim,spacedim>::get_function_gradients (
+ const InputVector& fe_function,
+ const VectorSlice<const std::vector<unsigned int> >& indices,
+ std::vector<std::vector<Tensor<1,spacedim> > >& values,
+ const bool quadrature_points_fastest) const
+{
+ VectorSlice<std::vector<std::vector<Tensor<1,dim> > > > slice(values);
+ get_function_gradients(fe_function, indices, slice, quadrature_points_fastest);
+}
+
+
+
+template <int dim, int spacedim>
+template <class InputVector>
+inline void
+FEValuesBase<dim,spacedim>::get_function_hessians (
+ const InputVector& fe_function,
+ const VectorSlice<const std::vector<unsigned int> >& indices,
+ std::vector<std::vector<Tensor<2,spacedim> > >& values,
+ const bool quadrature_points_fastest) const
+{
+ VectorSlice<std::vector<std::vector<Tensor<2,dim> > > > slice(values);
+ get_function_hessians(fe_function, indices, slice, quadrature_points_fastest);
+}
+
+
template <int dim, int spacedim>
template <class InputVector>