// ---------------------------------------------------------------------
//
-// Copyright (C) 2005 - 2014 by the deal.II authors
+// Copyright (C) 2005 - 2015 by the deal.II authors
//
// This file is part of the deal.II library.
//
const size_type cols);
/**
- * Return the dimension of the range space.
+ * Return the dimension of the codomain (or range) space.
*
* @note The matrix is of dimension $m \times n$.
*/
unsigned int m () const;
/**
- * Return the number of the range space.
+ * Return the dimension of the domain space.
*
* @note The matrix is of dimension $m \times n$.
*/
* <li> If #state is LAPACKSupport::svd or LAPACKSupport::inverse_svd, this
* function first multiplies with the right transformation matrix, then with
* the diagonal matrix of singular values or their reciprocal values, and
- * finally with the left trandformation matrix.
+ * finally with the left transformation matrix.
* </ul>
*
* The optional parameter <tt>adding</tt> determines, whether the result is
*
* @note Source and destination must not be the same vector.
*
- * @note This template only exists for compile-time compatibility with
- * FullMatrix. Implementation is only available for
- * <tt>VECTOR=Vector<number></tt>
+ * @note The template with @tref number2 only exists for compile-time
+ * compatibility with FullMatrix. Only the case @tref number2 = @tref
+ * number is implemented due to limitations in the underlying LAPACK
+ * interface
*/
- template <class VECTOR>
- void vmult(VECTOR &dst, const VECTOR &src, const bool adding = false) const;
+ template <typename number2>
+ void vmult (Vector<number2> &w,
+ const Vector<number2> &v,
+ const bool adding = false) const;
+
+ void vmult (Vector<number> &w,
+ const Vector<number> &v,
+ const bool adding = false) const;
/**
* Adding Matrix-vector-multiplication. <i>w += A*v</i>
*
* See the documentation of vmult() for details on the implementation.
*/
- template <class VECTOR>
- void vmult_add (VECTOR &w, const VECTOR &v) const;
+ template <typename number2>
+ void vmult_add (Vector<number2> &w,
+ const Vector<number2> &v) const;
+
+ void vmult_add (Vector<number> &w,
+ const Vector<number> &v) const;
/**
* Transpose matrix-vector-multiplication.
*
* See the documentation of vmult() for details on the implementation.
*/
- template <class VECTOR>
- void Tvmult (VECTOR &w, const VECTOR &v,
+ template <typename number2>
+ void Tvmult (Vector<number2> &w,
+ const Vector<number2> &v,
+ const bool adding=false) const;
+
+ void Tvmult (Vector<number> &w,
+ const Vector<number> &v,
const bool adding=false) const;
/**
- * Adding transpose matrix-vector-multiplication. <i>w +=
- * A<sup>T</sup>*v</i>
+ * Adding transpose matrix-vector-multiplication.
+ * <i>w += A<sup>T</sup>*v</i>
*
* See the documentation of vmult() for details on the implementation.
*/
- template <class VECTOR>
- void Tvmult_add (VECTOR &w, const VECTOR &v) const;
+ template <typename number2>
+ void Tvmult_add (Vector<number2> &w,
+ const Vector<number2> &v) const;
- void vmult (Vector<number> &w,
- const Vector<number> &v,
- const bool adding=false) const;
- void vmult_add (Vector<number> &w,
- const Vector<number> &v) const;
- void Tvmult (Vector<number> &w,
- const Vector<number> &v,
- const bool adding=false) const;
void Tvmult_add (Vector<number> &w,
const Vector<number> &v) const;
template <typename number>
-template <class VECTOR>
-inline void
-LAPACKFullMatrix<number>::vmult(VECTOR &, const VECTOR &, bool) const
+template <typename number2>
+void
+LAPACKFullMatrix<number>::vmult (Vector<number2> &,
+ const Vector<number2> &,
+ const bool) const
{
- Assert(false, ExcNotImplemented());
+ Assert(false,
+ ExcMessage("LAPACKFullMatrix<number>::vmult must be called with a "
+ "matching Vector<double> vector type."));
}
template <typename number>
-template <class VECTOR>
-inline void
-LAPACKFullMatrix<number>::vmult_add(VECTOR &, const VECTOR &) const
+template <typename number2>
+void
+LAPACKFullMatrix<number>::vmult_add (Vector<number2> &,
+ const Vector<number2> &) const
{
- Assert(false, ExcNotImplemented());
+ Assert(false,
+ ExcMessage("LAPACKFullMatrix<number>::vmult_add must be called with a "
+ "matching Vector<double> vector type."));
}
template <typename number>
-template <class VECTOR>
-inline void
-LAPACKFullMatrix<number>::Tvmult(VECTOR &, const VECTOR &, bool) const
+template <typename number2>
+void
+LAPACKFullMatrix<number>::Tvmult (Vector<number2> &,
+ const Vector<number2> &,
+ const bool) const
{
- Assert(false, ExcNotImplemented());
+ Assert(false,
+ ExcMessage("LAPACKFullMatrix<number>::Tvmult must be called with a "
+ "matching Vector<double> vector type."));
}
template <typename number>
-template <class VECTOR>
-inline void
-LAPACKFullMatrix<number>::Tvmult_add(VECTOR &, const VECTOR &) const
+template <typename number2>
+void
+LAPACKFullMatrix<number>::Tvmult_add (Vector<number2> &,
+ const Vector<number2> &) const
{
- Assert(false, ExcNotImplemented());
+ Assert(false,
+ ExcMessage("LAPACKFullMatrix<number>::Tvmult_add must be called with a "
+ "matching Vector<double> vector type."));
}