/**
* This is a rather specialized function used during the construction of
* finite element objects. It is used to build the basis of shape functions
- * for an element given a set of polynomials and interpolation points. The
+ * for an element, given a set of polynomials and interpolation points. The
* function is only implemented for finite elements with exactly @p dim
* vector components. In particular, this applies to classes derived from
* the FE_PolyTensor class.
* that returns a scalar.
* - That the finite element has exactly @p dim vector components.
* - That the function $f_j$ is given by whatever the element implements
- * through the FiniteElement::interpolate() function.
+ * through the FiniteElement::convert_generalized_support_point_values_to_nodal_values()
+ * function.
*
* @param fe The finite element for which the operations above are to be
* performed.
// We need the values of the polynomials in all generalized support points.
// This function specifically works for the case where shape functions
// have 'dim' vector components, so allocate that much space
- std::vector<std::vector<double> >
- values (dim, std::vector<double>(points.size()));
+ std::vector<Vector<double> >
+ values (points.size(), Vector<double>(dim));
// In this vector, we store the
// result of the interpolation
for (unsigned int k=0; k<points.size(); ++k)
for (unsigned int d=0; d<dim; ++d)
{
- values[d][k] = fe.shape_value_component(i, points[k], d);
- Assert (numbers::is_finite(values[d][k]), ExcInternalError());
+ values[k][d] = fe.shape_value_component(i, points[k], d);
+ Assert (numbers::is_finite(values[k][d]), ExcInternalError());
}
- fe.interpolate(local_dofs, values);
+ fe.convert_generalized_support_point_values_to_nodal_values(values,
+ local_dofs);
// Enter the interpolated dofs into the matrix
for (unsigned int j=0; j<n_dofs; ++j)