#include <deal.II/grid/tria_accessor.h>
+#include <deal.II/lac/read_vector.h>
+
#include <boost/container/small_vector.hpp>
#include <set>
* caller to assure that the types of the numbers stored in input and output
* vectors are compatible and with similar accuracy.
*/
- template <class InputVector, typename ForwardIterator>
+ template <typename Number, typename ForwardIterator>
void
- get_dof_values(const InputVector &values,
- ForwardIterator local_values_begin,
- ForwardIterator local_values_end) const;
+ get_dof_values(const ReadVector<Number> &values,
+ ForwardIterator local_values_begin,
+ ForwardIterator local_values_end) const;
/**
* Collect the values of the given vector restricted to the dofs of this cell
* interpolation is presently only provided for cells by the finite element
* classes.
*/
- template <class InputVector, typename number>
+ template <typename Number>
void
get_interpolated_dof_values(
- const InputVector & values,
- Vector<number> & interpolated_values,
- const types::fe_index fe_index = numbers::invalid_fe_index) const;
+ const ReadVector<Number> &values,
+ Vector<Number> & interpolated_values,
+ const types::fe_index fe_index = numbers::invalid_fe_index) const;
/**
* This function is the counterpart to get_interpolated_dof_values(): you
template <int dimension_, int space_dimension_, bool level_dof_access>
-template <class InputVector, typename ForwardIterator>
+template <typename Number, typename ForwardIterator>
inline void
DoFCellAccessor<dimension_, space_dimension_, level_dof_access>::get_dof_values(
- const InputVector &values,
- ForwardIterator local_values_begin,
- ForwardIterator local_values_end) const
+ const ReadVector<Number> &values,
+ ForwardIterator local_values_begin,
+ ForwardIterator local_values_end) const
{
(void)local_values_end;
Assert(this->is_artificial() == false,
dof_indices(this->get_fe().n_dofs_per_cell());
internal::DoFAccessorImplementation::get_cell_dof_indices(
*this, dof_indices, this->active_fe_index());
- dealii::internal::DoFAccessorImplementation::Implementation::
- extract_subvector_to(values,
- dof_indices.data(),
- dof_indices.data() + dof_indices.size(),
- local_values_begin);
+
+ boost::container::small_vector<Number, 27> values_temp(local_values_end -
+ local_values_begin);
+ auto view = make_array_view(values_temp.begin(), values_temp.end());
+ values.extract_subvector_to(make_array_view(dof_indices.begin(),
+ dof_indices.end()),
+ view);
+ using view_type = std::remove_reference_t<decltype(*local_values_begin)>;
+ ArrayView<view_type> values_view2(&*local_values_begin,
+ local_values_end - local_values_begin);
+ std::copy(values_temp.begin(), values_temp.end(), values_view2.begin());
}
#include <deal.II/hp/q_collection.h>
+#include <deal.II/lac/read_vector.h>
+
#include <algorithm>
#include <memory>
#include <type_traits>
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>>
- &values) const;
+ get_function_values(const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const;
/**
* Same as above, but using a vector of local degree-of-freedom values. In
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>>
- &values) const;
+ get_function_values(const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const;
/**
* Same as above, but using a vector of local degree-of-freedom values. In
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>>
- &values) const;
+ get_function_values(const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const;
/**
* Same as above, but using a vector of local degree-of-freedom values. In
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>>
- &values) const;
+ get_function_values(const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const;
/**
* Same as above, but using a vector of local degree-of-freedom values. In
* @post <code>values[q]</code> will contain the value of the field
* described by fe_function at the $q$th quadrature point.
*
- * @note The actual data type of the input vector may be either a
- * Vector<T>, BlockVector<T>, or one of the PETSc or Trilinos
- * vector wrapper classes. It represents a global vector of DoF values
- * associated with the DoFHandler object with which this FEValues object was
- * last initialized.
- *
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector & fe_function,
- std::vector<typename InputVector::value_type> &values) const;
+ get_function_values(const ReadVector<Number> &fe_function,
+ std::vector<Number> & values) const;
/**
* This function does the same as the other get_function_values(), but
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector & fe_function,
- std::vector<Vector<typename InputVector::value_type>> &values) const;
+ get_function_values(const ReadVector<Number> & fe_function,
+ std::vector<Vector<Number>> &values) const;
/**
* Generate function values from an arbitrary vector. This function
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector & fe_function,
- const ArrayView<const types::global_dof_index> &indices,
- std::vector<typename InputVector::value_type> & values) const;
+ get_function_values(const ReadVector<Number> &fe_function,
+ const ArrayView<const types::global_dof_index> &indices,
+ std::vector<Number> &values) const;
/**
* Generate vector function values from an arbitrary vector.
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector & fe_function,
- const ArrayView<const types::global_dof_index> & indices,
- std::vector<Vector<typename InputVector::value_type>> &values) const;
+ get_function_values(const ReadVector<Number> &fe_function,
+ const ArrayView<const types::global_dof_index> &indices,
+ std::vector<Vector<Number>> &values) const;
/**
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector>
+ template <typename Number>
void
- get_function_values(
- const InputVector & fe_function,
- const ArrayView<const types::global_dof_index> & indices,
- ArrayView<std::vector<typename InputVector::value_type>> values,
- const bool quadrature_points_fastest) const;
+ get_function_values(const ReadVector<Number> &fe_function,
+ const ArrayView<const types::global_dof_index> &indices,
+ ArrayView<std::vector<Number>> values,
+ const bool quadrature_points_fastest) const;
/** @} */
/// @name Access to derivatives of global finite element fields
* Call @p get_interpolated_dof_values of the iterator with the
* given arguments.
*/
- template <typename VectorType>
+ template <typename Number>
void
- get_interpolated_dof_values(
- const VectorType & in,
- Vector<typename VectorType::value_type> &out) const;
+ get_interpolated_dof_values(const ReadVector<Number> &in,
+ Vector<Number> & out) const;
/**
* Call @p get_interpolated_dof_values of the iterator with the
template <int dim, int spacedim, bool lda>
-template <class InputVector, typename number>
+template <typename Number>
void
DoFCellAccessor<dim, spacedim, lda>::get_interpolated_dof_values(
- const InputVector & values,
- Vector<number> & interpolated_values,
- const types::fe_index fe_index_) const
+ const ReadVector<Number> &values,
+ Vector<Number> & interpolated_values,
+ const types::fe_index fe_index_) const
{
const types::fe_index fe_index =
(this->dof_handler->hp_capability_enabled == false &&
}
else
{
- Vector<number> tmp(dofs_per_cell);
+ Vector<Number> tmp(dofs_per_cell);
this->get_dof_values(values, tmp);
FullMatrix<double> interpolation(
// anyway (and in fact is of size zero, see the assertion above)
if (fe.n_dofs_per_cell() > 0)
{
- Vector<number> tmp1(dofs_per_cell);
- Vector<number> tmp2(dofs_per_cell);
+ Vector<Number> tmp1(dofs_per_cell);
+ Vector<Number> tmp2(dofs_per_cell);
interpolated_values = 0;
for (unsigned int i = 0; i < dofs_per_cell; ++i)
if (fe.restriction_is_additive(i))
interpolated_values(i) += tmp2(i);
- else if (tmp2(i) != number())
+ else if (tmp2(i) != Number())
interpolated_values(i) = tmp2(i);
}
}
-for (VEC : VECTOR_TYPES; deal_II_dimension : DIMENSIONS; lda : BOOL)
+for (S : REAL_AND_COMPLEX_SCALARS; deal_II_dimension : DIMENSIONS; lda : BOOL)
{
template void DoFCellAccessor<deal_II_dimension, deal_II_dimension, lda>::
- get_interpolated_dof_values(const VEC &,
- Vector<VEC::value_type> &,
+ get_interpolated_dof_values(const ReadVector<S> &,
+ Vector<S> &,
const types::fe_index) const;
#if deal_II_dimension != 3
template void
DoFCellAccessor<deal_II_dimension, deal_II_dimension + 1, lda>::
- get_interpolated_dof_values(const VEC &,
- Vector<VEC::value_type> &,
+ get_interpolated_dof_values(const ReadVector<S> &,
+ Vector<S> &,
const types::fe_index) const;
#endif
#if deal_II_dimension == 3
template void DoFCellAccessor<1, 3, lda>::get_interpolated_dof_values(
- const VEC &, Vector<VEC::value_type> &, const types::fe_index) const;
+ const ReadVector<S> &, Vector<S> &, const types::fe_index) const;
#endif
}
template <int dim, int spacedim>
- template <class InputVector>
+ template <typename Number>
void
Scalar<dim, spacedim>::get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>> &values)
- const
+ const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
"update_values")));
Assert(fe_values->present_cell.is_initialized(),
(typename FEValuesBase<dim, spacedim>::ExcNotReinited()));
- AssertDimension(fe_function.size(),
- fe_values->present_cell.n_dofs_for_dof_handler());
// get function values of dofs on this cell and call internal worker
// function
- dealii::Vector<typename InputVector::value_type> dof_values(
- fe_values->dofs_per_cell);
+ dealii::Vector<Number> 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>(
template <int dim, int spacedim>
- template <class InputVector>
+ template <typename Number>
void
Vector<dim, spacedim>::get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>> &values)
- const
+ const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
"update_values")));
Assert(fe_values->present_cell.is_initialized(),
(typename FEValuesBase<dim, spacedim>::ExcNotReinited()));
- AssertDimension(fe_function.size(),
- fe_values->present_cell.n_dofs_for_dof_handler());
// get function values of dofs on this cell
- dealii::Vector<typename InputVector::value_type> dof_values(
- fe_values->dofs_per_cell);
+ dealii::Vector<Number> 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>(
template <int dim, int spacedim>
- template <class InputVector>
+ template <typename Number>
void
SymmetricTensor<2, dim, spacedim>::get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>> &values)
- const
+ const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
"update_values")));
Assert(fe_values->present_cell.is_initialized(),
(typename FEValuesBase<dim, spacedim>::ExcNotReinited()));
- AssertDimension(fe_function.size(),
- fe_values->present_cell.n_dofs_for_dof_handler());
// get function values of dofs on this cell
- dealii::Vector<typename InputVector::value_type> dof_values(
- fe_values->dofs_per_cell);
+ dealii::Vector<Number> 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>(
template <int dim, int spacedim>
- template <class InputVector>
+ template <typename Number>
void
Tensor<2, dim, spacedim>::get_function_values(
- const InputVector &fe_function,
- std::vector<solution_value_type<typename InputVector::value_type>> &values)
- const
+ const ReadVector<Number> & fe_function,
+ std::vector<solution_value_type<Number>> &values) const
{
Assert(fe_values->update_flags & update_values,
(typename FEValuesBase<dim, spacedim>::ExcAccessToUninitializedField(
"update_values")));
Assert(fe_values->present_cell.is_initialized(),
(typename FEValuesBase<dim, spacedim>::ExcNotReinited()));
- AssertDimension(fe_function.size(),
- fe_values->present_cell.n_dofs_for_dof_handler());
// get function values of dofs on this cell
- dealii::Vector<typename InputVector::value_type> dof_values(
- fe_values->dofs_per_cell);
+ dealii::Vector<Number> 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>(
template <int dim, int spacedim>
-template <typename VectorType>
+template <typename Number>
void
FEValuesBase<dim, spacedim>::CellIteratorContainer::get_interpolated_dof_values(
- const VectorType & in,
- Vector<typename VectorType::value_type> &out) const
+ const ReadVector<Number> &in,
+ Vector<Number> & out) const
{
Assert(is_initialized(), ExcNotReinited());
Assert(dof_handler != nullptr, ExcNeedsDoFHandler());
template <int dim, int spacedim>
-template <class InputVector>
+template <typename Number>
void
FEValuesBase<dim, spacedim>::get_function_values(
- const InputVector & fe_function,
- std::vector<typename InputVector::value_type> &values) const
+ const ReadVector<Number> &fe_function,
+ std::vector<Number> & values) const
{
- using Number = typename InputVector::value_type;
Assert(this->update_flags & update_values,
ExcAccessToUninitializedField("update_values"));
AssertDimension(fe->n_components(), 1);
template <int dim, int spacedim>
-template <class InputVector>
+template <typename Number>
void
FEValuesBase<dim, spacedim>::get_function_values(
- const InputVector & fe_function,
+ const ReadVector<Number> & fe_function,
const ArrayView<const types::global_dof_index> &indices,
- std::vector<typename InputVector::value_type> & values) const
+ std::vector<Number> & values) const
{
- using Number = typename InputVector::value_type;
Assert(this->update_flags & update_values,
ExcAccessToUninitializedField("update_values"));
AssertDimension(fe->n_components(), 1);
AssertDimension(indices.size(), dofs_per_cell);
boost::container::small_vector<Number, 200> dof_values(dofs_per_cell);
- for (unsigned int i = 0; i < dofs_per_cell; ++i)
- dof_values[i] = internal::get_vector_element(fe_function, indices[i]);
- internal::do_function_values(make_array_view(dof_values.begin(),
- dof_values.end()),
+ auto view = make_array_view(dof_values.begin(), dof_values.end());
+ fe_function.extract_subvector_to(indices, view);
+ internal::do_function_values(view,
this->finite_element_output.shape_values,
values);
}
template <int dim, int spacedim>
-template <class InputVector>
+template <typename Number>
void
FEValuesBase<dim, spacedim>::get_function_values(
- const InputVector & fe_function,
- std::vector<Vector<typename InputVector::value_type>> &values) const
+ const ReadVector<Number> & fe_function,
+ std::vector<Vector<Number>> &values) const
{
- using Number = typename InputVector::value_type;
Assert(present_cell.is_initialized(), ExcNotReinited());
Assert(this->update_flags & update_values,
template <int dim, int spacedim>
-template <class InputVector>
+template <typename Number>
void
FEValuesBase<dim, spacedim>::get_function_values(
- const InputVector & fe_function,
- const ArrayView<const types::global_dof_index> & indices,
- std::vector<Vector<typename InputVector::value_type>> &values) const
+ const ReadVector<Number> & fe_function,
+ const ArrayView<const types::global_dof_index> &indices,
+ std::vector<Vector<Number>> & values) const
{
- using Number = typename InputVector::value_type;
// Size of indices must be a multiple of dofs_per_cell such that an integer
// number of function values is generated in each point.
Assert(indices.size() % dofs_per_cell == 0,
ExcAccessToUninitializedField("update_values"));
boost::container::small_vector<Number, 200> dof_values(dofs_per_cell);
- for (unsigned int i = 0; i < dofs_per_cell; ++i)
- dof_values[i] = internal::get_vector_element(fe_function, indices[i]);
+ auto view = make_array_view(dof_values.begin(), dof_values.end());
+ fe_function.extract_subvector_to(indices, view);
internal::do_function_values(
- make_array_view(dof_values.begin(), dof_values.end()),
+ view,
this->finite_element_output.shape_values,
*fe,
this->finite_element_output.shape_function_to_row_table,
template <int dim, int spacedim>
-template <class InputVector>
+template <typename Number>
void
FEValuesBase<dim, spacedim>::get_function_values(
- const InputVector & fe_function,
- const ArrayView<const types::global_dof_index> & indices,
- ArrayView<std::vector<typename InputVector::value_type>> values,
+ const ReadVector<Number> & fe_function,
+ const ArrayView<const types::global_dof_index> &indices,
+ ArrayView<std::vector<Number>> values,
const bool quadrature_points_fastest) const
{
- using Number = typename InputVector::value_type;
Assert(this->update_flags & update_values,
ExcAccessToUninitializedField("update_values"));
Assert(indices.size() % dofs_per_cell == 0,
ExcNotMultiple(indices.size(), dofs_per_cell));
- boost::container::small_vector<Number, 200> dof_values(indices.size());
- for (unsigned int i = 0; i < indices.size(); ++i)
- dof_values[i] = internal::get_vector_element(fe_function, indices[i]);
+ boost::container::small_vector<Number, 200> dof_values(dofs_per_cell);
+ auto view = make_array_view(dof_values.begin(), dof_values.end());
+ fe_function.extract_subvector_to(indices, view);
internal::do_function_values(
- make_array_view(dof_values.begin(), dof_values.end()),
+ view,
this->finite_element_output.shape_values,
*fe,
this->finite_element_output.shape_function_to_row_table,
deal_II_space_dimension>> &);
# endif
}
+for (S : REAL_AND_COMPLEX_SCALARS; deal_II_dimension : DIMENSIONS;
+ deal_II_space_dimension : SPACE_DIMENSIONS)
+ {
+# if deal_II_dimension <= deal_II_space_dimension
+ template void
+ FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(const dealii::ReadVector<S> &,
+ std::vector<ProductType<S, value_type>::type> &)
+ const;
+
+ template void
+ FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(
+ const dealii::ReadVector<S> &,
+ std::vector<
+ ProductType<S, dealii::Tensor<1, deal_II_space_dimension>>::type> &)
+ const;
+
+ template void FEValuesViews::SymmetricTensor<2,
+ deal_II_dimension,
+ deal_II_space_dimension>::
+ get_function_values<S>(
+ const dealii::ReadVector<S> &,
+ std::vector<ProductType<
+ S,
+ dealii::SymmetricTensor<2, deal_II_space_dimension>>::type> &) const;
+
+ template void
+ FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(
+ const dealii::ReadVector<S> &,
+ std::vector<
+ ProductType<S, dealii::Tensor<2, deal_II_space_dimension>>::type> &)
+ const;
+
+ template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(const ReadVector<S> &, std::vector<S> &) const;
+
+ template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(const ReadVector<S> &,
+ const ArrayView<const types::global_dof_index> &,
+ std::vector<S> &) const;
+
+ template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(const ReadVector<S> &, std::vector<Vector<S>> &)
+ const;
+
+ template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(const ReadVector<S> &,
+ const ArrayView<const types::global_dof_index> &,
+ std::vector<Vector<S>> &) const;
+
+ template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
+ get_function_values<S>(const ReadVector<S> &,
+ const ArrayView<const types::global_dof_index> &,
+ ArrayView<std::vector<S>>,
+ bool) const;
+# endif
+ }
{
# if deal_II_dimension <= deal_II_space_dimension
template void
- FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
- get_function_values<dealii::VEC>(
- const dealii::VEC &,
- std::vector<ProductType<dealii::VEC::value_type, value_type>::type> &)
- const;
- template void
FEValuesViews::Scalar<deal_II_dimension, deal_II_space_dimension>::
get_function_gradients<dealii::VEC>(
const dealii::VEC &,
const;
template void
- FEValuesViews::Vector<deal_II_dimension, deal_II_space_dimension>::
- get_function_values<dealii::VEC>(
- const dealii::VEC &,
- std::vector<
- ProductType<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 &,
dealii::Tensor<4, deal_II_space_dimension>>::type> &)
const;
- template void FEValuesViews::SymmetricTensor<2,
- deal_II_dimension,
- deal_II_space_dimension>::
- get_function_values<dealii::VEC>(
- const dealii::VEC &,
- std::vector<ProductType<
- dealii::VEC::value_type,
- dealii::SymmetricTensor<2, deal_II_space_dimension>>::type> &) const;
template void FEValuesViews::
SymmetricTensor<2, deal_II_dimension, deal_II_space_dimension>::
get_function_divergences<dealii::VEC>(
const;
template void
- FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>::
- get_function_values<dealii::VEC>(
- const dealii::VEC &,
- std::vector<
- ProductType<dealii::VEC::value_type,
- dealii::Tensor<2, deal_II_space_dimension>>::type> &)
- const;
- template void
FEValuesViews::Tensor<2, deal_II_dimension, deal_II_space_dimension>::
get_function_divergences<dealii::VEC>(
const dealii::VEC &,
{
# if deal_II_dimension <= deal_II_space_dimension
- template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
- get_function_values<VEC>(const VEC &, std::vector<VEC::value_type> &)
- const;
- template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
- get_function_values<VEC>(const VEC &,
- const ArrayView<const types::global_dof_index> &,
- std::vector<VEC::value_type> &) const;
-
- template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
- get_function_values<VEC>(const VEC &,
- std::vector<Vector<VEC::value_type>> &) const;
-
- template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
- get_function_values<VEC>(const VEC &,
- const ArrayView<const types::global_dof_index> &,
- std::vector<Vector<VEC::value_type>> &) const;
-
- template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
- get_function_values<VEC>(const VEC &,
- const ArrayView<const types::global_dof_index> &,
- ArrayView<std::vector<VEC::value_type>>,
- bool) const;
-
template void FEValuesBase<deal_II_dimension, deal_II_space_dimension>::
get_function_gradients<VEC>(
const VEC &,