template <int order, int spacedim, typename Number>
void
do_function_derivatives(
- const Number * dof_values_ptr,
+ const ArrayView<Number> & dof_values,
const dealii::Table<2, Tensor<order, spacedim>> &shape_derivatives,
std::vector<Tensor<order, spacedim, Number>> & derivatives)
{
// access the shape_gradients/hessians data stored contiguously
for (unsigned int shape_func = 0; shape_func < dofs_per_cell; ++shape_func)
{
- const Number &value = dof_values_ptr[shape_func];
+ const Number &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 order, int dim, int spacedim, typename Number>
void
do_function_derivatives(
- const Number * dof_values_ptr,
+ const ArrayView<Number> & dof_values,
const dealii::Table<2, Tensor<order, spacedim>> &shape_derivatives,
const FiniteElement<dim, spacedim> & fe,
const std::vector<unsigned int> &shape_function_to_row_table,
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_derivatives(dof_values.begin(),
+ internal::do_function_derivatives(make_array_view(dof_values.begin(),
+ dof_values.end()),
this->finite_element_output.shape_gradients,
gradients);
}
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_derivatives(dof_values.data(),
+ internal::do_function_derivatives(make_array_view(dof_values.begin(),
+ dof_values.end()),
this->finite_element_output.shape_gradients,
gradients);
}
Vector<Number> dof_values(dofs_per_cell);
present_cell.get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_derivatives(
- dof_values.begin(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_gradients,
*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_derivatives(
- dof_values.data(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_gradients,
*fe,
this->finite_element_output.shape_function_to_row_table,
// 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_derivatives(dof_values.begin(),
+ internal::do_function_derivatives(make_array_view(dof_values.begin(),
+ dof_values.end()),
this->finite_element_output.shape_hessians,
hessians);
}
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_derivatives(dof_values.data(),
+ internal::do_function_derivatives(make_array_view(dof_values.begin(),
+ dof_values.end()),
this->finite_element_output.shape_hessians,
hessians);
}
Vector<Number> dof_values(dofs_per_cell);
present_cell.get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_derivatives(
- dof_values.begin(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_hessians,
*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_derivatives(
- dof_values.data(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_hessians,
*fe,
this->finite_element_output.shape_function_to_row_table,
Vector<Number> dof_values(dofs_per_cell);
present_cell.get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_derivatives(
- dof_values.begin(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_3rd_derivatives,
third_derivatives);
}
for (unsigned int i = 0; i < dofs_per_cell; ++i)
dof_values[i] = internal::get_vector_element(fe_function, indices[i]);
internal::do_function_derivatives(
- dof_values.data(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_3rd_derivatives,
third_derivatives);
}
Vector<Number> dof_values(dofs_per_cell);
present_cell.get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_derivatives(
- dof_values.begin(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_3rd_derivatives,
*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_derivatives(
- dof_values.data(),
+ make_array_view(dof_values.begin(), dof_values.end()),
this->finite_element_output.shape_3rd_derivatives,
*fe,
this->finite_element_output.shape_function_to_row_table,