A class for compressed row matrices, a sparse storage format Once again the recursive template trick is used to inform that base class that is should use the access functions provided in the CRMatrix class. More...
#include <matrices.h>
Public Member Functions | |
CRMatrix () | |
Default constructor. More... | |
CRMatrix (const Vector< T > &value, const Vector< int > &column_index_, const Vector< int > &row_start_, const unsigned long &n, const unsigned long &m) | |
Constructor: Pass vector of values, vector of column indices, vector of row starts and number of rows and columns Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length. More... | |
CRMatrix (const CRMatrix &source_matrix) | |
Copy constructor. More... | |
void | operator= (const CRMatrix &)=delete |
Broken assignment operator. More... | |
virtual | ~CRMatrix () |
Destructor, delete any allocated memory. More... | |
T | get_entry (const unsigned long &i, const unsigned long &j) const |
Access function that will be called by the read-only round-bracket operator (const) More... | |
T & | entry (const unsigned long &i, const unsigned long &j) |
The read-write access function is deliberately broken. More... | |
int * | row_start () |
Access to C-style row_start array. More... | |
const int * | row_start () const |
Access to C-style row_start array (const version) More... | |
int * | column_index () |
Access to C-style column index array. More... | |
const int * | column_index () const |
Access to C-style column index array (const version) More... | |
void | output_bottom_right_zero_helper (std::ostream &outfile) const |
Output the "bottom right" entry regardless of it being zero or not (this allows automatic detection of matrix size in e.g. matlab, python). More... | |
void | sparse_indexed_output_helper (std::ostream &outfile) const |
Indexed output function to print a matrix to the stream outfile as i,j,a(i,j) for a(i,j)!=0 only. More... | |
void | clean_up_memory () |
Wipe matrix data and set all values to 0. More... | |
void | build (const Vector< T > &value, const Vector< int > &column_index, const Vector< int > &row_start, const unsigned long &n, const unsigned long &m) |
Build matrix from compressed representation. Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length. This matrix forms the storage for CRDoubleMatrices which are distributable. The argument n should be the number of local rows. The argument m is the number of columns. More... | |
void | build_without_copy (T *value, int *column_index, int *row_start, const unsigned long &nnz, const unsigned long &n, const unsigned long &m) |
Function to build matrix from pointers to arrays which hold the row starts, column indices and non-zero values. The final two arguments are the number of rows and columns. Note that, as the name suggests, this function does not make a copy of the data pointed to by the first three arguments! More... | |
Public Member Functions inherited from oomph::SparseMatrix< T, CRMatrix< T > > | |
SparseMatrix () | |
Default constructor. More... | |
SparseMatrix (const SparseMatrix &source_matrix) | |
Copy constructor. More... | |
void | operator= (const SparseMatrix &)=delete |
Broken assignment operator. More... | |
virtual | ~SparseMatrix () |
Destructor, delete the memory associated with the values. More... | |
T * | value () |
Access to C-style value array. More... | |
const T * | value () const |
Access to C-style value array (const version) More... | |
unsigned long | nrow () const |
Return the number of rows of the matrix. More... | |
unsigned long | ncol () const |
Return the number of columns of the matrix. More... | |
unsigned long | nnz () const |
Return the number of nonzero entries. More... | |
Public Member Functions inherited from oomph::Matrix< T, MATRIX_TYPE > | |
Matrix () | |
(Empty) constructor More... | |
Matrix (const Matrix &matrix)=delete | |
Broken copy constructor. More... | |
void | operator= (const Matrix &)=delete |
Broken assignment operator. More... | |
virtual | ~Matrix () |
Virtual (empty) destructor. More... | |
T | operator() (const unsigned long &i, const unsigned long &j) const |
Round brackets to give access as a(i,j) for read only (we're not providing a general interface for component-wise write access since not all matrix formats allow efficient direct access!) The function uses the MATRIX_TYPE template parameter to call the get_entry() function which must be defined in all derived classes that are to be fully instantiated. More... | |
T & | operator() (const unsigned long &i, const unsigned long &j) |
Round brackets to give access as a(i,j) for read-write access. The function uses the MATRIX_TYPE template parameter to call the entry() function which must be defined in all derived classes that are to be fully instantiated. If the particular Matrix does not allow write access, the function should break with an error message. More... | |
virtual void | output (std::ostream &outfile) const |
Output function to print a matrix row-by-row, in the form a(0,0) a(0,1) ... a(1,0) a(1,1) ... ... to the stream outfile. Broken virtual since it might not be sensible to implement this for some sparse matrices. More... | |
void | sparse_indexed_output (std::ostream &outfile, const unsigned &precision=0, const bool &output_bottom_right_zero=false) const |
Indexed output function to print a matrix to the stream outfile as i,j,a(i,j) for a(i,j)!=0 only with specified precision (if precision=0 then nothing is changed). If optional boolean flag is set to true we also output the "bottom right" entry regardless of it being zero or not (this allows automatic detection of matrix size in e.g. matlab, python). More... | |
void | sparse_indexed_output (std::string filename, const unsigned &precision=0, const bool &output_bottom_right_zero=false) const |
Indexed output function to print a matrix to the file named filename as i,j,a(i,j) for a(i,j)!=0 only with specified precision. If optional boolean flag is set to true we also output the "bottom right" entry regardless of it being zero or not (this allows automatic detection of matrix size in e.g. matlab, python). More... | |
Protected Attributes | |
int * | Column_index |
Column index. More... | |
int * | Row_start |
Start index for row. More... | |
Protected Attributes inherited from oomph::SparseMatrix< T, CRMatrix< T > > | |
T * | Value |
Internal representation of the matrix values, a pointer. More... | |
unsigned long | N |
Number of rows. More... | |
unsigned long | M |
Number of columns. More... | |
unsigned long | Nnz |
Number of non-zero values (i.e. size of Value array) More... | |
Additional Inherited Members | |
Protected Member Functions inherited from oomph::Matrix< T, MATRIX_TYPE > | |
void | range_check (const unsigned long &i, const unsigned long &j) const |
Range check to catch when an index is out of bounds, if so, it issues a warning message and dies by throwing an OomphLibError . More... | |
Static Protected Attributes inherited from oomph::SparseMatrix< T, CRMatrix< T > > | |
static T | Zero |
Dummy zero. More... | |
A class for compressed row matrices, a sparse storage format Once again the recursive template trick is used to inform that base class that is should use the access functions provided in the CRMatrix class.
Definition at line 681 of file matrices.h.
|
inline |
Default constructor.
Definition at line 685 of file matrices.h.
References oomph::CRMatrix< T >::Column_index, and oomph::CRMatrix< T >::Row_start.
|
inline |
Constructor: Pass vector of values, vector of column indices, vector of row starts and number of rows and columns Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length.
Definition at line 697 of file matrices.h.
References oomph::CRMatrix< T >::build(), oomph::CRMatrix< T >::Column_index, oomph::CRMatrix< T >::Row_start, and oomph::SparseMatrix< T, CRMatrix< T > >::value().
|
inline |
Copy constructor.
Definition at line 710 of file matrices.h.
References oomph::CRMatrix< T >::column_index(), oomph::CRMatrix< T >::Column_index, i, oomph::SparseMatrix< T, CRMatrix< T > >::N, oomph::SparseMatrix< T, CRMatrix< T > >::Nnz, oomph::CRMatrix< T >::row_start(), and oomph::CRMatrix< T >::Row_start.
|
inlinevirtual |
Destructor, delete any allocated memory.
Definition at line 738 of file matrices.h.
References oomph::CRMatrix< T >::Column_index, and oomph::CRMatrix< T >::Row_start.
void oomph::CRMatrix< T >::build | ( | const Vector< T > & | value, |
const Vector< int > & | column_index, | ||
const Vector< int > & | row_start, | ||
const unsigned long & | n, | ||
const unsigned long & | m | ||
) |
Build matrix from compressed representation. Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length. This matrix forms the storage for CRDoubleMatrices which are distributable. The argument n should be the number of local rows. The argument m is the number of columns.
Build matrix from compressed representation. Number of nonzero entries is read off from value, so make sure the vector has been shrunk to its correct length. The optional final parameter specifies the number of columns. If it is not specified the matrix is assumed to be quadratic.
Definition at line 3404 of file matrices.h.
References i, oomph::QuadTreeNames::N, and oomph::ElementGeometry::T.
Referenced by oomph::CRComplexMatrix::add(), oomph::CRDoubleMatrix::build(), oomph::CRDoubleMatrix::CRDoubleMatrix(), and oomph::CRMatrix< T >::CRMatrix().
void oomph::CRMatrix< T >::build_without_copy | ( | T * | value, |
int * | column_index, | ||
int * | row_start, | ||
const unsigned long & | nnz, | ||
const unsigned long & | n, | ||
const unsigned long & | m | ||
) |
Function to build matrix from pointers to arrays which hold the row starts, column indices and non-zero values. The final two arguments are the number of rows and columns. Note that, as the name suggests, this function does not make a copy of the data pointed to by the first three arguments!
Function to build a CRMatrix from pointers to arrays which hold the row starts, column indices and non-zero values Note that, as the name suggests, this function does not make a copy of the data pointed to by the first three arguments!
Definition at line 3354 of file matrices.h.
References oomph::QuadTreeNames::N.
Referenced by oomph::CRDoubleMatrix::build_without_copy(), and oomph::CRComplexMatrix::multiply().
void oomph::CRMatrix< T >::clean_up_memory |
Wipe matrix data and set all values to 0.
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Wipe matrix data and set all values to 0.
Definition at line 3323 of file matrices.h.
References oomph::QuadTreeNames::N.
Referenced by oomph::CRDoubleMatrix::build(), oomph::CRDoubleMatrix::build_without_copy(), and oomph::CRDoubleMatrix::clear().
|
inline |
Access to C-style column index array.
Definition at line 797 of file matrices.h.
References oomph::CRMatrix< T >::Column_index.
Referenced by oomph::CRComplexMatrix::add(), oomph::CRDoubleMatrix::column_index(), oomph::CRMatrix< T >::CRMatrix(), oomph::CRDoubleMatrix::matrix_reduction(), oomph::CRComplexMatrix::multiply(), oomph::CRDoubleMatrix::multiply(), and oomph::CRDoubleMatrix::multiply_transpose().
|
inline |
Access to C-style column index array (const version)
Definition at line 803 of file matrices.h.
References oomph::CRMatrix< T >::Column_index.
|
inline |
The read-write access function is deliberately broken.
Definition at line 764 of file matrices.h.
References oomph::Global_string_for_annotation::string(), and oomph::ElementGeometry::T.
|
inline |
Access function that will be called by the read-only round-bracket operator (const)
Definition at line 748 of file matrices.h.
References oomph::CRMatrix< T >::Column_index, i, oomph::Matrix< T, MATRIX_TYPE >::range_check(), oomph::CRMatrix< T >::Row_start, oomph::SparseMatrix< T, CRMatrix< T > >::Value, and oomph::SparseMatrix< T, CRMatrix< T > >::Zero.
Referenced by oomph::CRDoubleMatrix::diagonal_entries(), and oomph::CRDoubleMatrix::operator()().
|
delete |
Broken assignment operator.
|
inlinevirtual |
Output the "bottom right" entry regardless of it being zero or not (this allows automatic detection of matrix size in e.g. matlab, python).
Reimplemented from oomph::SparseMatrix< T, CRMatrix< T > >.
Definition at line 811 of file matrices.h.
References oomph::SparseMatrix< T, CRMatrix< T > >::M, oomph::SparseMatrix< T, CRMatrix< T > >::N, oomph::Matrix< T, MATRIX_TYPE >::operator()(), and oomph::ElementGeometry::T.
Referenced by oomph::CRDoubleMatrix::output_bottom_right_zero_helper().
|
inline |
Access to C-style row_start array.
Definition at line 785 of file matrices.h.
References oomph::CRMatrix< T >::Row_start.
Referenced by oomph::CRComplexMatrix::add(), oomph::CRMatrix< T >::CRMatrix(), oomph::CRDoubleMatrix::inf_norm(), oomph::CRDoubleMatrix::matrix_reduction(), oomph::CRComplexMatrix::multiply(), oomph::CRDoubleMatrix::multiply(), oomph::CRDoubleMatrix::multiply_transpose(), and oomph::CRDoubleMatrix::row_start().
|
inline |
Access to C-style row_start array (const version)
Definition at line 791 of file matrices.h.
References oomph::CRMatrix< T >::Row_start.
|
inlinevirtual |
Indexed output function to print a matrix to the stream outfile as i,j,a(i,j) for a(i,j)!=0 only.
Reimplemented from oomph::SparseMatrix< T, CRMatrix< T > >.
Definition at line 828 of file matrices.h.
References oomph::CRMatrix< T >::Column_index, i, oomph::SparseMatrix< T, CRMatrix< T > >::N, oomph::CRMatrix< T >::Row_start, and oomph::SparseMatrix< T, CRMatrix< T > >::Value.
Referenced by oomph::CRDoubleMatrix::sparse_indexed_output_helper().
|
protected |
Column index.
Definition at line 870 of file matrices.h.
Referenced by oomph::CRMatrix< T >::column_index(), oomph::CRMatrix< T >::CRMatrix(), oomph::CRMatrix< T >::get_entry(), oomph::CRMatrix< T >::sparse_indexed_output_helper(), and oomph::CRMatrix< T >::~CRMatrix().
|
protected |
Start index for row.
Definition at line 873 of file matrices.h.
Referenced by oomph::CRMatrix< T >::CRMatrix(), oomph::CRMatrix< T >::get_entry(), oomph::CRMatrix< T >::row_start(), oomph::CRMatrix< T >::sparse_indexed_output_helper(), and oomph::CRMatrix< T >::~CRMatrix().