#ifndef PARDIAGONALMATRIX_H #define PARDIAGONALMATRIX_H #include "mpi.h" #include "MPI_Wrappers.h" #include "MatrixLibrary.h" #include "DiagonalMatrix.h" #include "DenseMatrix.h" namespace ATC_matrix { /** * @class ParDiagonalMatrix * @brief Parallelized version of DiagonalMatrix class. */ template class ParDiagonalMatrix : public DiagonalMatrix { public: ParDiagonalMatrix(MPI_Comm comm, INDEX rows=0, bool z=0) : DiagonalMatrix(rows, z), _comm(comm) {} ParDiagonalMatrix(MPI_Comm comm, const DiagonalMatrix& c) : DiagonalMatrix(c), _comm(comm) {} ParDiagonalMatrix(MPI_Comm comm, const Vector& v) : DiagonalMatrix(v), _comm(comm) {} void MultAB(const Matrix &B, DenseMatrix &C) const; private: MPI_Comm _comm; }; template<> void ParDiagonalMatrix::MultAB(const Matrix &B, DenseMatrix &C) const; } // end namespace #endif