*/
template <class InputVector>
void get_function_values (const InputVector &fe_function,
- std::vector<value_type> &values) const;
+ std::vector<typename ProductType<value_type,typename InputVector::value_type>::type> &values) const;
/**
* Return the gradients of the selected vector components of the finite
*/
template <class InputVector>
void get_function_gradients (const InputVector &fe_function,
- std::vector<gradient_type> &gradients) const;
+ std::vector<typename ProductType<gradient_type,typename InputVector::value_type>::type> &gradients) const;
/**
* Return the symmetrized gradients of the selected vector components of
template <class InputVector>
void
get_function_symmetric_gradients (const InputVector &fe_function,
- std::vector<symmetric_gradient_type> &symmetric_gradients) const;
+ std::vector<typename ProductType<symmetric_gradient_type,typename InputVector::value_type>::type> &symmetric_gradients) const;
/**
* Return the divergence of the selected vector components of the finite
*/
template <class InputVector>
void get_function_divergences (const InputVector &fe_function,
- std::vector<divergence_type> &divergences) const;
+ std::vector<typename ProductType<divergence_type,typename InputVector::value_type>::type> &divergences) const;
/**
* Return the curl of the selected vector components of the finite element
*/
template <class InputVector>
void get_function_curls (const InputVector &fe_function,
- std::vector<curl_type> &curls) const;
+ std::vector<typename ProductType<curl_type,typename InputVector::value_type>::type> &curls) const;
/**
* Return the Hessians of the selected vector components of the finite
*/
template <class InputVector>
void get_function_hessians (const InputVector &fe_function,
- std::vector<hessian_type> &hessians) const;
+ std::vector<typename ProductType<hessian_type,typename InputVector::value_type>::type> &hessians) const;
/**
* Return the Laplacians of the selected vector components of the finite
*/
template <class InputVector>
void get_function_laplacians (const InputVector &fe_function,
- std::vector<value_type> &laplacians) const;
+ std::vector<typename ProductType<value_type,typename InputVector::value_type>::type> &laplacians) const;
private:
/**
void
Vector<dim,spacedim>::
get_function_values (const InputVector &fe_function,
- std::vector<value_type> &values) const
+ std::vector<typename ProductType<value_type,typename InputVector::value_type>::type> &values) const
{
typedef FEValuesBase<dim,spacedim> FVB;
Assert (fe_values.update_flags & update_values,
fe_values.present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- dealii::Vector<double> dof_values (fe_values.dofs_per_cell);
+ dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_values<dim,spacedim>
(dof_values, fe_values.shape_values, shape_function_data, values);
void
Vector<dim,spacedim>::
get_function_gradients (const InputVector &fe_function,
- std::vector<gradient_type> &gradients) const
+ std::vector<typename ProductType<gradient_type,typename InputVector::value_type>::type> &gradients) const
{
typedef FEValuesBase<dim,spacedim> FVB;
Assert (fe_values.update_flags & update_gradients,
fe_values.present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- dealii::Vector<double> dof_values (fe_values.dofs_per_cell);
+ dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_derivatives<1,dim,spacedim>
(dof_values, fe_values.shape_gradients, shape_function_data, gradients);
void
Vector<dim,spacedim>::
get_function_symmetric_gradients (const InputVector &fe_function,
- std::vector<symmetric_gradient_type> &symmetric_gradients) const
+ std::vector<typename ProductType<symmetric_gradient_type,typename InputVector::value_type>::type> &symmetric_gradients) const
{
typedef FEValuesBase<dim,spacedim> FVB;
Assert (fe_values.update_flags & update_gradients,
fe_values.present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- dealii::Vector<double> dof_values (fe_values.dofs_per_cell);
+ dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_symmetric_gradients<dim,spacedim>
(dof_values, fe_values.shape_gradients, shape_function_data,
void
Vector<dim,spacedim>::
get_function_divergences (const InputVector &fe_function,
- std::vector<divergence_type> &divergences) const
+ std::vector<typename ProductType<divergence_type,typename InputVector::value_type>::type> &divergences) const
{
typedef FEValuesBase<dim,spacedim> FVB;
Assert (fe_values.update_flags & update_gradients,
// get function values of dofs
// on this cell
- dealii::Vector<double> dof_values (fe_values.dofs_per_cell);
+ dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_divergences<dim,spacedim>
(dof_values, fe_values.shape_gradients, shape_function_data, divergences);
void
Vector<dim,spacedim>::
get_function_curls (const InputVector &fe_function,
- std::vector<curl_type> &curls) const
+ std::vector<typename ProductType<curl_type,typename InputVector::value_type>::type> &curls) const
{
typedef FEValuesBase<dim,spacedim> FVB;
fe_values.present_cell->n_dofs_for_dof_handler ());
// get function values of dofs on this cell
- dealii::Vector<double> dof_values (fe_values.dofs_per_cell);
+ dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
fe_values.present_cell->get_interpolated_dof_values (fe_function, dof_values);
internal::do_function_curls<dim,spacedim>
(dof_values, fe_values.shape_gradients, shape_function_data, curls);
void
Vector<dim,spacedim>::
get_function_hessians (const InputVector &fe_function,
- std::vector<hessian_type> &hessians) const
+ std::vector<typename ProductType<hessian_type,typename InputVector::value_type>::type> &hessians) const
{
typedef FEValuesBase<dim,spacedim> FVB;
Assert (fe_values.update_flags & update_hessians,
fe_values.present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- dealii::Vector<double> dof_values (fe_values.dofs_per_cell);
+ dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_derivatives<2,dim,spacedim>
(dof_values, fe_values.shape_hessians, shape_function_data, hessians);
void
Vector<dim,spacedim>::
get_function_laplacians (const InputVector &fe_function,
- std::vector<value_type> &laplacians) const
+ std::vector<typename ProductType<value_type,typename InputVector::value_type>::type> &laplacians) const
{
typedef FEValuesBase<dim,spacedim> FVB;
Assert (fe_values.update_flags & update_hessians,
fe_values.present_cell->n_dofs_for_dof_handler()));
// get function values of dofs on this cell
- dealii::Vector<double> dof_values (fe_values.dofs_per_cell);
+ dealii::Vector<typename InputVector::value_type> dof_values (fe_values.dofs_per_cell);
fe_values.present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_laplacians<dim,spacedim>
(dof_values, fe_values.shape_hessians, shape_function_data, laplacians);
template
void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
::get_function_values<dealii::VEC>
- (const dealii::VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> >&) const;
+ (const dealii::VEC&, std::vector<typename ProductType<typename dealii::VEC::value_type,dealii::Tensor<1,deal_II_space_dimension>>::type >&) const;
template
void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
::get_function_gradients<dealii::VEC>
- (const dealii::VEC&, std::vector<dealii::Tensor<2,deal_II_space_dimension> >&) const;
+ (const dealii::VEC&, std::vector<typename ProductType<typename dealii::VEC::value_type,dealii::Tensor<2,deal_II_space_dimension>>::type >&) const;
template
void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
::get_function_symmetric_gradients<dealii::VEC>
- (const dealii::VEC&, std::vector<dealii::SymmetricTensor<2,deal_II_space_dimension> >&) const;
+ (const dealii::VEC&, std::vector<typename ProductType<typename dealii::VEC::value_type,dealii::SymmetricTensor<2,deal_II_space_dimension>>::type >&) const;
template
void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
::get_function_curls<dealii::VEC>
- (const dealii::VEC&, std::vector<curl_type>&) const;
+ (const dealii::VEC&, std::vector<typename ProductType<typename dealii::VEC::value_type,curl_type>::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
::get_function_divergences<dealii::VEC>
- (const dealii::VEC&, std::vector<double>&) const;
+ (const dealii::VEC&, std::vector<typename ProductType<typename dealii::VEC::value_type,divergence_type>::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
::get_function_hessians<dealii::VEC>
- (const dealii::VEC&, std::vector<dealii::Tensor<3,deal_II_space_dimension> >&) const;
+ (const dealii::VEC&, std::vector<typename ProductType<typename dealii::VEC::value_type,dealii::Tensor<3,deal_II_space_dimension>>::type >&) const;
template
void FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>
::get_function_laplacians<dealii::VEC>
- (const dealii::VEC&, std::vector<dealii::Tensor<1,deal_II_space_dimension> >&) const;
+ (const dealii::VEC&, std::vector<typename ProductType<typename dealii::VEC::value_type,dealii::Tensor<1,deal_II_space_dimension>>::type >&) const;
template
void FEValuesViews::SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>
template
void FEValuesViews::Vector<deal_II_dimension>::get_function_values<dealii::IndexSet>
- (const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> >&) const;
+ (const dealii::IndexSet&, std::vector<typename ProductType<IndexSet::value_type,dealii::Tensor<1,deal_II_dimension> >::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension>::get_function_gradients<dealii::IndexSet>
- (const dealii::IndexSet&, std::vector<dealii::Tensor<2,deal_II_dimension> >&) const;
+ (const dealii::IndexSet&, std::vector<typename ProductType<IndexSet::value_type,dealii::Tensor<2,deal_II_dimension> >::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension>::get_function_symmetric_gradients<dealii::IndexSet>
- (const dealii::IndexSet&, std::vector<dealii::SymmetricTensor<2,deal_II_dimension> >&) const;
+ (const dealii::IndexSet&, std::vector<typename ProductType<IndexSet::value_type,dealii::SymmetricTensor<2,deal_II_dimension> >::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension>::get_function_curls<dealii::IndexSet>
- (const dealii::IndexSet&, std::vector<curl_type>&) const;
+ (const dealii::IndexSet&, std::vector<typename ProductType<IndexSet::value_type,curl_type>::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension>::get_function_divergences<dealii::IndexSet>
- (const dealii::IndexSet&, std::vector<double>&) const;
+ (const dealii::IndexSet&, std::vector<typename ProductType<IndexSet::value_type,divergence_type>::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension>::get_function_hessians<dealii::IndexSet>
- (const dealii::IndexSet&, std::vector<dealii::Tensor<3,deal_II_dimension> >&) const;
+ (const dealii::IndexSet&, std::vector<typename ProductType<IndexSet::value_type,dealii::Tensor<3,deal_II_dimension> >::type>&) const;
template
void FEValuesViews::Vector<deal_II_dimension>::get_function_laplacians<dealii::IndexSet>
- (const dealii::IndexSet&, std::vector<dealii::Tensor<1,deal_II_dimension> >&) const;
+ (const dealii::IndexSet&, std::vector<typename ProductType<IndexSet::value_type,dealii::Tensor<1,deal_II_dimension> >::type>&) const;
template
void FEValuesViews::SymmetricTensor<2,deal_II_dimension,deal_II_dimension>::get_function_values<dealii::IndexSet>