To handle tridiagonal matrices. More...
Public Member Functions | |
TrMatrix () | |
Default constructor. More... | |
TrMatrix (size_t size) | |
Constructor for a tridiagonal matrix with size rows. | |
TrMatrix (const TrMatrix &m) | |
Copy Constructor. | |
~TrMatrix () | |
Destructor. | |
void | Identity () |
Define matrix as identity matrix. | |
void | Diagonal () |
Define matrix as a diagonal one. | |
void | Diagonal (const T_ &a) |
Define matrix as a diagona one and assign value a to all diagonal entries. | |
void | Laplace1D (real_t h) |
Define matrix as the one of 3-point finite difference discretization of the second derivative. More... | |
void | setSize (size_t size) |
Set size (number of rows) of matrix. More... | |
void | MultAdd (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector x and add result to y . | |
void | MultAdd (T_ a, const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector a*x and add result to y . | |
void | Mult (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector x and save result in y . | |
void | TMult (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply transpose of matrix by vector x and save result in y . | |
void | Axpy (T_ a, const TrMatrix< T_ > &m) |
Add to matrix the product of a matrix by a scalar. More... | |
void | Axpy (T_ a, const Matrix< T_ > *m) |
Add to matrix the product of a matrix by a scalar. More... | |
void | set (size_t i, size_t j, const T_ &val) |
Assign constant val to an entry (i,j) of the matrix. | |
void | add (size_t i, size_t j, const T_ &val) |
Add constant val value to an entry (i,j) of the matrix. | |
void | add (size_t i, const T_ &val) |
Add val to entry i . | |
T_ | at (size_t i, size_t j) |
Return a value of a matrix entry. More... | |
T_ | operator() (size_t i, size_t j) const |
Operator () (Constant version). More... | |
T_ & | operator() (size_t i, size_t j) |
Operator () (Non constant version). More... | |
TrMatrix< T_ > & | operator= (const TrMatrix< T_ > &m) |
Operator =. More... | |
TrMatrix< T_ > & | operator= (const T_ &x) |
Operator = Assign matrix to identity times x . | |
TrMatrix< T_ > & | operator*= (const T_ &x) |
Operator *=. More... | |
int | solve (Vect< T_ > &b, bool fact=true) |
Solve a linear system with current matrix (forward and back substitution). More... | |
int | solve (const Vect< T_ > &b, Vect< T_ > &x, bool fact=false) |
Solve a linear system with current matrix (forward and back substitution). More... | |
T_ * | get () const |
Return C-Array. | |
T_ | get (size_t i, size_t j) const |
Return entry (i,j) of matrix. | |
Public Member Functions inherited from Matrix< T_ > | |
Matrix () | |
Default constructor. More... | |
Matrix (const Matrix< T_ > &m) | |
Copy Constructor. | |
virtual | ~Matrix () |
Destructor. | |
virtual void | reset () |
Set matrix to 0 and reset factorization parameter. More... | |
size_t | getNbRows () const |
Return number of rows. | |
size_t | getNbColumns () const |
Return number of columns. | |
string | getName () const |
Return name of matrix. | |
MatrixSize | getMatrixSize () const |
Return storage type. | |
void | setPenal (real_t p) |
Set Penalty Parameter (For boundary condition prescription). | |
void | setDiagonal () |
Set the matrix as diagonal. | |
T_ | getDiag (size_t k) const |
Return k -th diagonal entry of matrix. More... | |
size_t | size () const |
Return matrix dimension (Number of rows and columns). | |
void | setDiagonal (Mesh &mesh) |
Initialize matrix storage in the case where only diagonal terms are stored. More... | |
virtual void | clear () |
brief Set all matrix entries to zero | |
void | Assembly (const Element &el, T_ *a) |
Assembly of element matrix into global matrix. More... | |
void | Assembly (const Side &sd, T_ *a) |
Assembly of side matrix into global matrix. More... | |
void | Prescribe (Vect< T_ > &b, const Vect< T_ > &u, int flag=0) |
Impose by a penalty method an essential boundary condition, using the Mesh instance provided by the constructor. More... | |
void | Prescribe (int dof, int code, Vect< T_ > &b, const Vect< T_ > &u, int flag=0) |
Impose by a penalty method an essential boundary condition to a given degree of freedom for a given code. More... | |
void | Prescribe (Vect< T_ > &b, int flag=0) |
Impose by a penalty method a homegeneous (=0) essential boundary condition. More... | |
void | Prescribe (size_t dof, Vect< T_ > &b, const Vect< T_ > &u, int flag=0) |
Impose by a penalty method an essential boundary condition when only one DOF is treated. More... | |
void | PrescribeSide () |
Impose by a penalty method an essential boundary condition when DOFs are supported by sides. More... | |
virtual int | Factor ()=0 |
Factorize matrix. Available only if the storage class enables it. | |
int | FactorAndSolve (Vect< T_ > &b) |
Factorize matrix and solve the linear system. More... | |
int | FactorAndSolve (const Vect< T_ > &b, Vect< T_ > &x) |
Factorize matrix and solve the linear system. More... | |
size_t | getLength () const |
Return number of stored terms in matrix. | |
int | isDiagonal () const |
Say if matrix is diagonal or not. | |
int | isFactorized () const |
Say if matrix is factorized or not. More... | |
virtual size_t | getColInd (size_t i) const |
Return Column index for column i (See the description for class SpMatrix). | |
virtual size_t | getRowPtr (size_t i) const |
Return Row pointer for row i (See the description for class SpMatrix). | |
T_ | operator() (size_t i) const |
Operator () with one argument (Constant version). More... | |
T_ & | operator() (size_t i) |
Operator () with one argument (Non Constant version). More... | |
T_ & | operator[] (size_t k) |
Operator [] (Non constant version). More... | |
T_ | operator[] (size_t k) const |
Operator [] (Constant version). More... | |
Matrix & | operator= (Matrix< T_ > &m) |
Operator =. More... | |
Matrix & | operator+= (const Matrix< T_ > &m) |
Operator +=. More... | |
Matrix & | operator-= (const Matrix< T_ > &m) |
Operator -=. More... | |
Matrix & | operator= (const T_ &x) |
Operator =. More... | |
Matrix & | operator*= (const T_ &x) |
Operator *=. More... | |
Matrix & | operator+= (const T_ &x) |
Operator +=. More... | |
Matrix & | operator-= (const T_ &x) |
Operator -=. More... | |
To handle tridiagonal matrices.
This class enables storing and manipulating tridiagonal matrices. The template parameter is the type of matrix entries. Any matrix entry can be accessed by the () operator: For instance, if A
is an instance of this class, A(i,j)
stands for the entry at the i-th row and j-th column, i
and j
starting from 1. If is
difference from i-1
, i
or i+1
, the returned value is 0
. Entries of A
can be assigned a value by the same operator. Only nonzero entries can be assigned.
T_ | Data type (double, float, complex<double>, ...) |