#endif
-//////////////////////////////////////////////////////////////////////
-
-
-//TODO[GK]: this function needs to go into a .all_dimensions.cc file
-template <class VECTOR>
-void
-MGSmootherContinuous<VECTOR>::set_zero_interior_boundary (const unsigned int level,
- VECTOR& u) const
-{
- if (level==0)
- return;
- else
- for (std::vector<unsigned int>::const_iterator p=interior_boundary_dofs[level-1].begin();
- p!=interior_boundary_dofs[level-1].end(); ++p)
- u(*p) = 0;
-}
-
-//////////////////////////////////////////////////////////////////////
-
// explicit instantiations
const unsigned int);
#endif
-template
-void MGSmootherContinuous<Vector<double> >::set_zero_interior_boundary (
- const unsigned int,
- Vector<double>&) const;
-template
-void MGSmootherContinuous<Vector<float> >::set_zero_interior_boundary (
- const unsigned int,
- Vector<float>&) const;
-template
-void MGSmootherContinuous<BlockVector<double> >::set_zero_interior_boundary (
- const unsigned int,
- BlockVector<double>&) const;
-template
-void MGSmootherContinuous<BlockVector<float> >::set_zero_interior_boundary (
- const unsigned int,
- BlockVector<float>&) const;
#include <lac/sparse_matrix.h>
#include <lac/block_sparse_matrix.h>
#include <multigrid/mg_transfer.h>
+#include <multigrid/mg_smoother.h>
#include <multigrid/mg_transfer.templates.h>
#include <multigrid/multigrid.templates.h>
}
+template <class VECTOR>
+void
+MGSmootherContinuous<VECTOR>::set_zero_interior_boundary (
+ const unsigned int level,
+ VECTOR& u) const
+{
+ if (level==0)
+ return;
+ else
+ for (std::vector<unsigned int>::const_iterator p=interior_boundary_dofs[level-1].begin();
+ p!=interior_boundary_dofs[level-1].end(); ++p)
+ u(*p) = 0;
+}
+
+
// Explicit instantiations
template class Multigrid<Vector<float> >;
template class MGTransferBlock<double>;
template class MGTransferSelect<float>;
template class MGTransferSelect<double>;
+
+template
+void MGSmootherContinuous<Vector<double> >::set_zero_interior_boundary (
+ const unsigned int, Vector<double>&) const;
+template
+void MGSmootherContinuous<Vector<float> >::set_zero_interior_boundary (
+ const unsigned int, Vector<float>&) const;
+template
+void MGSmootherContinuous<BlockVector<double> >::set_zero_interior_boundary (
+ const unsigned int, BlockVector<double>&) const;
+template
+void MGSmootherContinuous<BlockVector<float> >::set_zero_interior_boundary (
+ const unsigned int, BlockVector<float>&) const;