ParGeMSLR
matrix.hpp
Go to the documentation of this file.
1 #ifndef PARGEMSLR_MATRIX_H
2 #define PARGEMSLR_MATRIX_H
3 
9 #include "../utils/utils.hpp"
10 #include "../utils/parallel.hpp"
11 #include "../utils/memory.hpp"
12 #include "../vectors/vector.hpp"
13 
14 namespace pargemslr
15 {
16 
21  template <typename T>
22  class MatrixClass: public parallel_log
23  {
24  public:
25 
30  MatrixClass();
31 
37  MatrixClass(const MatrixClass<T> &mat);
38 
45 
51  virtual int Clear();
52 
57  virtual ~MatrixClass();
58 
64  virtual int GetDataLocation() const;
65 
71  virtual int GetNumRowsLocal() const = 0;
72 
78  virtual int GetNumColsLocal() const = 0;
79 
85  virtual long int GetNumNonzeros() const;
86 
92  virtual int Eye();
93 
100  virtual int Fill(const T &v);
101 
108  virtual int Scale(const T &alpha);
109 
120  virtual int MatVec( char trans, const T &alpha, const VectorClass<T> &x, const T &beta, VectorClass<T> &y);
121 
133  virtual int MatVec( char trans, const T &alpha, const VectorClass<T> &x, const T &beta, const VectorClass<T> &y, VectorClass<T> &z);
134 
141  virtual int MoveData( const int &location);
142 
149  PrecisionEnum GetPrecision() const;
150 
151  };
152 
157  template<> struct PargemslrIsComplex<MatrixClass<complexs> > : public std::true_type {};
158  template<> struct PargemslrIsComplex<MatrixClass<complexd> > : public std::true_type {};
159 
160 }
161 
162 #endif
pargemslr::MatrixClass::Fill
virtual int Fill(const T &v)
Fill the matrix pattern with constant value.
Definition: matrix.cpp:92
pargemslr::MatrixClass::MoveData
virtual int MoveData(const int &location)
Move the data to another memory location.
Definition: matrix.cpp:137
pargemslr::MatrixClass::Scale
virtual int Scale(const T &alpha)
Scale the matrix.
Definition: matrix.cpp:104
pargemslr::MatrixClass::GetNumColsLocal
virtual int GetNumColsLocal() const =0
Get the local number of columns of the matrix.
pargemslr::MatrixClass::GetNumNonzeros
virtual long int GetNumNonzeros() const
Get the number of nonzeros in this matrix.
Definition: matrix.cpp:70
pargemslr::VectorClass
The virtual class of real/complex vector class.
Definition: vector.hpp:126
pargemslr::MatrixClass::MatVec
virtual int MatVec(char trans, const T &alpha, const VectorClass< T > &x, const T &beta, VectorClass< T > &y)
In place Matrix-Vector product ==> y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y.
Definition: matrix.cpp:115
pargemslr::MatrixClass::~MatrixClass
virtual ~MatrixClass()
The destructor of MatrixClass.
Definition: matrix.cpp:50
pargemslr::ComplexValueClass
The template class complex.
Definition: complex.hpp:24
pargemslr::MatrixClass::Clear
virtual int Clear()
Free the current matrix.
Definition: matrix.cpp:38
pargemslr::MatrixClass
The virtual class of all matrix classes.
Definition: matrix.hpp:23
pargemslr::parallel_log
class pargemslr::ParallelLogClass parallel_log
The data structure for parallel computing, including data structures for MPI and CUDA.
pargemslr::MatrixClass::GetDataLocation
virtual int GetDataLocation() const
Get the data location of the matrix.
Definition: matrix.cpp:59
pargemslr::MatrixClass::MatrixClass
MatrixClass()
The constructor of MatrixClass.
Definition: matrix.cpp:11
pargemslr::MatrixClass::GetNumRowsLocal
virtual int GetNumRowsLocal() const =0
Get the local number of rows of the matrix.
pargemslr::PargemslrIsComplex
Tell if a value is a complex value.
Definition: complex.hpp:684
pargemslr::MatrixClass::GetPrecision
PrecisionEnum GetPrecision() const
Return the precision of the matrix.
Definition: matrix.cpp:148
pargemslr::MatrixClass::Eye
virtual int Eye()
Create an indentity matrix.
Definition: matrix.cpp:81
pargemslr::PrecisionEnum
PrecisionEnum
The precision enum.
Definition: utils.hpp:453