To handle symmetric dense matrices. More...
#include <DSMatrix.h>

Public Member Functions | |
DSMatrix () | |
Default constructor. | |
DSMatrix (size_t dim) | |
Constructor that for a symmetric matrix with given number of r‡qows. More... | |
DSMatrix (const DSMatrix< T_ > &m) | |
Copy Constructor. More... | |
DSMatrix (Mesh &mesh, size_t dof=0, int is_diagonal=false) | |
Constructor using mesh to initialize matrix. More... | |
~DSMatrix () | |
Destructor. | |
void | setDiag () |
Store diagonal entries in a separate internal vector. | |
void | setSize (size_t dim) |
Set size (number of rows) of matrix. More... | |
void | set (size_t i, size_t j, const T_ &val) |
Assign constant to entry (i,j) of the matrix. More... | |
void | getColumn (size_t j, Vect< T_ > &v) const |
Get j -th column vector. More... | |
Vect< T_ > | getColumn (size_t j) const |
Get j -th column vector. More... | |
void | getRow (size_t i, Vect< T_ > &v) const |
Get i -th row vector. More... | |
Vect< T_ > | getRow (size_t i) const |
Get i -th row vector. More... | |
void | setRow (size_t i, const Vect< T_ > &v) |
Copy a given vector to a prescribed row in the matrix. More... | |
void | setColumn (size_t j, const Vect< T_ > &v) |
Copy a given vector to a prescribed column in the matrix. More... | |
void | setDiag (const T_ &a) |
Set matrix as diagonal and assign its diagonal entries as a constant. More... | |
void | setDiag (const vector< T_ > &d) |
Set matrix as diagonal and assign its diagonal entries. More... | |
void | add (size_t i, size_t j, const T_ &val) |
Add constant to an entry ofthe matrix. 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... | |
DSMatrix< T_ > & | operator= (const DSMatrix< T_ > &m) |
Operator = Copy matrix m to current matrix instance. | |
DSMatrix< T_ > & | operator= (const T_ &x) |
Operator = Assign matrix to identity times x . | |
DSMatrix & | operator+= (const T_ &x) |
Operator +=. More... | |
DSMatrix & | operator-= (const T_ &x) |
Operator -=. More... | |
int | setLDLt () |
Factorize matrix (LDLT ) More... | |
void | MultAdd (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector a*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 to y . More... | |
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 add result in y . More... | |
void | Axpy (T_ a, const DSMatrix< T_ > &m) |
Add to matrix the product of a matrix by a scalar. More... | |
void | add (size_t i, const T_ &val) |
Add val to entry i . | |
void | Axpy (T_ a, const Matrix< T_ > *m) |
Add to matrix the product of a matrix by a scalar. More... | |
int | solve (Vect< T_ > &b, bool fact=true) |
Solve linear system. More... | |
int | solve (const Vect< T_ > &b, Vect< T_ > &x, bool fact=true) |
Solve linear system. More... | |
const T_ * | getArray () |
Return matrix as C-Array. Matrix is stored row by row. Only lower triangle is stored. | |
T_ | get (size_t i, size_t j) const |
Return entry (i,j) of matrix. | |
![]() | |
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. | |
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). | |
virtual void | MultAdd (const Vect< T_ > &x, Vect< T_ > &y) const =0 |
Multiply matrix by vector x and add to y | |
virtual void | MultAdd (T_ a, const Vect< T_ > &x, Vect< T_ > &y) const =0 |
Multiply matrix by vector a*x and add to y | |
virtual void | Mult (const Vect< T_ > &x, Vect< T_ > &y) const =0 |
Multiply matrix by vector x and save in y | |
virtual void | TMult (const Vect< T_ > &v, Vect< T_ > &w) const =0 |
Multiply transpose of matrix by vector x and save in y | |
virtual void | Axpy (T_ a, const Matrix< T_ > *x)=0 |
Add to matrix the product of a matrix by a scalar. More... | |
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 void | add (size_t i, size_t j, const T_ &val)=0 |
Add val to entry (i,j) . | |
virtual void | add (size_t i, const T_ &val)=0 |
Add val to entry i . | |
virtual int | Factor ()=0 |
Factorize matrix. Available only if the storage class enables it. | |
virtual int | solve (Vect< T_ > &b, bool fact=true)=0 |
Solve the linear system. More... | |
virtual int | solve (const Vect< T_ > &b, Vect< T_ > &x, bool fact=true)=0 |
Solve the linear system. More... | |
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). | |
virtual void | set (size_t i, size_t j, const T_ &val)=0 |
Assign a value to an entry of the matrix. More... | |
virtual T_ & | operator() (size_t i, size_t j)=0 |
Operator () (Non constant version). More... | |
virtual T_ | operator() (size_t i, size_t j) const =0 |
Operator () (Non constant version). More... | |
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... | |
virtual T_ | get (size_t i, size_t j) const =0 |
Return entry (i,j) of matrix if this one is stored, 0 else. | |
Detailed Description
class OFELI::DSMatrix< T_ >
To handle symmetric dense matrices.
This class enables storing and manipulating symmetric dense matrices.
- Template Parameters
-
T_ Data type (double, float, complex<double>, ...)
- Copyright
- GNU Lesser Public License
Constructor & Destructor Documentation
◆ DSMatrix() [1/3]
DSMatrix | ( | size_t | dim | ) |
Constructor that for a symmetric matrix with given number of r‡qows.
- Parameters
-
[in] dim Number of rows
◆ DSMatrix() [2/3]
◆ DSMatrix() [3/3]
Constructor using mesh to initialize matrix.
- Parameters
-
[in] mesh Mesh instance for which matrix graph is determined. [in] dof Option parameter, with default value 0
.
dof=1
means that only one degree of freedom for each node (or element or side) is taken to determine matrix structure. The valuedof=0
means that matrix structure is determined using all DOFs.[in] is_diagonal Boolean argument to say is the matrix is actually a diagonal matrix or not.
Member Function Documentation
◆ add()
|
virtual |
Add constant to an entry ofthe matrix.
- Parameters
-
[in] i row index [in] j column index [in] val value to add to a(i,j)
Implements Matrix< T_ >.
◆ Axpy() [1/2]
void Axpy | ( | T_ | a, |
const DSMatrix< T_ > & | m | ||
) |
Add to matrix the product of a matrix by a scalar.
- Parameters
-
[in] a Scalar to premultiply [in] m Matrix by which a
is multiplied. The result is added to current instance
◆ Axpy() [2/2]
|
virtual |
Add to matrix the product of a matrix by a scalar.
- Parameters
-
[in] a Scalar to premultiply [in] m Matrix by which a
is multiplied. The result is added to current instance
Implements Matrix< T_ >.
◆ getColumn() [1/2]
Vect< T_ > getColumn | ( | size_t | j | ) | const |
Get j
-th column vector.
- Parameters
-
[in] j Index of column to extract
- Returns
- Vect instance where the column is stored
- Remarks
- Vector v does not need to be sized before. It is resized in the function
◆ getColumn() [2/2]
void getColumn | ( | size_t | j, |
Vect< T_ > & | v | ||
) | const |
Get j
-th column vector.
- Parameters
-
[in] j Index of column to extract [out] v Reference to Vect instance where the column is stored
- Remarks
- Vector v does not need to be sized before. It is resized in the function
◆ getRow() [1/2]
Vect< T_ > getRow | ( | size_t | i | ) | const |
Get i
-th row vector.
- Parameters
-
[in] i Index of row to extract
- Returns
- Vect instance where the row is stored
- Remarks
- Vector v does not need to be sized before. It is resized in the function
◆ getRow() [2/2]
void getRow | ( | size_t | i, |
Vect< T_ > & | v | ||
) | const |
Get i
-th row vector.
- Parameters
-
[in] i Index of row to extract [out] v Reference to Vect instance where the row is stored
- Remarks
- Vector v does not need to be sized before. It is resized in the function
◆ MultAdd()
Multiply matrix by vector a*x
and add to y
.
- Parameters
-
[in] a Constant to multiply by matrix [in] x Vector to multiply by matrix [in,out] y Vector to add to the result. y
contains on output the result.
Implements Matrix< T_ >.
◆ operator()() [1/2]
|
virtual |
Operator ()
(Non constant version).
- Parameters
-
[in] i Row index [in] j Column index
- Warning
- To modify a value of an entry of the matrix it is safer not to modify both lower and upper triangles. Otherwise, wrong values will be assigned. If not sure, use the member functions set or add.
Implements Matrix< T_ >.
◆ operator()() [2/2]
|
virtual |
Operator ()
(Constant version).
- Parameters
-
[in] i Row index [in] j Column index
Implements Matrix< T_ >.
◆ operator+=()
DSMatrix & operator+= | ( | const T_ & | x | ) |
Operator +=.
Add constant value x
to all matrix entries.
◆ operator-=()
DSMatrix & operator-= | ( | const T_ & | x | ) |
Operator -=.
Subtract constant value x
from to all matrix entries.
◆ set()
|
virtual |
Assign constant to entry (i,j)
of the matrix.
- Parameters
-
[in] i row index [in] j column index [in] val value to assign to a(i,j)
Implements Matrix< T_ >.
◆ setColumn()
void setColumn | ( | size_t | j, |
const Vect< T_ > & | v | ||
) |
Copy a given vector to a prescribed column in the matrix.
- Parameters
-
[in] j column index to be assigned [in] v Vect instance to copy
◆ setDiag() [1/2]
void setDiag | ( | const T_ & | a | ) |
Set matrix as diagonal and assign its diagonal entries as a constant.
- Parameters
-
[in] a Value to assign to all diagonal entries
◆ setDiag() [2/2]
void setDiag | ( | const vector< T_ > & | d | ) |
Set matrix as diagonal and assign its diagonal entries.
- Parameters
-
[in] d Vector entries to assign to matrix diagonal entries
◆ setLDLt()
int setLDLt | ( | ) |
Factorize matrix (LDLT
)
- Returns
-
0
, if factorization was normally performed, -
n
, if then
-th pivot is null.
-
◆ setRow()
void setRow | ( | size_t | i, |
const Vect< T_ > & | v | ||
) |
Copy a given vector to a prescribed row in the matrix.
- Parameters
-
[in] i row index to be assigned [in] v Vect instance to copy
◆ setSize()
void setSize | ( | size_t | dim | ) |
Set size (number of rows) of matrix.
- Parameters
-
[in] dim Number of rows and columns.
◆ solve() [1/2]
Solve linear system.
The matrix is factorized using the LDLt (Crout) decomposition. If this one is already factorized, no further factorization is performed. If the matrix has been modified the user has to refactorize it using the function setLDLt.
- Parameters
-
[in] b Vect instance that contains right-hand side. [out] x Vect instance that contains solution [in] fact Set true if matrix is to be factorized (Default value), false if not
- Returns
-
0
if solution was normally performed, -
n
if then
-th pivot is null.
-
Implements Matrix< T_ >.
◆ solve() [2/2]
|
virtual |
Solve linear system.
The matrix is factorized using the LDLt (Crout) decomposition. If this one is already factorized, no further factorization is performed. If the matrix has been modified the user has to refactorize it using the function setLDLt.
- Parameters
-
[in,out] b Vect instance that contains right-hand side on input and solution on output. [in] fact Set true if matrix is to be factorized (Default value), false if not
- Returns
-
0
if solution was normally performed, -
n
if then
-th pivot is null.
-
Implements Matrix< T_ >.
◆ TMult()
Multiply transpose of matrix by vector x
and add result in y
.
- Parameters
-
[in] x Vector to add to y
[in,out] y on input, vector to add to. On output, result.
Implements Matrix< T_ >.