template <typename Number, typename Number2>
void
- do_function_values(const Number2 * dof_values_ptr,
+ do_function_values(const ArrayView<Number2> & dof_values,
const dealii::Table<2, double> &shape_values,
std::vector<Number> & values)
{
// the shape_values data stored contiguously
for (unsigned int shape_func = 0; shape_func < dofs_per_cell; ++shape_func)
{
- const Number2 value = dof_values_ptr[shape_func];
+ const Number2 value = dof_values[shape_func];
// For auto-differentiable numbers, the fact that a DoF value is zero
// does not imply that its derivatives are zero as well. So we
// can't filter by value for these number types.
template <int dim, int spacedim, typename VectorType>
void
do_function_values(
- const typename VectorType::value_type *dof_values_ptr,
- const dealii::Table<2, double> & shape_values,
- const FiniteElement<dim, spacedim> & fe,
- const std::vector<unsigned int> & shape_function_to_row_table,
- ArrayView<VectorType> values,
- const bool quadrature_points_fastest = false,
- const unsigned int component_multiple = 1)
+ const ArrayView<typename VectorType::value_type> &dof_values,
+ const dealii::Table<2, double> & shape_values,
+ const FiniteElement<dim, spacedim> & fe,
+ const std::vector<unsigned int> &shape_function_to_row_table,
+ ArrayView<VectorType> values,
+ const bool quadrature_points_fastest = false,
+ const unsigned int component_multiple = 1)
{
using Number = typename VectorType::value_type;
// initialize with zero
for (unsigned int shape_func = 0; shape_func < dofs_per_cell;
++shape_func)
{
- const Number &value = dof_values_ptr[shape_func + mc * dofs_per_cell];
+ const Number &value = dof_values[shape_func + mc * dofs_per_cell];
// For auto-differentiable numbers, the fact that a DoF value is zero
// does not imply that its derivatives are zero as well. So we
// can't filter by value for these number types.
// get function values of dofs on this cell
Vector<Number> dof_values(dofs_per_cell);
present_cell.get_interpolated_dof_values(fe_function, dof_values);
- internal::do_function_values(dof_values.begin(),
+ internal::do_function_values(make_array_view(dof_values.begin(),
+ dof_values.end()),
this->finite_element_output.shape_values,
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]);
- internal::do_function_values(dof_values.data(),
+ internal::do_function_values(make_array_view(dof_values.begin(),
+ dof_values.end()),
this->finite_element_output.shape_values,
values);
}
Vector<Number> dof_values(dofs_per_cell);
present_cell.get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_values(
- dof_values.begin(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_values,
*fe,
this->finite_element_output.shape_function_to_row_table,
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(
- dof_values.data(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_values,
*fe,
this->finite_element_output.shape_function_to_row_table,
for (unsigned int i = 0; i < indices.size(); ++i)
dof_values[i] = internal::get_vector_element(fe_function, indices[i]);
internal::do_function_values(
- dof_values.data(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_values,
*fe,
this->finite_element_output.shape_function_to_row_table,