]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Use the instantiations automatically generated from the .inst.in file
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Sun, 9 Dec 2007 17:01:31 +0000 (17:01 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Sun, 9 Dec 2007 17:01:31 +0000 (17:01 +0000)
git-svn-id: https://svn.dealii.org/trunk@15573 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/lac/source/full_matrix.cc [new file with mode: 0644]
deal.II/lac/source/full_matrix.double.cc [deleted file]
deal.II/lac/source/full_matrix.float.cc [deleted file]
deal.II/lac/source/sparse_matrix.cc [new file with mode: 0644]
deal.II/lac/source/sparse_matrix.double.cc [deleted file]
deal.II/lac/source/sparse_matrix.float.cc [deleted file]
deal.II/lac/source/sparse_matrix_matrix.in.h [deleted file]
deal.II/lac/source/sparse_matrix_vector.in.h [deleted file]
deal.II/lac/source/vector.cc
deal.II/lac/source/vector.long_double.cc [deleted file]

diff --git a/deal.II/lac/source/full_matrix.cc b/deal.II/lac/source/full_matrix.cc
new file mode 100644 (file)
index 0000000..ace35c3
--- /dev/null
@@ -0,0 +1,51 @@
+//---------------------------------------------------------------------------
+//    $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
diff --git a/deal.II/lac/source/full_matrix.double.cc b/deal.II/lac/source/full_matrix.double.cc
deleted file mode 100644 (file)
index 58bd9a7..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-//---------------------------------------------------------------------------
-//    $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
diff --git a/deal.II/lac/source/full_matrix.float.cc b/deal.II/lac/source/full_matrix.float.cc
deleted file mode 100644 (file)
index 75b77ee..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-//---------------------------------------------------------------------------
-//    $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
diff --git a/deal.II/lac/source/sparse_matrix.cc b/deal.II/lac/source/sparse_matrix.cc
new file mode 100644 (file)
index 0000000..7fe30c2
--- /dev/null
@@ -0,0 +1,20 @@
+//---------------------------------------------------------------------------
+//    $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
diff --git a/deal.II/lac/source/sparse_matrix.double.cc b/deal.II/lac/source/sparse_matrix.double.cc
deleted file mode 100644 (file)
index 59ff434..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-//---------------------------------------------------------------------------
-//    $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
diff --git a/deal.II/lac/source/sparse_matrix.float.cc b/deal.II/lac/source/sparse_matrix.float.cc
deleted file mode 100644 (file)
index 03b4816..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-//---------------------------------------------------------------------------
-//    $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
diff --git a/deal.II/lac/source/sparse_matrix_matrix.in.h b/deal.II/lac/source/sparse_matrix_matrix.in.h
deleted file mode 100644 (file)
index df8b2b2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-//----------------------------  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
diff --git a/deal.II/lac/source/sparse_matrix_vector.in.h b/deal.II/lac/source/sparse_matrix_vector.in.h
deleted file mode 100644 (file)
index a10a204..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-//---------------------------------------------------------------------------
-//    $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
index b25a361fe1fff3bed4e856b4d13644fa554d16f4..c025d257bcbfc64ecac49a9c12a2e1cd336b9b69 100644 (file)
 
 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
diff --git a/deal.II/lac/source/vector.long_double.cc b/deal.II/lac/source/vector.long_double.cc
deleted file mode 100644 (file)
index 33577c3..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-//---------------------------------------------------------------------------
-//    $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

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.