Symmetric sparse-matrix class. More...
#include <Matrix_SymSparse.hxx>
Public Types | |
typedef Allocator::value_type | value_type |
typedef Allocator::pointer | pointer |
typedef Allocator::const_pointer | const_pointer |
typedef Allocator::reference | reference |
typedef Allocator::const_reference | const_reference |
typedef Allocator::value_type | entry_type |
typedef Allocator::value_type | access_type |
typedef Allocator::value_type | const_access_type |
typedef SeldonDefaultAllocator< VectFull, int >::allocator | AllocatorInt |
typedef SeldonDefaultAllocator< VectFull, long >::allocator | AllocatorLong |
Public Member Functions | |
Matrix_SymSparse () | |
Default constructor. More... | |
Matrix_SymSparse (int i, int j) | |
Constructor. More... | |
Matrix_SymSparse (int i, int j, long nz) | |
Constructor. More... | |
template<class Storage0 , class Allocator0 , class Storage1 , class Allocator1 , class Storage2 , class Allocator2 > | |
Matrix_SymSparse (int i, int j, Vector< T, Storage0, Allocator0 > &values, Vector< long, Storage1, Allocator1 > &ptr, Vector< int, Storage2, Allocator2 > &ind) | |
Constructor. More... | |
Matrix_SymSparse (const Matrix_SymSparse< T, Prop, Storage, Allocator > &A) | |
Copy constructor. | |
~Matrix_SymSparse () | |
Destructor. | |
void | Clear () |
Clears the matrix. More... | |
template<class Storage0 , class Allocator0 , class Storage1 , class Allocator1 , class Storage2 , class Allocator2 > | |
void | SetData (int i, int j, Vector< T, Storage0, Allocator0 > &values, Vector< long, Storage1, Allocator1 > &ptr, Vector< int, Storage2, Allocator2 > &ind) |
Redefines the matrix. More... | |
void | SetData (int i, int j, long nz, pointer values, long *ptr, int *ind) |
void | Nullify () |
Clears the matrix without releasing memory. More... | |
void | Reallocate (int i, int j) |
Initialization of an empty sparse matrix with i rows and j columns. More... | |
void | Reallocate (int i, int j, long nz) |
Initialization of a sparse matrix with i rows and j columns. More... | |
void | Resize (int i, int j) |
Changing the number of rows and columns. More... | |
void | Resize (int i, int j, long nz) |
Changing the number of rows, columns and non-zero entries. More... | |
void | Copy (const Matrix_SymSparse< T, Prop, Storage, Allocator > &A) |
Copies a matrix. | |
long | GetNonZeros () const |
Returns the number of elements stored in memory. More... | |
long | GetDataSize () const |
Returns the number of elements stored in memory. More... | |
size_t | GetMemorySize () const |
returns size of matrix in bytes | |
long * | GetPtr () const |
Returns (row or column) start indices. More... | |
int * | GetInd () const |
Returns (row or column) indices of non-zero entries. More... | |
int | GetPtrSize () const |
Returns the length of the array of start indices. More... | |
long | GetIndSize () const |
Returns the length of the array of (column or row) indices. More... | |
void | FillPtrInt (Vector< int > &) const |
Fills vector ptr with integers instead of longs. | |
const value_type | operator() (int i, int j) const |
Access operator. More... | |
value_type & | Val (int i, int j) |
Access method. More... | |
value_type & | Get (int i, int j) |
Access method. More... | |
const value_type & | Val (int i, int j) const |
Access method. More... | |
const value_type & | Get (int i, int j) const |
Access method. More... | |
void | Set (int i, int j, const T &x) |
Sets an element (i, j) to a value. More... | |
void | SetEntry (int i, int j, const T &x) |
Sets an element (i, j) to a value. More... | |
void | AddInteraction (int i, int j, const T &x) |
Add a value to a non-zero entry. More... | |
void | AddInteractionRow (int i, int nb, const Vector< int > &col, const Vector< T > &val, bool sorted) |
Adds values to several non-zero entries on a given row. | |
Matrix_SymSparse< T, Prop, Storage, Allocator > & | operator= (const Matrix_SymSparse< T, Prop, Storage, Allocator > &A) |
Duplicates a matrix (assignment operator). More... | |
void | Zero () |
Resets all non-zero entries to 0-value. More... | |
void | SetIdentity () |
Sets the matrix to identity. More... | |
void | Fill () |
Fills the non-zero entries with 0, 1, 2, ... More... | |
template<class T0 > | |
void | Fill (const T0 &x) |
Fills the non-zero entries with a given value. More... | |
void | FillRand () |
Fills the non-zero entries randomly. More... | |
void | Print () const |
Displays the matrix on the standard output. More... | |
void | Write (string FileName) const |
Writes the matrix in a file. More... | |
void | Write (ostream &FileStream) const |
Writes the matrix to an output stream. More... | |
void | WriteText (string FileName, bool cplx=false) const |
Writes the matrix in a file. More... | |
void | WriteText (ostream &FileStream, bool cplx=false) const |
Writes the matrix to an output stream. More... | |
void | Read (string FileName) |
Reads the matrix from a file. More... | |
void | Read (istream &FileStream) |
Reads the matrix from an input stream. More... | |
void | ReadText (string FileName, bool cplx=false) |
Reads the matrix from a file. More... | |
void | ReadText (istream &FileStream, bool cplx=false) |
Reads the matrix from an input stream. More... | |
template<class T , class Prop , class Storage , class Allocator > | |
void | SetData (int i, int j, long nz, typename Matrix_SymSparse< T, Prop, Storage, Allocator > ::pointer values, long *ptr, int *ind) |
Redefines the matrix. More... | |
pointer | GetData () const |
Returns a pointer to the data array. More... | |
const_pointer | GetDataConst () const |
Returns a const pointer to the data array. More... | |
void * | GetDataVoid () const |
Returns a pointer of type "void*" to the data array. More... | |
const void * | GetDataConstVoid () const |
Returns a pointer of type "const void*" to the data array. More... | |
int | GetM () const |
Returns the number of rows. More... | |
int | GetM (const Seldon::SeldonTranspose &status) const |
Returns the number of rows of the matrix possibly transposed. More... | |
int | GetM (const CBLAS_TRANSPOSE &status) const |
Returns the number of rows of the matrix possibly transposed. More... | |
int | GetN () const |
Returns the number of columns. More... | |
int | GetN (const Seldon::SeldonTranspose &status) const |
Returns the number of columns of the matrix possibly transposed. More... | |
int | GetN (const CBLAS_TRANSPOSE &status) const |
Returns the number of columns of the matrix possibly transposed. More... | |
long | GetSize () const |
Returns the number of elements in the matrix. More... | |
Protected Attributes | |
long | nz_ |
long * | ptr_ |
int * | ind_ |
pointer | data_ |
int | m_ |
int | n_ |
Symmetric sparse-matrix class.
Symmetric sparse matrices are defined by: (1) the number of rows and columns; (2) the number of non-zero entries; (3) an array 'ptr_' of start indices (i.e. indices of the first element of each row or column, depending on the storage); (4) an array 'ind_' of column or row indices of each non-zero entry; (5) values of non-zero entries.
Definition at line 46 of file Matrix_SymSparse.hxx.
|
inline |
Default constructor.
Builds an empty matrix.
Definition at line 39 of file Matrix_SymSparseInline.cxx.
|
inline |
Constructor.
Builds a i by j sparse matrix.
i | number of rows. |
j | number of columns. |
Definition at line 57 of file Matrix_SymSparseInline.cxx.
|
inline |
Constructor.
Builds a sparse matrix of size i x j , with nz non-zero (stored) elements.
i | number of rows. |
j | number of columns. |
nz | number of non-zero elements that are stored. |
Definition at line 79 of file Matrix_SymSparseInline.cxx.
Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Matrix_SymSparse | ( | int | i, |
int | j, | ||
Vector< T, Storage0, Allocator0 > & | values, | ||
Vector< long, Storage1, Allocator1 > & | ptr, | ||
Vector< int, Storage2, Allocator2 > & | ind | ||
) |
Constructor.
Builds a i by j sparse matrix with non-zero values and indices provided by 'values' (values), 'ptr' (pointers) and 'ind' (indices). Input vectors are released and are empty on exit.
i | number of rows. |
j | number of columns. |
values | values of non-zero entries. |
ptr | row or column start indices. |
ind | row or column indices. |
Definition at line 52 of file Matrix_SymSparse.cxx.
|
inline |
Add a value to a non-zero entry.
This function adds val to the element (i, j), provided that this element is already a non-zero entry. Otherwise a non-zero entry is inserted equal to val.
[in] | i | row index. |
[in] | j | column index. |
[in] | val | value to be added to the element (i, j). |
Definition at line 216 of file Matrix_SymSparseInline.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Clear |
Clears the matrix.
This methods is equivalent to the destructor. On exit, the matrix is empty (0x0).
Definition at line 143 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Fill |
Fills the non-zero entries with 0, 1, 2, ...
On exit, the non-zero entries are 0, 1, 2, 3, ... The order of the numbers depends on the storage.
Definition at line 1161 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Fill | ( | const T0 & | x | ) |
Fills the non-zero entries with a given value.
x | the value to set the non-zero entries to. |
Definition at line 1174 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::FillRand |
Fills the non-zero entries randomly.
Definition at line 1188 of file Matrix_SymSparse.cxx.
Matrix_SymSparse< T, Prop, Storage, Allocator >::value_type & Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Get | ( | int | i, |
int | j | ||
) |
Access method.
Returns reference to element (i, j)
[in] | i | row index. |
[in] | j | column index. |
Definition at line 1053 of file Matrix_SymSparse.cxx.
|
inline |
Access method.
Returns reference to element (i, j)
[in] | i | row index. |
[in] | j | column index. |
Definition at line 200 of file Matrix_SymSparseInline.cxx.
|
inlineinherited |
Returns a pointer to the data array.
Returns a pointer to data, i.e. the data array 'data_'.
Definition at line 241 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns a const pointer to the data array.
Returns a const pointer to data, i.e. the data array 'data_'.
Definition at line 254 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns a pointer of type "const void*" to the data array.
Returns a pointer of type "const void*" to data, i.e. the data array 'data_'.
Definition at line 280 of file Matrix_BaseInline.cxx.
|
inline |
Returns the number of elements stored in memory.
Definition at line 126 of file Matrix_SymSparseInline.cxx.
|
inlineinherited |
Returns a pointer of type "void*" to the data array.
Returns a pointer of type "void*" to data, i.e. the data array 'data_'.
Definition at line 267 of file Matrix_BaseInline.cxx.
|
inline |
Returns (row or column) indices of non-zero entries.
Returns the array ('ind_') of (row or column) indices of non-zero entries. This array defines non-zero entries indices if coupled with (column or row) start indices.
Definition at line 153 of file Matrix_SymSparseInline.cxx.
|
inline |
Returns the length of the array of (column or row) indices.
Returns the length of the array ('ind_') of (row or column) indices of non-zero entries (that are stored). This array defines non-zero entries indices (that are stored) if coupled with (column or row) start indices.
Definition at line 181 of file Matrix_SymSparseInline.cxx.
|
inlineinherited |
Returns the number of rows.
Definition at line 69 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of rows of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 122 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of rows of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 92 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of columns.
Definition at line 80 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of columns of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 137 of file Matrix_BaseInline.cxx.
|
inlineinherited |
Returns the number of columns of the matrix possibly transposed.
status | assumed status about the transposition of the matrix. |
Definition at line 107 of file Matrix_BaseInline.cxx.
|
inline |
Returns the number of elements stored in memory.
Definition at line 114 of file Matrix_SymSparseInline.cxx.
|
inline |
Returns (row or column) start indices.
Returns the array ('ptr_') of start indices.
Definition at line 138 of file Matrix_SymSparseInline.cxx.
|
inline |
Returns the length of the array of start indices.
Definition at line 164 of file Matrix_SymSparseInline.cxx.
|
inlineinherited |
Returns the number of elements in the matrix.
Returns the number of elements in the matrix, i.e. the number of rows multiplied by the number of columns.
Definition at line 153 of file Matrix_BaseInline.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Nullify |
Clears the matrix without releasing memory.
On exit, the matrix is empty and the memory has not been released. It is useful for low level manipulations on a Matrix instance.
Definition at line 339 of file Matrix_SymSparse.cxx.
const Matrix_SymSparse< T, Prop, Storage, Allocator >::value_type Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::operator() | ( | int | i, |
int | j | ||
) | const |
Access operator.
Returns the value of element (i, j).
i | row index. |
j | column index. |
Definition at line 880 of file Matrix_SymSparse.cxx.
|
inline |
Duplicates a matrix (assignment operator).
A | matrix to be copied. |
Definition at line 270 of file Matrix_SymSparseInline.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Print |
Displays the matrix on the standard output.
Displays elements on the standard output, in text format. Each row is displayed on a single line and elements of a row are delimited by tabulations.
Definition at line 1205 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Read | ( | istream & | FileStream | ) |
Reads the matrix from an input stream.
Reads a matrix in binary format from an input stream.
FileStream | input stream |
Definition at line 1367 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Read | ( | string | FileName | ) |
Reads the matrix from a file.
Reads a matrix stored in binary format in a file.
FileName | input file name. |
Definition at line 1342 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::ReadText | ( | istream & | FileStream, |
bool | cplx = false |
||
) |
Reads the matrix from an input stream.
Reads a matrix from a stream in text format.
FileStream | input stream. |
cplx | if true the real part and imaginary part are given in two separate columns, otherwise the complex values are written (a,b) |
Definition at line 1439 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::ReadText | ( | string | FileName, |
bool | cplx = false |
||
) |
Reads the matrix from a file.
Reads the matrix from a file in text format.
FileName | input file name. |
cplx | if true the real part and imaginary part are given in two separate columns, otherwise the complex values are written (a,b) |
Definition at line 1411 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Reallocate | ( | int | i, |
int | j | ||
) |
Initialization of an empty sparse matrix with i rows and j columns.
i | number of rows |
j | number of columns |
Definition at line 356 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Reallocate | ( | int | i, |
int | j, | ||
long | nz | ||
) |
Initialization of a sparse matrix with i rows and j columns.
i | number of rows |
j | number of columns |
nz | number of non-zero entries |
Definition at line 415 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Resize | ( | int | i, |
int | j | ||
) |
Changing the number of rows and columns.
i | number of rows |
j | number of columns |
Definition at line 561 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Resize | ( | int | i, |
int | j, | ||
long | nz | ||
) |
Changing the number of rows, columns and non-zero entries.
i | number of rows |
j | number of columns Previous entries are kept during the operation |
Definition at line 578 of file Matrix_SymSparse.cxx.
|
inline |
Sets an element (i, j) to a value.
This function sets val to the element (i, j)
[in] | i | row index. |
[in] | j | column index. |
[in] | val | A(i, j) = val |
Definition at line 241 of file Matrix_SymSparseInline.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::SetData | ( | int | i, |
int | j, | ||
long | nz, | ||
typename Matrix_SymSparse< T, Prop, Storage, Allocator > ::pointer | values, | ||
long * | ptr, | ||
int * | ind | ||
) |
Redefines the matrix.
It clears the matrix and sets it to a new matrix defined by arrays 'values' (values), 'ptr' (pointers) and 'ind' (indices).
i | number of rows. |
j | number of columns. |
nz | number of non-zero entries that are stored. |
values | values of non-zero entries. |
ptr | row or column start indices. |
ind | row or column indices. |
Definition at line 316 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::SetData | ( | int | i, |
int | j, | ||
Vector< T, Storage0, Allocator0 > & | values, | ||
Vector< long, Storage1, Allocator1 > & | ptr, | ||
Vector< int, Storage2, Allocator2 > & | ind | ||
) |
Redefines the matrix.
It clears the matrix and sets it to a new matrix defined by 'values' (values), 'ptr' (pointers) and 'ind' (indices). Input vectors are released and are empty on exit.
i | number of rows. |
j | number of columns. |
values | values of non-zero entries. |
ptr | row or column start indices. |
ind | row or column indices. |
Definition at line 226 of file Matrix_SymSparse.cxx.
|
inline |
Sets an element (i, j) to a value.
This function sets val to the element (i, j)
[in] | i | row index. |
[in] | j | column index. |
[in] | val | A(i, j) = val |
Definition at line 255 of file Matrix_SymSparseInline.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::SetIdentity |
Sets the matrix to identity.
This method fills the diagonal of the matrix with ones.
Definition at line 1132 of file Matrix_SymSparse.cxx.
Matrix_SymSparse< T, Prop, Storage, Allocator >::value_type & Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Val | ( | int | i, |
int | j | ||
) |
Access method.
Returns the value of element (i, j) if it can be returned as a reference.
[in] | i | row index. |
[in] | j | column index. |
WrongArgument | No reference can be returned because the element is a zero entry (not stored in the matrix). |
Definition at line 936 of file Matrix_SymSparse.cxx.
const Matrix_SymSparse< T, Prop, Storage, Allocator >::value_type & Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Val | ( | int | i, |
int | j | ||
) | const |
Access method.
Returns the value of element (i, j) if it can be returned as a reference.
[in] | i | row index. |
[in] | j | column index. |
WrongArgument | No reference can be returned because the element is a zero entry (not stored in the matrix). |
Definition at line 995 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Write | ( | ostream & | FileStream | ) | const |
Writes the matrix to an output stream.
Stores the matrix in an output stream in binary format.
FileStream | output stream. |
Definition at line 1248 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Write | ( | string | FileName | ) | const |
Writes the matrix in a file.
Stores the matrix in a file in binary format.
FileName | output file name. |
Definition at line 1223 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::WriteText | ( | ostream & | FileStream, |
bool | cplx = false |
||
) | const |
Writes the matrix to an output stream.
Stores the matrix in a file in ascii format. The entries are written in coordinate format (row index, column index, value). Row and column indexes start at 1.
FileStream | output file name. |
cplx | if true the real part and imaginary part are given in two separate columns, otherwise the complex values are written (a,b) |
Definition at line 1316 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::WriteText | ( | string | FileName, |
bool | cplx = false |
||
) | const |
Writes the matrix in a file.
Stores the matrix in a file in ascii format. The entries are written in coordinate format (row index, column index, value). Row and column indexes start at 1.
FileName | output file name. |
cplx | if true the real part and imaginary part are written in two separate columns, otherwise the complex values are written (a,b) |
Definition at line 1284 of file Matrix_SymSparse.cxx.
void Seldon::Matrix_SymSparse< T, Prop, Storage, Allocator >::Zero |
Resets all non-zero entries to 0-value.
The sparsity pattern remains unchanged.
Definition at line 1121 of file Matrix_SymSparse.cxx.