To handle symmetric matrices in skyline storage format. More...


Public Member Functions | |
SkSMatrix () | |
Default constructor. More... | |
SkSMatrix (size_t size, int is_diagonal=false) | |
Constructor that initializes a dense symmetric matrix. More... | |
SkSMatrix (Mesh &mesh, size_t dof=0, int is_diagonal=false) | |
Constructor using mesh to initialize skyline structure of matrix. More... | |
SkSMatrix (const Vect< size_t > &ColHt) | |
Constructor that initializes skyline structure of matrix using vector of column height. More... | |
SkSMatrix (const Vect< size_t > &I, const Vect< size_t > &J, int opt=1) | |
Constructor for a square matrix using non zero row and column indices. More... | |
SkSMatrix (const Vect< size_t > &I, const Vect< size_t > &J, const Vect< T_ > &a, int opt=1) | |
Constructor for a square matrix using non zero row and column indices. More... | |
SkSMatrix (const SkSMatrix< T_ > &m) | |
Copy Constructor. | |
~SkSMatrix () | |
Destructor. | |
void | setMesh (Mesh &mesh, size_t dof=0) |
Determine mesh graph and initialize matrix. More... | |
void | setSkyline (Mesh &mesh) |
Determine matrix structure. More... | |
void | setDiag () |
Store diagonal entries in a separate internal vector. | |
void | set (size_t i, size_t j, const T_ &val) |
Assign a value to an entry ofthe matrix. More... | |
void | Axpy (T_ a, const SkSMatrix< 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 | MultAdd (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply matrix by vector x and add to y . More... | |
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 in y More... | |
void | TMult (const Vect< T_ > &x, Vect< T_ > &y) const |
Multiply transpose of matrix by vector x and save in y. More... | |
void | add (size_t i, size_t j, const T_ &val) |
Add a constant to an entry of the matrix. More... | |
size_t | getColHeight (size_t i) const |
Return column height. 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. | |
T_ & | operator() (size_t i, size_t j) |
Operator () (Non constant version). More... | |
T_ | operator() (size_t i, size_t j) const |
Operator () (Constant version). More... | |
SkSMatrix< T_ > & | operator= (const SkSMatrix< T_ > &m) |
Operator =. More... | |
SkSMatrix< T_ > & | operator= (const T_ &x) |
Operator =. More... | |
SkSMatrix< T_ > & | operator+= (const SkSMatrix< T_ > &m) |
Operator +=. More... | |
SkSMatrix< T_ > & | operator*= (const T_ &x) |
Operator *=. More... | |
int | setLDLt () |
Factorize matrix (LDLt (Crout) factorization). More... | |
int | solveLDLt (const Vect< T_ > &b, Vect< T_ > &x) |
Solve a linear system using the LDLt (Crout) factorization. More... | |
int | solve (Vect< T_ > &b) |
Solve linear system. More... | |
int | solve (const Vect< T_ > &b, Vect< T_ > &x) |
Solve linear system. More... | |
T_ * | get () const |
Return C-Array. More... | |
void | set (size_t i, T_ x) |
Assign a value to the i-th entry of C-array containing matrix. | |
T_ | get (size_t i, size_t j) const |
Return entry (i,j) of matrix if this one is stored, 0 else. | |
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 (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 Element &el, T_ *a) |
Assembly of element matrix into global matrix. More... | |
void | Assembly (const Element &el, const DMatrix< 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 | Assembly (const Side &sd, const DMatrix< 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+= (const Matrix< T_ > &m) |
Operator +=. More... | |
Matrix & | operator+= (const T_ &x) |
Operator +=. More... | |
Matrix & | operator-= (const Matrix< T_ > &m) |
Operator -=. More... | |
Matrix & | operator-= (const T_ &x) |
Operator -=. More... | |
Detailed Description
template<class T_>
class OFELI::SkSMatrix< T_ >
To handle symmetric matrices in skyline storage format.
This template class allows storing and manipulating a symmetric matrix in skyline storage format.
The matrix entries are stored column by column as in the following example:
/ \ | a0 a1 0 0 a7 | | a2 a3 0 a8 | | ... a4 a5 a9 | | a6 a10 | | a11 | \ /
- Template Parameters
-
T_ Data type (double, float, complex<double>, ...)
Member Function Documentation
T_* get | ( | ) | const |
Return C-Array.
Skyline of matrix is stored row by row.
|
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
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 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,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 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(..).
- 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).
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,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 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 cass 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.
|
inherited |
Operator +=.
Add constant value x
to all matrix entries.
Operator -=.
Subtract matrix m
from current matrix instance.
|
inherited |
Operator -=.
Subtract constant value x
from all matrix entries.