/**
* Constructor. The argument is
* handed over to the
- * @p{SmartPointer} constructor.
+ * @p{SmartPointer}
+ * constructor. The matrix object
+ * must exist longer as the
+ * @p{MGMatrix} object, since
+ * only a pointer is stored.
*/
MGMatrix (MGLevelObject<MATRIX>* = 0);
+ /**
+ * Set the matrix object to be
+ * used. The matrix object must
+ * exist longer as the
+ * @p{MGMatrix} object, since
+ * only a pointer is stored.
+ */
+ void set_matrix (MGLevelObject<MATRIX>* M);
+
/**
* Matrix-vector-multiplication on
* a certain level.
const unsigned int col = 0,
MGLevelObject<MATRIX>* = 0);
+ /**
+ * Set the matrix object to be
+ * used. The matrix object must
+ * exist longer as the
+ * @p{MGMatrix} object, since
+ * only a pointer is stored.
+ */
+ void set_matrix (MGLevelObject<MATRIX>* M);
+
/**
* Select the block for
* multiplication.
{}
+template <class MATRIX, class VECTOR>
+void
+MGMatrix<MATRIX, VECTOR>::set_matrix (MGLevelObject<MATRIX>* p)
+{
+ (SmartPointer<MGLevelObject<MATRIX> >) (*this) = p;
+}
+
template <class MATRIX, class VECTOR>
void
+template <class MATRIX, typename number>
+void
+MGMatrixSelect<MATRIX, number>::set_matrix (MGLevelObject<MATRIX>* p)
+{
+ (SmartPointer<MGLevelObject<MATRIX> >) (*this) = p;
+}
+
+
template <class MATRIX, typename number>
void
MGMatrixSelect<MATRIX, number>::