To handle dense matrices. More...


Public Member Functions | |
DMatrix () | |
Default constructor. More... | |
DMatrix (size_t nr) | |
Constructor for a matrix with nr rows and nr columns. More... | |
DMatrix (size_t nr, size_t nc) | |
Constructor for a matrix with nr rows and nc columns. More... | |
DMatrix (Vect< T_ > &v) | |
Constructor that uses a Vect instance. The class uses the memory space occupied by this vector. More... | |
DMatrix (const DMatrix< T_ > &m) | |
Copy Constructor. More... | |
~DMatrix () | |
Destructor. | |
void | setDiag () |
Store diagonal entries in a separate internal vector. | |
void | setSize (size_t size) |
Set size (number of rows) of matrix. More... | |
void | setSize (size_t nr, size_t nc) |
Set size (number of rows and columns) of matrix. More... | |
Vect< T_ > | getColumn (size_t j) const |
Get j -th column vector. | |
Vect< T_ > | getRow (size_t i) const |
Get i -th row vector. | |
void | set (size_t i, size_t j, const T_ &val) |
Assign a constant value to an entry of the matrix. 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 i, const Vect< T_ > &v) |
Copy a given vector to a prescribed column in the matrix. More... | |
void | MultAdd (T_ a, const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector a*x and add result to y . More... | |
void | MultAdd (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector x and add result to y . More... | |
void | Mult (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector x and save result in y . More... | |
void | TMult (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply transpose of matrix by vector x and add result in y . More... | |
void | add (size_t i, size_t j, const T_ &val) |
Add constant val to entry (i,j) of the matrix. More... | |
void | Axpy (T_ a, const DMatrix< 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... | |
T_ | operator() (size_t i, size_t j) const |
Operator () (Constant version). Return a(i,j) More... | |
T_ & | operator() (size_t i, size_t j) |
Operator () (Non constant version). Return a(i,j) More... | |
int | Factor () |
Factorize matrix (LU factorization). More... | |
int | Solve (Vect< T_ > &b) |
Solve system with factorized matrix (forward and back substitution). More... | |
int | Solve (const Vect< T_ > &b, Vect< T_ > &x) |
Solve system with factorized matrix (forward and back substitution). More... | |
DMatrix & | operator= (DMatrix< T_ > &m) |
Operator = More... | |
DMatrix & | operator+= (const DMatrix< T_ > &m) |
Operator +=. More... | |
DMatrix & | operator-= (const DMatrix< T_ > &m) |
Operator -=. More... | |
DMatrix & | operator= (const T_ &x) |
Operator = More... | |
DMatrix & | operator*= (const T_ &x) |
Operator *= More... | |
DMatrix & | operator+= (const T_ &x) |
Operator += More... | |
DMatrix & | operator-= (const T_ &x) |
Operator -= More... | |
size_t | getColInd (size_t i) const |
Return storage information. More... | |
T_ * | getArray () const |
Return matrix as C-Array. More... | |
T_ | get (size_t i, size_t j) const |
Return entry (i,j) of matrix. | |
void | setPrintView (size_t rmin, size_t rmax, size_t cmin, size_t cmax) |
Set a window for matrix printing. 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. | |
void | setDiagonal (const class Mesh &mesh) |
Initialize matrix storage in the case where only diagonal terms are stored. More... | |
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 | Assembly (const class Element *el, T_ *a) |
Assembly of element matrix into global matrix. More... | |
void | Assembly (const class Element *el, const DMatrix< T_ > &a) |
Assembly of element matrix into global matrix. More... | |
void | Assembly (const class Side *sd, T_ *a) |
Assembly of side matrix into global matrix. More... | |
void | Assembly (const class Side *sd, const DMatrix< T_ > &a) |
Assembly of side matrix into global matrix. More... | |
void | Prescribe (const class Mesh &mesh, Vect< T_ > &b, const Vect< T_ > &u, int flag=0) |
Impose by a penalty method an essential boundary condition. More... | |
void | Prescribe (int dof, int code, const class Mesh &mesh, 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, 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 (const class Mesh &mesh, Vect< T_ > &b, int flag=0) |
Impose by a penalty method a homegeneous (=0) essential boundary condition. More... | |
void | Prescribe (Vect< T_ > &b, int flag=0) |
Impose by a penalty method a homegeneous (=0 ) essential boundary condition, using the Mesh instance provided by the constructor. More... | |
void | Prescribe (size_t dof, const class Mesh &mesh, 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 | 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 (const class Mesh &mesh) |
Impose by a penalty method an essential boundary condition when DOFs are supported by sides. More... | |
void | PrescribeSide () |
Impose by a penalty method an essential boundary condition when DOFs are supported by sides. 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... | |
unsigned long | 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 | 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+= (const Matrix< T_ > &m) |
Operator +=. More... | |
Matrix & | operator-= (const Matrix< T_ > &m) |
Operator -=. More... | |
void | getPrintView (size_t &rmin, size_t &rmax, size_t &cmin, size_t &cmax) const |
Return window data for matrix printing. More... | |
Detailed Description
template<class T_>
class OFELI::DMatrix< T_ >
To handle dense matrices.
This class enables storing and manipulating general dense matrices. Matrices can be square or rectangle ones.
- Template Parameters
-
<T_> Data type (real_t, float, complex<real_t>, ...)
Constructor & Destructor Documentation
DMatrix | ( | ) |
Default constructor.
Initializes a zero-dimension matrix.
DMatrix | ( | size_t | nr | ) |
Constructor for a matrix with nr
rows and nr
columns.
Matrix entries are set to 0
.
DMatrix | ( | size_t | nr, |
size_t | nc | ||
) |
Constructor for a matrix with nr
rows and nc
columns.
Matrix entries are set to 0.
Constructor that uses a Vect instance. The class uses the memory space occupied by this vector.
- Parameters
-
[in] v Vector to copy
Member Function Documentation
void setSize | ( | size_t | size | ) |
Set size (number of rows) of matrix.
- Parameters
-
[in] size Number of rows and columns.
void setSize | ( | size_t | nr, |
size_t | nc | ||
) |
Set size (number of rows and columns) of matrix.
- Parameters
-
[in] nr Number of rows. [in] nc Number of columns.
|
virtual |
Assign a constant value to an entry of the matrix.
- Parameters
-
[in] i row index of matrix [in] j column index of matrix [in] val Value to assign to a(i,j)
.
Implements Matrix< T_ >.
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 Vector to copy
void setColumn | ( | size_t | i, |
const Vect< T_ > & | v | ||
) |
Copy a given vector to a prescribed column in the matrix.
- Parameters
-
[in] i column index to be assigned [in] v Vector to copy
Multiply matrix by vector a*x
and add result to y
.
- Parameters
-
[in] a constant to multiply by [in] x Vector to multiply by a
[in,out] y on input, vector to add to. On output, result.
Implements Matrix< T_ >.
Multiply matrix by vector x
and add result to y
.
- Parameters
-
[in] x Vector to add to y
[in,out] y on input, vector to add to. On output, result.
Implements Matrix< T_ >.
Multiply matrix by vector x
and save result in y
.
- Parameters
-
[in] x Vector to add to y
[out] y Result.
Implements Matrix< T_ >.
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_ >.
|
virtual |
Add constant val
to entry (i,j)
of the matrix.
- Parameters
-
[in] i row index [in] j column index [in] val Constant to add
Implements Matrix< T_ >.
void Axpy | ( | T_ | a, |
const DMatrix< 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
|
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_ >.
|
virtual |
Operator () (Constant version). Return a(i,j)
- Parameters
-
[in] i row index [in] j column index
Implements Matrix< T_ >.
|
virtual |
Operator () (Non constant version). Return a(i,j)
- Parameters
-
[in] i row index [in] j column index
Implements Matrix< T_ >.
|
virtual |
Factorize matrix (LU factorization).
- Returns
-
0
if factorization was normally performed, -
n
if then
-th pivot is null.
-
Implements Matrix< T_ >.
|
virtual |
Solve system with factorized matrix (forward and back substitution).
- Parameters
-
[in,out] b Vect instance that contains right-hand side on input and solution on output.
- Returns
-
0
if solution was normally performed, -
n
if then
-th pivot is null.
-
Implements Matrix< T_ >.
Solve system with factorized matrix (forward and back substitution).
- Parameters
-
[in] b Vect instance that contains right-hand side [out] x Vect instance that contains solution
- Returns
-
0
if solution was normally performed -
n
if then
-th pivot is null
-
Operator +=.
Add matrix m
to current matrix instance.
Operator -=.
Subtract matrix m
from current matrix instance.
DMatrix< T_ > & operator= | ( | const T_ & | x | ) |
Operator =
Assign matrix to identity times x
DMatrix< T_ > & operator*= | ( | const T_ & | x | ) |
Operator *=
Premultiply matrix entries by constant value x
.
DMatrix< T_ > & operator+= | ( | const T_ & | x | ) |
Operator +=
Add constant value x
to matrix entries
DMatrix< T_ > & operator-= | ( | const T_ & | x | ) |
Operator -=
Subtract constant value x
from matrix entries.
|
virtual |
Return storage information.
- Parameters
-
[in] i Index of stored entry in matrix
- Returns
- Column index for this entry
Reimplemented from Matrix< T_ >.
T_* getArray | ( | ) | const |
Return matrix as C-Array.
Matrix is stored row by row.
void setPrintView | ( | size_t | rmin, |
size_t | rmax, | ||
size_t | cmin, | ||
size_t | cmax | ||
) |
Set a window for matrix printing.
- Parameters
-
[in] rmin first row index to view [in] rmax last row index to view [in] cmin first column index to view [in] cmax last column index to view
|
inherited |
Initialize matrix storage in the case where only diagonal terms are stored.
This member function is to be used for explicit time integration schemes
|
inherited |
Return k
-th diagonal entry of matrix.
First entry is given by getDiag(1).
|
inherited |
Assembly of element matrix into global matrix.
Case where element matrix is given by a C-array.
- Parameters
-
[in] el Pointer to element instance [in] a Element matrix as a C-array
|
inherited |
Assembly of side matrix into global matrix.
Case where side matrix is given by a C-array.
- Parameters
-
[in] sd Pointer to side instance [in] a Side matrix as a C-array instance
|
inherited |
Impose by a penalty method an essential boundary condition.
This member function modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. The penalty parameter is defined by default equal to 1.e20. It can be modified by member function setPenal(..).
- Parameters
-
[in] mesh Mesh instance from which information is extracted. [in,out] b Vect instance that contains right-hand side. [in] u Vect instance that contains imposed valued at DOFs where they are to be imposed. [in] flag Parameter to determine whether only the right-hand side is to be modified
(dof>0
) or both matrix and right-hand side (dof=0
, default value).
|
inherited |
Impose by a penalty method an essential boundary condition to a given degree of freedom for a given code.
This member function modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. The penalty parameter is defined by default equal to 1.e20. It can be modified by member function setPenal(..).
- Parameters
-
[in] dof Degree of freedom for which a boundary condition is to be enforced [in] code Code for which a boundary condition is to be enforced [in] mesh Mesh instance from which information is extracted. [in,out] b Vect instance that contains right-hand side. [in] u Vect instance that contains imposed valued at DOFs where they are to be imposed. [in] flag Parameter to determine whether only the right-hand side is to be modified
(dof>0
) or both matrix and right-hand side (dof=0
, default value).
Impose by a penalty method an essential boundary condition, using the Mesh instance provided by the constructor.
This member function modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. The penalty parameter is defined by default equal to 1.e20. It can be modified by member function setPenal(..).
Impose by a penalty method a homegeneous (=0) essential boundary condition.
This member function modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. The penalty parameter is defined by default equal to 1.e20. It can be modified by member function setPenal(..).
|
inherited |
Impose by a penalty method a homegeneous (=0
) essential boundary condition, using the Mesh instance provided by the constructor.
This member function modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. The penalty parameter is defined by default equal to 1.e20. It can be modified by member function setPenal(..).
- Parameters
-
[in,out] b Vect instance that contains right-hand side. [in] flag Parameter to determine whether only the right-hand side is to be modified ( dof>0
)
or both matrix and right-hand side (dof=0
, default value).
|
inherited |
Impose by a penalty method an essential boundary condition when only one DOF is treated.
This member function modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. This gunction is to be used if only one DOF per node is treated in the linear system. The penalty parameter is by default equal to 1.e20. It can be modified by member function setPenal.
- Parameters
-
[in] dof Label of the concerned degree of freedom (DOF). [in] mesh Mesh instance from which information is extracted. [in,out] b Vect instance that contains right-hand side. [in] u Vect instance that conatins imposed valued at DOFs where they are to be imposed. [in] flag Parameter to determine whether only the right-hand side is to be modified ( dof>0
)
or both matrix and right-hand side (dof=0
, default value).
Impose by a penalty method an essential boundary condition when only one DOF is treated.
This member function uses the Mesh instance provided by the constructor.
It modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. This gunction is to be used if only one DOF per node is treated in the linear system. The penalty parameter is by default equal to 1.e20. It can be modified by member function setPenal.
- Parameters
-
[in] dof Label of the concerned degree of freedom (DOF). [in,out] b Vect instance that contains right-hand side. [in] u Vect instance that conatins imposed valued at DOFs where they are to be imposed. [in] flag Parameter to determine whether only the right-hand side is to be modified ( dof>0
)
or both matrix and right-hand side (dof=0
, default value).
|
inherited |
Impose by a penalty method an essential boundary condition when DOFs are supported by sides.
This member function uses the Mesh instance provided by the constructor
It modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. The penalty parameter is defined by default equal to 1.e20. It can be modified by member function setPenal(..).
|
inherited |
Impose by a penalty method an essential boundary condition when DOFs are supported by sides.
This member function modifies diagonal terms in matrix and terms in vector that correspond to degrees of freedom with nonzero code in order to impose a boundary condition. The penalty parameter is defined by default equal to 1.e20. It can be modified by member function setPenal(..).
|
inherited |
Factorize matrix and solve the linear system.
This is available only if the storage class enables it.
- Parameters
-
[in,out] b Vect instance that contains right-hand side on input and solution on output
|
inherited |
Say if matrix is factorized or not.
If the matrix was not factorized, the class does not allow solving by a direct solver.
|
inherited |
Operator () with one argument (Constant version).
Returns i
-th position in the array storing matrix entries. The first entry is at location 1. Entries are stored row by row.
- Parameters
-
[in] i entry index
|
inherited |
Operator () with one argument (Non Constant version).
Returns i
-th position in the array storing matrix entries. The first entry is at location 1. Entries are stored row by row.
- Parameters
-
[in] i entry index
|
inherited |
Operator [] (Non constant version).
Returns k
-th stored element in matrix Index k
starts at 0
.
|
inherited |
Operator [] (Constant version).
Returns k
-th stored element in matrix Index k
starts at 0
.
Operator +=.
Add matrix m
to current matrix instance.
Operator -=.
Subtract matrix m
from current matrix instance.
|
inherited |
Return window data for matrix printing.
- Parameters
-
[out] rmin first row index to view [out] rmax last row index to view [out] cmin first column index to view [out] cmax last column index to view