*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void get_function_values (const InputVector &fe_function,
- std::vector<number> &values) const;
+ std::vector<typename InputVector::value_type> &values) const;
/**
* This function does the same as the other get_function_values(), but
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void get_function_values (const InputVector &fe_function,
- std::vector<Vector<number> > &values) const;
+ std::vector<Vector<typename InputVector::value_type> > &values) const;
/**
* Generate function values from an arbitrary vector.
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void get_function_values (const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<number> &values) const;
+ std::vector<typename InputVector::value_type> &values) const;
/**
* Generate vector function values from an arbitrary vector.
*
* @dealiiRequiresUpdateFlags{update_values}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void get_function_values (const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Vector<number> > &values) const;
+ std::vector<Vector<typename InputVector::value_type> > &values) const;
/**
template <class InputVector>
void get_function_values (const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- VectorSlice<std::vector<std::vector<double> > > values,
+ VectorSlice<std::vector<std::vector<typename InputVector::value_type> > > values,
const bool quadrature_points_fastest) const;
//@}
*/
template <class InputVector>
void get_function_gradients (const InputVector &fe_function,
- std::vector<Tensor<1,spacedim> > &gradients) const;
+ std::vector<Tensor<1,spacedim,typename InputVector::value_type> > &gradients) const;
/**
* This function does the same as the other get_function_gradients(), but
*/
template <class InputVector>
void get_function_gradients (const InputVector &fe_function,
- std::vector<std::vector<Tensor<1,spacedim> > > &gradients) const;
+ std::vector<std::vector<Tensor<1,spacedim,typename InputVector::value_type> > > &gradients) const;
/**
* Function gradient access with more flexibility. See get_function_values()
template <class InputVector>
void get_function_gradients (const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Tensor<1,spacedim> > &gradients) const;
+ std::vector<Tensor<1,spacedim,typename InputVector::value_type> > &gradients) const;
/**
* Function gradient access with more flexibility. See get_function_values()
template <class InputVector>
void get_function_gradients (const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- VectorSlice<std::vector<std::vector<Tensor<1,spacedim> > > > gradients,
+ VectorSlice<std::vector<std::vector<Tensor<1,spacedim,typename InputVector::value_type> > > > gradients,
bool quadrature_points_fastest = false) const;
//@}
template <class InputVector>
void
get_function_hessians (const InputVector &fe_function,
- std::vector<Tensor<2,spacedim> > &hessians) const;
+ std::vector<Tensor<2,spacedim,typename InputVector::value_type> > &hessians) const;
/**
* This function does the same as the other get_function_hessians(), but
template <class InputVector>
void
get_function_hessians (const InputVector &fe_function,
- std::vector<std::vector<Tensor<2,spacedim> > > &hessians,
+ std::vector<std::vector<Tensor<2,spacedim,typename InputVector::value_type> > > &hessians,
bool quadrature_points_fastest = false) const;
/**
void get_function_hessians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Tensor<2,spacedim> > &hessians) const;
+ std::vector<Tensor<2,spacedim,typename InputVector::value_type> > &hessians) const;
/**
* Access to the second derivatives of a function with more flexibility. See
void get_function_hessians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- VectorSlice<std::vector<std::vector<Tensor<2,spacedim> > > > hessians,
+ VectorSlice<std::vector<std::vector<Tensor<2,spacedim,typename InputVector::value_type> > > > hessians,
bool quadrature_points_fastest = false) const;
/**
*
* @dealiiRequiresUpdateFlags{update_hessians}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void
get_function_laplacians (const InputVector &fe_function,
- std::vector<number> &laplacians) const;
+ std::vector<typename InputVector::value_type> &laplacians) const;
/**
* This function does the same as the other get_function_laplacians(), but
*
* @dealiiRequiresUpdateFlags{update_hessians}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void
get_function_laplacians (const InputVector &fe_function,
- std::vector<Vector<number> > &laplacians) const;
+ std::vector<Vector<typename InputVector::value_type> > &laplacians) const;
/**
* Access to the second derivatives of a function with more flexibility. See
*
* @dealiiRequiresUpdateFlags{update_hessians}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void get_function_laplacians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<number> &laplacians) const;
+ std::vector<typename InputVector::value_type> &laplacians) const;
/**
* Access to the second derivatives of a function with more flexibility. See
*
* @dealiiRequiresUpdateFlags{update_hessians}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void get_function_laplacians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Vector<number> > &laplacians) const;
+ std::vector<Vector<typename InputVector::value_type> > &laplacians) const;
/**
* Access to the second derivatives of a function with more flexibility. See
*
* @dealiiRequiresUpdateFlags{update_hessians}
*/
- template <class InputVector, typename number>
+ template <class InputVector>
void get_function_laplacians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<std::vector<number> > &laplacians,
+ std::vector<std::vector<typename InputVector::value_type> > &laplacians,
bool quadrature_points_fastest = false) const;
//@}
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_values (
const InputVector &fe_function,
- std::vector<number> &values) const
+ std::vector<typename InputVector::value_type> &values) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_values,
ExcAccessToUninitializedField("update_values"));
AssertDimension (fe->n_components(), 1);
present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_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(), this->shape_values,
values);
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_values (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<number> &values) const
+ std::vector<typename InputVector::value_type> &values) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_values,
ExcAccessToUninitializedField("update_values"));
AssertDimension (fe->n_components(), 1);
// avoid allocation when the local size is small enough
if (dofs_per_cell <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_values(&dof_values[0], this->shape_values, values);
}
else
{
- Vector<double> dof_values(dofs_per_cell);
+ Vector<Number> dof_values(dofs_per_cell);
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_values(dof_values.begin(), this->shape_values,
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_values (
const InputVector &fe_function,
- std::vector<Vector<number> > &values) const
+ std::vector<Vector<typename InputVector::value_type> > &values) const
{
+ typedef typename InputVector::value_type Number;
Assert (present_cell.get() != 0,
ExcMessage ("FEValues object is not reinit'ed to any cell"));
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_cell);
+ Vector<Number> dof_values (dofs_per_cell);
present_cell->get_interpolated_dof_values(fe_function, dof_values);
VectorSlice<std::vector<Vector<number> > > val(values);
internal::do_function_values(dof_values.begin(), this->shape_values, *fe,
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_values (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Vector<number> > &values) const
+ std::vector<Vector<typename InputVector::value_type> > &values) const
{
+ typedef typename InputVector::value_type Number;
// 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,
VectorSlice<std::vector<Vector<number> > > val(values);
if (indices.size() <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_values(&dof_values[0], this->shape_values, *fe,
}
else
{
- Vector<double> dof_values(100);
+ Vector<Number> dof_values(100);
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_values(dof_values.begin(), this->shape_values, *fe,
void FEValuesBase<dim,spacedim>::get_function_values (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- VectorSlice<std::vector<std::vector<double> > > values,
+ VectorSlice<std::vector<std::vector<typename InputVector::value_type> > > values,
bool quadrature_points_fastest) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_values,
ExcAccessToUninitializedField("update_values"));
if (indices.size() <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_values(&dof_values[0], this->shape_values, *fe,
}
else
{
- Vector<double> dof_values(indices.size());
+ Vector<Number> dof_values(indices.size());
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_values(dof_values.begin(), this->shape_values, *fe,
void
FEValuesBase<dim,spacedim>::get_function_gradients (
const InputVector &fe_function,
- std::vector<Tensor<1,spacedim> > &gradients) const
+ std::vector<Tensor<1,spacedim,typename InputVector::value_type> > &gradients) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_gradients,
ExcAccessToUninitializedField("update_gradients"));
AssertDimension (fe->n_components(), 1);
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_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(), this->shape_gradients,
gradients);
void FEValuesBase<dim,spacedim>::get_function_gradients (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Tensor<1,spacedim> > &gradients) const
+ std::vector<Tensor<1,spacedim,typename InputVector::value_type> > &gradients) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_gradients,
ExcAccessToUninitializedField("update_gradients"));
AssertDimension (fe->n_components(), 1);
AssertDimension (indices.size(), dofs_per_cell);
if (dofs_per_cell <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(&dof_values[0], this->shape_gradients,
}
else
{
- Vector<double> dof_values(dofs_per_cell);
+ Vector<Number> dof_values(dofs_per_cell);
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(dof_values.begin(), this->shape_gradients,
void
FEValuesBase<dim,spacedim>::get_function_gradients (
const InputVector &fe_function,
- std::vector<std::vector<Tensor<1,spacedim> > > &gradients) const
+ std::vector<std::vector<Tensor<1,spacedim,typename InputVector::value_type> > > &gradients) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_gradients,
ExcAccessToUninitializedField("update_gradients"));
Assert (present_cell.get() != 0,
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_cell);
+ Vector<Number> dof_values (dofs_per_cell);
present_cell->get_interpolated_dof_values(fe_function, dof_values);
- VectorSlice<std::vector<std::vector<Tensor<1,spacedim> > > > grads(gradients);
+ VectorSlice<std::vector<std::vector<Tensor<1,spacedim,Number> > > > grads(gradients);
internal::do_function_derivatives(dof_values.begin(), this->shape_gradients,
*fe, this->shape_function_to_row_table,
grads);
void FEValuesBase<dim,spacedim>::get_function_gradients (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- VectorSlice<std::vector<std::vector<Tensor<1,spacedim> > > > gradients,
+ VectorSlice<std::vector<std::vector<Tensor<1,spacedim,typename InputVector::value_type> > > > gradients,
bool quadrature_points_fastest) const
{
+ typedef typename InputVector::value_type Number;
// 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,
if (indices.size() <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(&dof_values[0], this->shape_gradients,
}
else
{
- Vector<double> dof_values(indices.size());
+ Vector<Number> dof_values(indices.size());
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(dof_values.begin(),this->shape_gradients,
void
FEValuesBase<dim,spacedim>::
get_function_hessians (const InputVector &fe_function,
- std::vector<Tensor<2,spacedim> > &hessians) const
+ std::vector<Tensor<2,spacedim,typename InputVector::value_type> > &hessians) const
{
+ typedef typename InputVector::value_type Number;
AssertDimension (fe->n_components(), 1);
Assert (this->update_flags & update_hessians,
ExcAccessToUninitializedField("update_hessians"));
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_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(), this->shape_hessians,
hessians);
void FEValuesBase<dim,spacedim>::get_function_hessians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Tensor<2,spacedim> > &hessians) const
+ std::vector<Tensor<2,spacedim,typename InputVector::value_type> > &hessians) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_hessians,
ExcAccessToUninitializedField("update_hessians"));
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
AssertDimension (indices.size(), dofs_per_cell);
if (dofs_per_cell <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(&dof_values[0], this->shape_hessians,
}
else
{
- Vector<double> dof_values(dofs_per_cell);
+ Vector<Number> dof_values(dofs_per_cell);
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(dof_values.begin(), this->shape_hessians,
void
FEValuesBase<dim,spacedim>::
get_function_hessians (const InputVector &fe_function,
- std::vector<std::vector<Tensor<2,spacedim> > > &hessians,
+ std::vector<std::vector<Tensor<2,spacedim,typename InputVector::value_type> > > &hessians,
bool quadrature_points_fastest) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_hessians,
ExcAccessToUninitializedField("update_hessians"));
Assert (present_cell.get() != 0,
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_cell);
+ Vector<Number> dof_values (dofs_per_cell);
present_cell->get_interpolated_dof_values(fe_function, dof_values);
- VectorSlice<std::vector<std::vector<Tensor<2,spacedim> > > > hes(hessians);
+ VectorSlice<std::vector<std::vector<Tensor<2,spacedim,Number> > > > hes(hessians);
internal::do_function_derivatives(dof_values.begin(), this->shape_hessians,
*fe, this->shape_function_to_row_table,
hes, quadrature_points_fastest);
void FEValuesBase<dim, spacedim>::get_function_hessians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- VectorSlice<std::vector<std::vector<Tensor<2,spacedim> > > > hessians,
+ VectorSlice<std::vector<std::vector<Tensor<2,spacedim,typename InputVector::value_type> > > > hessians,
bool quadrature_points_fastest) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_hessians,
ExcAccessToUninitializedField("update_hessians"));
Assert (indices.size() % dofs_per_cell == 0,
ExcNotMultiple(indices.size(), dofs_per_cell));
if (indices.size() <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(&dof_values[0], this->shape_hessians,
}
else
{
- Vector<double> dof_values(indices.size());
+ Vector<Number> dof_values(indices.size());
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_derivatives(dof_values.begin(),this->shape_hessians,
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_laplacians (
const InputVector &fe_function,
- std::vector<number> &laplacians) const
+ std::vector<typename InputVector::value_type> &laplacians) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_hessians,
ExcAccessToUninitializedField("update_hessians"));
AssertDimension (fe->n_components(), 1);
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_cell);
+ Vector<Number> dof_values (dofs_per_cell);
present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_laplacians(dof_values.begin(), this->shape_hessians,
laplacians);
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_laplacians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<number> &laplacians) const
+ std::vector<typename InputVector::value_type> &laplacians) const
{
+ typedef typename InputVector::value_type Number;
Assert (this->update_flags & update_hessians,
ExcAccessToUninitializedField("update_hessians"));
AssertDimension (fe->n_components(), 1);
AssertDimension (indices.size(), dofs_per_cell);
if (dofs_per_cell <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_laplacians(&dof_values[0], this->shape_hessians,
}
else
{
- Vector<double> dof_values(dofs_per_cell);
+ Vector<Number> dof_values(dofs_per_cell);
for (unsigned int i=0; i<dofs_per_cell; ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_laplacians(dof_values.begin(), this->shape_hessians,
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_laplacians (
const InputVector &fe_function,
- std::vector<Vector<number> > &laplacians) const
+ std::vector<Vector<typename InputVector::value_type> > &laplacians) const
{
+ typedef typename InputVector::value_type Number;
Assert (present_cell.get() != 0,
ExcMessage ("FEValues object is not reinit'ed to any cell"));
Assert (this->update_flags & update_hessians,
AssertDimension (fe_function.size(), present_cell->n_dofs_for_dof_handler());
// get function values of dofs on this cell
- Vector<double> dof_values (dofs_per_cell);
+ Vector<Number> dof_values (dofs_per_cell);
present_cell->get_interpolated_dof_values(fe_function, dof_values);
internal::do_function_laplacians(dof_values.begin(), this->shape_hessians,
*fe, this->shape_function_to_row_table,
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_laplacians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<Vector<number> > &laplacians) const
+ std::vector<Vector<typename InputVector::value_type> > &laplacians) const
{
+ typedef typename InputVector::value_type Number;
// 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_hessians"));
if (indices.size() <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_laplacians(&dof_values[0], this->shape_hessians,
}
else
{
- Vector<double> dof_values(indices.size());
+ Vector<Number> dof_values(indices.size());
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_laplacians(dof_values.begin(),this->shape_hessians,
template <int dim, int spacedim>
-template <class InputVector, typename number>
+template <class InputVector>
void FEValuesBase<dim,spacedim>::get_function_laplacians (
const InputVector &fe_function,
const VectorSlice<const std::vector<types::global_dof_index> > &indices,
- std::vector<std::vector<number> > &laplacians,
+ std::vector<std::vector<typename InputVector::value_type> > &laplacians,
bool quadrature_points_fastest) const
{
+ typedef typename InputVector::value_type number;
Assert (indices.size() % dofs_per_cell == 0,
ExcNotMultiple(indices.size(), dofs_per_cell));
Assert (this->update_flags & update_hessians,
ExcAccessToUninitializedField("update_hessians"));
if (indices.size() <= 100)
{
- double dof_values[100];
+ Number dof_values[100];
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_laplacians(&dof_values[0], this->shape_hessians,
}
else
{
- Vector<double> dof_values(indices.size());
+ Vector<Number> dof_values(indices.size());
for (unsigned int i=0; i<indices.size(); ++i)
dof_values[i] = get_vector_element (fe_function, indices[i]);
internal::do_function_laplacians(dof_values.begin(),this->shape_hessians,