- // @whattodo TODO: To return functionality for complex numbers, this
- // needs to be templated with Number and instantiated for
- // REAL_SERIAL_VECTORS+double and
- // COMPLEX_SERIAL_VECTORS+complex<double>
- template <int dim, class InVector, class OutVector, int spacedim>
+ // @TODO[TY] also enable instantiation for COMPLEX_SERIAL_VECTORS and std::complex<double>
+ template <int dim, class InVector, class OutVector, int spacedim, typename number>
void
interpolate (const DoFHandler<dim,spacedim> &dof_1,
const DoFHandler<dim,spacedim> &dof_2,
- const FullMatrix<double> &transfer, // <- FullMatrix<std::complex>
+ const FullMatrix<number> &transfer,
const InVector &data_1,
OutVector &data_2)
{
- Vector<double> cell_data_1(dof_1.get_fe().dofs_per_cell); // <- Vector<std::complex>
- Vector<double> cell_data_2(dof_2.get_fe().dofs_per_cell); // <- Vector<std::complex>
+ Vector<number> cell_data_1(dof_1.get_fe().dofs_per_cell);
+ Vector<number> cell_data_2(dof_2.get_fe().dofs_per_cell);
std::vector<short unsigned int> touch_count (dof_2.n_dofs(), 0); //TODO: check on datatype... kinda strange (UK)
std::vector<types::global_dof_index> local_dof_indices (dof_2.get_fe().dofs_per_cell);
const Function<deal_II_space_dimension>&,
VEC&);
+ \}
+#endif
+ }
+
+
+for (VEC : REAL_SERIAL_VECTORS ; deal_II_dimension : DIMENSIONS; deal_II_space_dimension : SPACE_DIMENSIONS; NUMBER : double)
+ {
+#if deal_II_dimension <= deal_II_space_dimension
+ namespace VectorTools \{
+
template
void interpolate
(const DoFHandler<deal_II_dimension,deal_II_space_dimension>&,
const DoFHandler<deal_II_dimension,deal_II_space_dimension>&,
- const FullMatrix<double>&,
+ const FullMatrix<NUMBER>&,
const VEC&,
VEC&);