--- /dev/null
+//---------------------------------------------------------------------------
+// $Id: full_matrix.double.cc 15518 2007-11-18 22:31:00Z bangerth $
+// Version: $Name$
+//
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
+//
+// This file is subject to QPL and may not be distributed
+// without copyright and license information. Please refer
+// to the file deal.II/doc/license.html for the text and
+// further information on this license.
+//
+//---------------------------------------------------------------------------
+
+
+#include <lac/full_matrix.templates.h>
+#include <base/logstream.h>
+
+DEAL_II_NAMESPACE_OPEN
+
+#include "full_matrix.inst"
+
+
+// do a few functions that currently don't fit the scheme because they have
+// two template arguments that need to be different (the case of same
+// arguments is covered by the default copy constructor and copy operator that
+// is declared separately)
+
+#define TEMPL_OP_EQ(S1,S2) \
+ template FullMatrix<S1>& FullMatrix<S1>::operator = \
+ (const FullMatrix<S2>&)
+
+TEMPL_OP_EQ(double,float);
+TEMPL_OP_EQ(float,double);
+
+TEMPL_OP_EQ(long double,double);
+TEMPL_OP_EQ(double,long double);
+
+TEMPL_OP_EQ(long double,float);
+TEMPL_OP_EQ(float,long double);
+
+
+TEMPL_OP_EQ(std::complex<double>,std::complex<float>);
+TEMPL_OP_EQ(std::complex<float>,std::complex<double>);
+
+TEMPL_OP_EQ(std::complex<long double>,std::complex<double>);
+TEMPL_OP_EQ(std::complex<double>,std::complex<long double>);
+
+TEMPL_OP_EQ(std::complex<long double>,std::complex<float>);
+TEMPL_OP_EQ(std::complex<float>,std::complex<long double>);
+
+DEAL_II_NAMESPACE_CLOSE
+++ /dev/null
-//---------------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//---------------------------------------------------------------------------
-
-
-#include <lac/full_matrix.templates.h>
-#include <base/logstream.h>
-
-DEAL_II_NAMESPACE_OPEN
-
-#define TYPEMAT double
-
-template class FullMatrix<TYPEMAT>;
-
-template void FullMatrix<TYPEMAT>::print(
- LogStream&, const unsigned int, const unsigned int) const;
-template void FullMatrix<TYPEMAT>::print(
- std::ostream&, const unsigned int, const unsigned int) const;
-
-template FullMatrix<TYPEMAT>& FullMatrix<TYPEMAT>::operator =(
- const FullMatrix<float>&);
-
-#define TYPEMAT2 double
-
-template void FullMatrix<TYPEMAT>::fill<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, double, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, double, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::mmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::Tmmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::add_diag<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::invert<TYPEMAT2> (const FullMatrix<TYPEMAT2>&);
-
-#define TYPEVEC double
-#define TYPERES double
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template double FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-#undef TYPEVEC
-#define TYPEVEC float
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template double FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-
-#undef TYPERES
-#define TYPERES float
-
-template
-double
-FullMatrix<TYPEMAT>::residual<TYPEVEC,TYPERES>(Vector<TYPEVEC>&,
- const Vector<TYPEVEC>&,
- const Vector<TYPERES>&) const;
-
-
-
-#undef TYPEMAT
-
-#define TYPEMAT std::complex<double>
-
-template class FullMatrix<TYPEMAT>;
-
-template void FullMatrix<TYPEMAT>::print(
- LogStream&, const unsigned int, const unsigned int) const;
-template void FullMatrix<TYPEMAT>::print(
- std::ostream&, const unsigned int, const unsigned int) const;
-
-template FullMatrix<TYPEMAT>& FullMatrix<TYPEMAT>::operator =(
- const FullMatrix<std::complex<float> >&);
-
-#undef TYPEMAT2
-#define TYPEMAT2 std::complex<double>
-
-template void FullMatrix<TYPEMAT>::fill<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, std::complex<double>, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, std::complex<double>, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::mmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::Tmmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::add_diag<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::invert<TYPEMAT2> (const FullMatrix<TYPEMAT2>&);
-
-
-#undef TYPEVEC
-#undef TYPERES
-#define TYPEVEC std::complex<double>
-#define TYPERES std::complex<double>
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template std::complex<double> FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-#undef TYPEVEC
-#define TYPEVEC std::complex<float>
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template std::complex<double> FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-
-#undef TYPERES
-#define TYPERES std::complex<float>
-
-template
-std::complex<double>
-FullMatrix<TYPEMAT>::residual<TYPEVEC,TYPERES>(Vector<TYPEVEC>&,
- const Vector<TYPEVEC>&,
- const Vector<TYPERES>&) const;
-
-
-DEAL_II_NAMESPACE_CLOSE
+++ /dev/null
-//---------------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//---------------------------------------------------------------------------
-
-
-#include <lac/full_matrix.templates.h>
-#include <base/logstream.h>
-
-DEAL_II_NAMESPACE_OPEN
-
-#define TYPEMAT float
-
-template class FullMatrix<TYPEMAT>;
-
-template void FullMatrix<TYPEMAT>::print(
- LogStream&, const unsigned int, const unsigned int) const;
-template void FullMatrix<TYPEMAT>::print(
- std::ostream&, const unsigned int, const unsigned int) const;
-
-template FullMatrix<TYPEMAT>& FullMatrix<TYPEMAT>::operator =(
- const FullMatrix<double>&);
-
-#define TYPEMAT2 float
-
-//template FullMatrix<TYPEMAT>& FullMatrix<TYPEMAT>::operator =<>(const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::fill<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, TYPEMAT, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, TYPEMAT, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::mmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::Tmmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::add_diag<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::invert<TYPEMAT2> (const FullMatrix<TYPEMAT2>&);
-
-#define TYPEVEC double
-#define TYPERES double
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template TYPEMAT FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-#undef TYPEVEC
-#define TYPEVEC float
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template TYPEMAT FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-
-#undef TYPERES
-#define TYPERES float
-
-template TYPEMAT FullMatrix<TYPEMAT>::residual<TYPEVEC,TYPERES>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-
-
-
-
-
-
-
-
-
-
-
-
-
-#undef TYPEMAT
-#undef TYPEMAT2
-#undef TYPEVEC
-#undef TYPERES
-
-#define TYPEMAT std::complex<float>
-
-template class FullMatrix<TYPEMAT>;
-
-template void FullMatrix<TYPEMAT>::print(
- LogStream&, const unsigned int, const unsigned int) const;
-template void FullMatrix<TYPEMAT>::print(
- std::ostream&, const unsigned int, const unsigned int) const;
-
-template FullMatrix<TYPEMAT>& FullMatrix<TYPEMAT>::operator =(
- const FullMatrix<std::complex<double> >&);
-
-#define TYPEMAT2 std::complex<float>
-
-//template FullMatrix<TYPEMAT>& FullMatrix<TYPEMAT>::operator =<>(const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::fill<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::add<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, TYPEMAT, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::Tadd<TYPEMAT2> (
- const FullMatrix<TYPEMAT2>&, TYPEMAT, unsigned, unsigned, unsigned, unsigned);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::equ<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&,
- const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::mmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::Tmmult<TYPEMAT2> (FullMatrix<TYPEMAT2>&, const FullMatrix<TYPEMAT2>&, const bool) const;
-template void FullMatrix<TYPEMAT>::add_diag<TYPEMAT2> (const TYPEMAT, const FullMatrix<TYPEMAT2>&);
-template void FullMatrix<TYPEMAT>::invert<TYPEMAT2> (const FullMatrix<TYPEMAT2>&);
-
-#define TYPEVEC std::complex<double>
-#define TYPERES std::complex<double>
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template TYPEMAT FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-#undef TYPEVEC
-#define TYPEVEC std::complex<float>
-
-template void FullMatrix<TYPEMAT>::fill_permutation<TYPEVEC> (
- const FullMatrix<TYPEVEC>&,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&);
-template void FullMatrix<TYPEMAT>::vmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template void FullMatrix<TYPEMAT>::Tvmult<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, bool) const;
-template TYPEMAT FullMatrix<TYPEMAT>::residual<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_norm_square<TYPEVEC> (
- const Vector<TYPEVEC> &) const;
-template TYPEVEC FullMatrix<TYPEMAT>::matrix_scalar_product<TYPEVEC>(
- const Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::forward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template void FullMatrix<TYPEMAT>::backward<TYPEVEC>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&) const;
-template
-void FullMatrix<TYPEMAT>::precondition_Jacobi<TYPEVEC> (
- Vector<TYPEVEC> &, const Vector<TYPEVEC> &, const TYPEMAT) const;
-
-
-#undef TYPERES
-#define TYPERES std::complex<float>
-
-template TYPEMAT FullMatrix<TYPEMAT>::residual<TYPEVEC,TYPERES>(
- Vector<TYPEVEC>&, const Vector<TYPEVEC>&, const Vector<TYPERES>&) const;
-
-DEAL_II_NAMESPACE_CLOSE
--- /dev/null
+//---------------------------------------------------------------------------
+// $Id: sparse_matrix.double.cc 14038 2006-10-23 02:46:34Z bangerth $
+// Version: $Name$
+//
+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
+//
+// This file is subject to QPL and may not be distributed
+// without copyright and license information. Please refer
+// to the file deal.II/doc/license.html for the text and
+// further information on this license.
+//
+//---------------------------------------------------------------------------
+
+
+#include <lac/sparse_matrix.templates.h>
+#include <lac/block_vector.h>
+
+DEAL_II_NAMESPACE_OPEN
+#include "sparse_matrix.inst"
+DEAL_II_NAMESPACE_CLOSE
+++ /dev/null
-//---------------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//---------------------------------------------------------------------------
-
-
-#include <lac/sparse_matrix.templates.h>
-#include <lac/block_vector.h>
-
-#define TYPEMAT double
-
-DEAL_II_NAMESPACE_OPEN
-template class SparseMatrix<TYPEMAT>;
-DEAL_II_NAMESPACE_CLOSE
-
-#define TYPE2 float
-#include "sparse_matrix_matrix.in.h"
-#undef TYPE2
-
-#define TYPE2 double
-#include "sparse_matrix_matrix.in.h"
-#undef TYPE2
-
-#define TYPEVEC float
-#include "sparse_matrix_vector.in.h"
-#undef TYPEVEC
-
-#define TYPEVEC double
-#include "sparse_matrix_vector.in.h"
-#undef TYPEVEC
-
- // a prerelease of gcc3.0 fails to
- // compile this due to long double
-// #undef TYPEVEC
-// #define TYPEVEC long double
-
-// #include <lac/sparse_matrix.2.templates>
-
-DEAL_II_NAMESPACE_OPEN
-
-#undef TYPEMAT
-
-
-// instantiate a few more functions. this whole mess in this file (and the
-// other sparse_matrix.* files) really needs to be cleaned up a little
-template void SparseMatrix<double>::
-vmult (Vector<double> &, const Vector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult (Vector<double> &, const Vector<float> &) const;
-template void SparseMatrix<double>::
-vmult_add (Vector<double> &, const Vector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (Vector<double> &, const Vector<float> &) const;
-
-template void SparseMatrix<double>::
-vmult (Vector<float> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult (Vector<float> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-vmult_add (Vector<float> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (Vector<float> &, const Vector<double> &) const;
-
-
-template void SparseMatrix<double>::
-vmult (BlockVector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult (BlockVector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<double>::
-vmult_add (BlockVector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (BlockVector<double> &, const BlockVector<float> &) const;
-
-template void SparseMatrix<double>::
-vmult (BlockVector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult (BlockVector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-vmult_add (BlockVector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (BlockVector<float> &, const BlockVector<double> &) const;
-
-
-template void SparseMatrix<double>::
-vmult (Vector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult (Vector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<double>::
-vmult_add (Vector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (Vector<double> &, const BlockVector<float> &) const;
-
-template void SparseMatrix<double>::
-vmult (BlockVector<float> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult (BlockVector<float> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-vmult_add (BlockVector<float> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (BlockVector<float> &, const Vector<double> &) const;
-
-
-template void SparseMatrix<double>::
-vmult (BlockVector<double> &, const Vector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult (BlockVector<double> &, const Vector<float> &) const;
-template void SparseMatrix<double>::
-vmult_add (BlockVector<double> &, const Vector<float> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (BlockVector<double> &, const Vector<float> &) const;
-
-template void SparseMatrix<double>::
-vmult (Vector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult (Vector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-vmult_add (Vector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (Vector<float> &, const BlockVector<double> &) const;
-
-
-template void SparseMatrix<double>::
-vmult (Vector<double> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult (Vector<double> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-vmult_add (Vector<double> &, const BlockVector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (Vector<double> &, const BlockVector<double> &) const;
-
-template void SparseMatrix<double>::
-vmult (BlockVector<double> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult (BlockVector<double> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-vmult_add (BlockVector<double> &, const Vector<double> &) const;
-template void SparseMatrix<double>::
-Tvmult_add (BlockVector<double> &, const Vector<double> &) const;
-
-DEAL_II_NAMESPACE_CLOSE
+++ /dev/null
-//---------------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//---------------------------------------------------------------------------
-
-
-#include <lac/sparse_matrix.templates.h>
-#include <lac/block_vector.h>
-
-#define TYPEMAT float
-
-DEAL_II_NAMESPACE_OPEN
-template class SparseMatrix<TYPEMAT>;
-DEAL_II_NAMESPACE_CLOSE
-
-#define TYPE2 float
-#include "sparse_matrix_matrix.in.h"
-#undef TYPE2
-
-#define TYPE2 double
-#include "sparse_matrix_matrix.in.h"
-#undef TYPE2
-
-#define TYPEVEC float
-#include "sparse_matrix_vector.in.h"
-#undef TYPEVEC
-
-#define TYPEVEC double
-#include "sparse_matrix_vector.in.h"
-#undef TYPEVEC
-
- // a prerelease of gcc3.0 fails to
- // compile this due to long double
-// #undef TYPEVEC
-// #define TYPEVEC long double
-
-// #include <lac/sparse_matrix.2.templates>
-
-DEAL_II_NAMESPACE_OPEN
-
-#undef TYPEMAT
-
-
-// instantiate a few more functions. this whole mess in this file (and the
-// other sparse_matrix.* files) really needs to be cleaned up a little
-template void SparseMatrix<float>::
-vmult (Vector<double> &, const Vector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult (Vector<double> &, const Vector<float> &) const;
-template void SparseMatrix<float>::
-vmult_add (Vector<double> &, const Vector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (Vector<double> &, const Vector<float> &) const;
-
-template void SparseMatrix<float>::
-vmult (Vector<float> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult (Vector<float> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-vmult_add (Vector<float> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (Vector<float> &, const Vector<double> &) const;
-
-
-template void SparseMatrix<float>::
-vmult (BlockVector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult (BlockVector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<float>::
-vmult_add (BlockVector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (BlockVector<double> &, const BlockVector<float> &) const;
-
-template void SparseMatrix<float>::
-vmult (BlockVector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult (BlockVector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-vmult_add (BlockVector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (BlockVector<float> &, const BlockVector<double> &) const;
-
-
-template void SparseMatrix<float>::
-vmult (Vector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult (Vector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<float>::
-vmult_add (Vector<double> &, const BlockVector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (Vector<double> &, const BlockVector<float> &) const;
-
-template void SparseMatrix<float>::
-vmult (BlockVector<float> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult (BlockVector<float> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-vmult_add (BlockVector<float> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (BlockVector<float> &, const Vector<double> &) const;
-
-
-template void SparseMatrix<float>::
-vmult (BlockVector<double> &, const Vector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult (BlockVector<double> &, const Vector<float> &) const;
-template void SparseMatrix<float>::
-vmult_add (BlockVector<double> &, const Vector<float> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (BlockVector<double> &, const Vector<float> &) const;
-
-template void SparseMatrix<float>::
-vmult (Vector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult (Vector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-vmult_add (Vector<float> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (Vector<float> &, const BlockVector<double> &) const;
-
-
-template void SparseMatrix<float>::
-vmult (Vector<double> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult (Vector<double> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-vmult_add (Vector<double> &, const BlockVector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (Vector<double> &, const BlockVector<double> &) const;
-
-template void SparseMatrix<float>::
-vmult (BlockVector<double> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult (BlockVector<double> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-vmult_add (BlockVector<double> &, const Vector<double> &) const;
-template void SparseMatrix<float>::
-Tvmult_add (BlockVector<double> &, const Vector<double> &) const;
-
-DEAL_II_NAMESPACE_CLOSE
+++ /dev/null
-//---------------------------- sparse_matrix.2.templates ---------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2007 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//---------------------------- sparse_matrix.2.templates ---------------------------
-
-
-// Driver file for SparseMatrix functions with two types.
-
-// TYPEMAT and TYPE2 are defined in sparsematrix?.cc
-
-DEAL_II_NAMESPACE_OPEN
-
-template SparseMatrix<TYPEMAT> &
-SparseMatrix<TYPEMAT>::copy_from<TYPE2> (const SparseMatrix<TYPE2> &);
-
-template
-void SparseMatrix<TYPEMAT>::copy_from<TYPE2> (const FullMatrix<TYPE2> &);
-
-template void SparseMatrix<TYPEMAT>::add<TYPE2> (const TYPEMAT,
- const SparseMatrix<TYPE2> &);
-
-DEAL_II_NAMESPACE_CLOSE
+++ /dev/null
-//---------------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2006 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//---------------------------------------------------------------------------
-
-
-// Driver file for SparseMatrix functions with two types.
-
-// TYPEMAT and TYPEVEC are defined in sparsematrix?.cc
-
-DEAL_II_NAMESPACE_OPEN
-
-template void SparseMatrix<TYPEMAT>::
-vmult (Vector<TYPEVEC> &, const Vector<TYPEVEC> &) const;
-template void SparseMatrix<TYPEMAT>::
-Tvmult (Vector<TYPEVEC> &, const Vector<TYPEVEC> &) const;
-template void SparseMatrix<TYPEMAT>::
-vmult_add (Vector<TYPEVEC> &, const Vector<TYPEVEC> &) const;
-template void SparseMatrix<TYPEMAT>::
-Tvmult_add (Vector<TYPEVEC> &, const Vector<TYPEVEC> &) const;
-
-template void SparseMatrix<TYPEMAT>::
-vmult (BlockVector<TYPEVEC> &, const BlockVector<TYPEVEC> &) const;
-template void SparseMatrix<TYPEMAT>::
-Tvmult (BlockVector<TYPEVEC> &, const BlockVector<TYPEVEC> &) const;
-template void SparseMatrix<TYPEMAT>::
-vmult_add (BlockVector<TYPEVEC> &, const BlockVector<TYPEVEC> &) const;
-template void SparseMatrix<TYPEMAT>::
-Tvmult_add (BlockVector<TYPEVEC> &, const BlockVector<TYPEVEC> &) const;
-
-template TYPEVEC
-SparseMatrix<TYPEMAT>::
-matrix_norm_square<TYPEVEC> (const Vector<TYPEVEC> &) const;
-
-template TYPEVEC
-SparseMatrix<TYPEMAT>::
-matrix_scalar_product<TYPEVEC> (const Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &) const;
-
-template TYPEVEC SparseMatrix<TYPEMAT>::
-residual<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &) const;
-
-template void SparseMatrix<TYPEMAT>::
-precondition_SSOR<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const TYPEMAT) const;
-
-template void SparseMatrix<TYPEMAT>::
-precondition_SOR<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const TYPEMAT) const;
-
-template void SparseMatrix<TYPEMAT>::
-precondition_TSOR<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const TYPEMAT) const;
-
-template void SparseMatrix<TYPEMAT>::
-precondition_Jacobi<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const TYPEMAT) const;
-
-template void SparseMatrix<TYPEMAT>::
-SOR<TYPEVEC> (Vector<TYPEVEC> &,
- const TYPEMAT) const;
-template void SparseMatrix<TYPEMAT>::
-TSOR<TYPEVEC> (Vector<TYPEVEC> &,
- const TYPEMAT) const;
-template void SparseMatrix<TYPEMAT>::
-SSOR<TYPEVEC> (Vector<TYPEVEC> &,
- const TYPEMAT) const;
-template void SparseMatrix<TYPEMAT>::
-PSOR<TYPEVEC> (Vector<TYPEVEC> &,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&,
- const TYPEMAT) const;
-template void SparseMatrix<TYPEMAT>::
-TPSOR<TYPEVEC> (Vector<TYPEVEC> &,
- const std::vector<unsigned int>&,
- const std::vector<unsigned int>&,
- const TYPEMAT) const;
-template void SparseMatrix<TYPEMAT>::
-SOR_step<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const TYPEMAT) const;
-template void SparseMatrix<TYPEMAT>::
-TSOR_step<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const TYPEMAT) const;
-template void SparseMatrix<TYPEMAT>::
-SSOR_step<TYPEVEC> (Vector<TYPEVEC> &,
- const Vector<TYPEVEC> &,
- const TYPEMAT) const;
-
-DEAL_II_NAMESPACE_CLOSE
DEAL_II_NAMESPACE_OPEN
-// explicit instantiations
-template class Vector<double>;
+#include "vector.inst"
+
+// do a few functions that currently don't fit the scheme because they have
+// two template arguments that need to be different (the case of same
+// arguments is covered by the default copy constructor and copy operator that
+// is declared separately)
+
+#define TEMPL_COPY_CONSTRUCTOR(S1,S2) \
+ template Vector<S1>::Vector (const Vector<S2> &)
#ifndef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG
-template Vector<double>::Vector (const Vector<float> &);
-#endif
+TEMPL_COPY_CONSTRUCTOR(double,float);
+TEMPL_COPY_CONSTRUCTOR(float,double);
-template Vector<double>& Vector<double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<float>(const Vector<float>&);
-template bool Vector<double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<double>(const Vector<double>&) const;
-template bool Vector<double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<float>(const Vector<float>&) const;
-template double Vector<double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<float>(const Vector<float>&) const;
-template double Vector<double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<double>(const Vector<double>&) const;
-template void Vector<double>::reinit<double>(const Vector<double>&, const bool);
-template void Vector<double>::reinit<float>(const Vector<float>&, const bool);
-template void Vector<double>::equ<double>(const double, const Vector<double>&);
-template void Vector<double>::equ<float>(const double, const Vector<float>&);
-template void Vector<double>::scale<double>(const Vector<double>&);
-template void Vector<double>::scale<float>(const Vector<float>&);
+TEMPL_COPY_CONSTRUCTOR(long double,double);
+TEMPL_COPY_CONSTRUCTOR(double,long double);
-template class Vector<float>;
+TEMPL_COPY_CONSTRUCTOR(long double,float);
+TEMPL_COPY_CONSTRUCTOR(float,long double);
-#ifndef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG
-template Vector<float>::Vector (const Vector<double> &);
+
+TEMPL_COPY_CONSTRUCTOR(std::complex<double>,std::complex<float>);
+TEMPL_COPY_CONSTRUCTOR(std::complex<float>,std::complex<double>);
+
+TEMPL_COPY_CONSTRUCTOR(std::complex<long double>,std::complex<double>);
+TEMPL_COPY_CONSTRUCTOR(std::complex<double>,std::complex<long double>);
+
+TEMPL_COPY_CONSTRUCTOR(std::complex<long double>,std::complex<float>);
+TEMPL_COPY_CONSTRUCTOR(std::complex<float>,std::complex<long double>);
#endif
-template Vector<float>& Vector<float>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<double>(const Vector<double>&);
-template bool Vector<float>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<double>(const Vector<double>&) const;
-template bool Vector<float>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<float>(const Vector<float>&) const;
-template float Vector<float>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<float>(const Vector<float>&) const;
-template float Vector<float>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<double>(const Vector<double>&) const;
-template void Vector<float>::reinit<double>(const Vector<double>&, const bool);
-template void Vector<float>::reinit<float>(const Vector<float>&, const bool);
-template void Vector<float>::equ<double>(const float, const Vector<double>&);
-template void Vector<float>::equ<float>(const float, const Vector<float>&);
-template void Vector<float>::scale<double>(const Vector<double>&);
-template void Vector<float>::scale<float>(const Vector<float>&);
+#define TEMPL_OP_EQ(S1,S2) \
+ template \
+ Vector<S1>& \
+ Vector<S1>::DEAL_II_MEMBER_OP_TEMPLATE_INST \
+ operator=<S2>(const Vector<S2>&)
+TEMPL_OP_EQ(double,float);
+TEMPL_OP_EQ(float,double);
-// complex data types
-template class Vector<std::complex<double> >;
+TEMPL_OP_EQ(long double,double);
+TEMPL_OP_EQ(double,long double);
-#ifndef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG
-template Vector<std::complex<double> >::Vector (const Vector<std::complex<float> > &);
-#endif
+TEMPL_OP_EQ(long double,float);
+TEMPL_OP_EQ(float,long double);
-template Vector<std::complex<double> >& Vector<std::complex<double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<std::complex<float> >(const Vector<std::complex<float> >&);
-template bool Vector<std::complex<double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<std::complex<double> >(const Vector<std::complex<double> >&) const;
-template bool Vector<std::complex<double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<std::complex<float> >(const Vector<std::complex<float> >&) const;
-template std::complex<double> Vector<std::complex<double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<std::complex<float> >(const Vector<std::complex<float> >&) const;
-template std::complex<double> Vector<std::complex<double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<std::complex<double> >(const Vector<std::complex<double> >&) const;
-template void Vector<std::complex<double> >::reinit<std::complex<double> >(const Vector<std::complex<double> >&, const bool);
-template void Vector<std::complex<double> >::reinit<std::complex<float> >(const Vector<std::complex<float> >&, const bool);
-template void Vector<std::complex<double> >::equ<std::complex<double> >(const std::complex<double>, const Vector<std::complex<double> >&);
-template void Vector<std::complex<double> >::equ<std::complex<float> >(const std::complex<double>, const Vector<std::complex<float> >&);
-template void Vector<std::complex<double> >::scale<std::complex<double> >(const Vector<std::complex<double> >&);
-template void Vector<std::complex<double> >::scale<std::complex<float> >(const Vector<std::complex<float> >&);
-template class Vector<std::complex<float> >;
+TEMPL_OP_EQ(std::complex<double>,std::complex<float>);
+TEMPL_OP_EQ(std::complex<float>,std::complex<double>);
-#ifndef DEAL_II_EXPLICIT_CONSTRUCTOR_BUG
-template Vector<std::complex<float> >::Vector (const Vector<std::complex<double> > &);
-#endif
+TEMPL_OP_EQ(std::complex<long double>,std::complex<double>);
+TEMPL_OP_EQ(std::complex<double>,std::complex<long double>);
+
+TEMPL_OP_EQ(std::complex<long double>,std::complex<float>);
+TEMPL_OP_EQ(std::complex<float>,std::complex<long double>);
-template Vector<std::complex<float> >& Vector<std::complex<float> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<std::complex<double> >(const Vector<std::complex<double> >&);
-template bool Vector<std::complex<float> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<std::complex<double> >(const Vector<std::complex<double> >&) const;
-template bool Vector<std::complex<float> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator==<std::complex<float> >(const Vector<std::complex<float> >&) const;
-template std::complex<float> Vector<std::complex<float> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<std::complex<float> >(const Vector<std::complex<float> >&) const;
-template std::complex<float> Vector<std::complex<float> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator*<std::complex<double> >(const Vector<std::complex<double> >&) const;
-template void Vector<std::complex<float> >::reinit<std::complex<double> >(const Vector<std::complex<double> >&, const bool);
-template void Vector<std::complex<float> >::reinit<std::complex<float> >(const Vector<std::complex<float> >&, const bool);
-template void Vector<std::complex<float> >::equ<std::complex<double> >(const std::complex<float>, const Vector<std::complex<double> >&);
-template void Vector<std::complex<float> >::equ<std::complex<float> >(const std::complex<float>, const Vector<std::complex<float> >&);
-template void Vector<std::complex<float> >::scale<std::complex<double> >(const Vector<std::complex<double> >&);
-template void Vector<std::complex<float> >::scale<std::complex<float> >(const Vector<std::complex<float> >&);
DEAL_II_NAMESPACE_CLOSE
+++ /dev/null
-//---------------------------------------------------------------------------
-// $Id$
-// Version: $Name$
-//
-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 by the deal.II authors
-//
-// This file is subject to QPL and may not be distributed
-// without copyright and license information. Please refer
-// to the file deal.II/doc/license.html for the text and
-// further information on this license.
-//
-//---------------------------------------------------------------------------
-
-
-#include <lac/vector.templates.h>
-
-DEAL_II_NAMESPACE_OPEN
-
-// explicit instantiations for long double
-template class Vector<long double>;
-
-#if !defined(DEAL_II_EXPLICIT_CONSTRUCTOR_BUG) && !defined(DEAL_II_LONG_DOUBLE_LOOP_BUG)
-template Vector<long double>::Vector (const Vector<double> &);
-template Vector<long double>::Vector (const Vector<float> &);
-
-template Vector<double>::Vector (const Vector<long double> &);
-template Vector<float>::Vector (const Vector<long double> &);
-#endif
-
-template Vector<long double>& Vector<long double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<double>(const Vector<double>&);
-template Vector<long double>& Vector<long double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<float>(const Vector<float>&);
-template long double Vector<long double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<long double> (const Vector<long double> &) const;
-template long double Vector<long double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<double> (const Vector<double> &) const;
-template long double Vector<long double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<float> (const Vector<float> &) const;
-template void Vector<long double>::reinit<long double>(const Vector<long double>&, const bool);
-template void Vector<long double>::reinit<double>(const Vector<double>&, const bool);
-template void Vector<long double>::reinit<float>(const Vector<float>&, const bool);
-template void Vector<long double>::equ<long double>(const long double, const Vector<long double>&);
-template void Vector<long double>::equ<double>(const long double, const Vector<double>&);
-template void Vector<long double>::equ<float>(const long double, const Vector<float>&);
-
-template Vector<double>& Vector<double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<long double>(const Vector<long double>&);
-template double Vector<double>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<long double> (const Vector<long double> &) const;
-template void Vector<double>::reinit<long double>(const Vector<long double>&, const bool);
-template void Vector<double>::equ<long double>(const double, const Vector<long double>&);
-
-template Vector<float>& Vector<float>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<long double>(const Vector<long double>&);
-template float Vector<float>::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<long double> (const Vector<long double> &) const;
-template void Vector<float>::reinit<long double>(const Vector<long double>&, const bool);
-template void Vector<float>::equ<long double>(const float, const Vector<long double>&);
-
-
-// explicit instantiations for std::complex<long double>
-template class Vector<std::complex<long double> >;
-
-#if !defined(DEAL_II_EXPLICIT_CONSTRUCTOR_BUG) && !defined(DEAL_II_LONG_DOUBLE_LOOP_BUG)
-template Vector<std::complex<long double> >::Vector (const Vector<std::complex<double> > &);
-template Vector<std::complex<long double> >::Vector (const Vector<std::complex<float> > &);
-
-template Vector<std::complex<double> >::Vector (const Vector<std::complex<long double> > &);
-template Vector<std::complex<float> >::Vector (const Vector<std::complex<long double> > &);
-#endif
-
-template Vector<std::complex<long double> >& Vector<std::complex<long double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<std::complex<double> >(const Vector<std::complex<double> >&);
-template Vector<std::complex<long double> >& Vector<std::complex<long double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<std::complex<float> >(const Vector<std::complex<float> >&);
-template std::complex<long double> Vector<std::complex<long double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<std::complex<long double> > (const Vector<std::complex<long double> > &) const;
-template std::complex<long double> Vector<std::complex<long double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<std::complex<double> > (const Vector<std::complex<double> > &) const;
-template std::complex<long double> Vector<std::complex<long double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<std::complex<float> > (const Vector<std::complex<float> > &) const;
-template void Vector<std::complex<long double> >::reinit<std::complex<long double> >(const Vector<std::complex<long double> >&, const bool);
-template void Vector<std::complex<long double> >::reinit<std::complex<double> >(const Vector<std::complex<double> >&, const bool);
-template void Vector<std::complex<long double> >::reinit<std::complex<float> >(const Vector<std::complex<float> >&, const bool);
-template void Vector<std::complex<long double> >::equ<std::complex<long double> >(const std::complex<long double>, const Vector<std::complex<long double> >&);
-template void Vector<std::complex<long double> >::equ<std::complex<double> >(const std::complex<long double>, const Vector<std::complex<double> >&);
-template void Vector<std::complex<long double> >::equ<std::complex<float> >(const std::complex<long double>, const Vector<std::complex<float> >&);
-
-template Vector<std::complex<double> >& Vector<std::complex<double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<std::complex<long double> >(const Vector<std::complex<long double> >&);
-template std::complex<double> Vector<std::complex<double> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<std::complex<long double> > (const Vector<std::complex<long double> > &) const;
-template void Vector<std::complex<double> >::reinit<std::complex<long double> >(const Vector<std::complex<long double> >&, const bool);
-template void Vector<std::complex<double> >::equ<std::complex<long double> >(const std::complex<double>, const Vector<std::complex<long double> >&);
-
-template Vector<std::complex<float> >& Vector<std::complex<float> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator=<std::complex<long double> >(const Vector<std::complex<long double> >&);
-template std::complex<float> Vector<std::complex<float> >::DEAL_II_MEMBER_OP_TEMPLATE_INST operator *<std::complex<long double> > (const Vector<std::complex<long double> > &) const;
-template void Vector<std::complex<float> >::reinit<std::complex<long double> >(const Vector<std::complex<long double> >&, const bool);
-template void Vector<std::complex<float> >::equ<std::complex<long double> >(const std::complex<float>, const Vector<std::complex<long double> >&);
-
-DEAL_II_NAMESPACE_CLOSE