Class SparseMatrix
Defined in File sparse_matrix.h
Nested Relationships
Nested Types
Class Documentation
-
class SparseMatrix
Sparse matrix utility. This is a basic CSR type sparse matrix which allows efficient matrix storage and multiplication. It is not intended for solving linear systems (use PETSc for that instead). It was originally developed for the transfer matrices of transport cross sections.
Public Functions
-
SparseMatrix(size_t num_rows, size_t num_cols)
Constructor with number of rows and columns constructor.
-
SparseMatrix(const SparseMatrix &matrix)
Copy constructor.
-
inline size_t GetNumRows() const
-
inline size_t GetNumCols() const
-
void Insert(size_t i, size_t j, double value)
Inserts a value into the matrix.
-
void InsertAdd(size_t i, size_t j, double value)
Inserts-Adds a value into the matrix with duplicate check.
-
double GetValueIJ(size_t i, size_t j) const
Returns the value in the matrix at the given location. This is a rather inefficient routine. Use the columns and values rather than directly this function.
-
void SetDiagonal(const std::vector<double> &diag)
Sets the diagonal of the matrix using a vector.
-
void Compress()
Sorts the column indices of each row for faster lookup.
-
std::string PrintStr() const
Prints the sparse matrix to string.
-
virtual ~SparseMatrix() = default
-
RowIteratorContext Row(size_t row_id)
-
ConstRowIteratorContext Row(size_t row_id) const
-
EntriesIterator begin()
-
EntriesIterator end()
Public Members
-
std::vector<std::vector<size_t>> rowI_indices
rowI_indices[i] is a vector indices j for the non-zero columns.
-
std::vector<std::vector<double>> rowI_values
rowI_values[i] corresponds to column indices and contains the non-zero value.
-
struct ConstEntryReference
Public Functions
-
inline ConstEntryReference(const size_t &row_id, const size_t &column_id, const double &value)
-
inline ConstEntryReference(const size_t &row_id, const size_t &column_id, const double &value)
-
class ConstRowIteratorContext
Public Functions
-
inline ConstRowIteratorContext(const SparseMatrix &matrix, size_t ref_row)
-
inline ConstRowIterator begin() const
-
inline ConstRowIterator end() const
-
class ConstRowIterator
Public Functions
-
inline ConstRowIterator(const ConstRowIteratorContext &context, size_t ref_entry)
-
inline ConstRowIterator operator++()
-
inline ConstRowIterator operator++(int)
-
inline ConstEntryReference operator*()
-
inline bool operator==(const ConstRowIterator &rhs) const
-
inline bool operator!=(const ConstRowIterator &rhs) const
-
inline ConstRowIterator(const ConstRowIteratorContext &context, size_t ref_entry)
-
inline ConstRowIteratorContext(const SparseMatrix &matrix, size_t ref_row)
-
class EntriesIterator
Iterator to loop over all matrix entries.
Public Functions
-
inline explicit EntriesIterator(SparseMatrix &context, size_t row)
-
inline void Advance()
-
inline EntriesIterator operator++()
-
inline EntriesIterator operator++(int)
-
inline EntryReference operator*()
-
inline bool operator==(const EntriesIterator &rhs) const
-
inline bool operator!=(const EntriesIterator &rhs) const
-
inline explicit EntriesIterator(SparseMatrix &context, size_t row)
-
struct EntryReference
Public Functions
-
inline EntryReference(const size_t &row_id, const size_t &column_id, double &value)
-
inline EntryReference(const size_t &row_id, const size_t &column_id, double &value)
-
class RowIteratorContext
Public Functions
-
inline RowIteratorContext(SparseMatrix &matrix, size_t ref_row)
-
inline RowIterator begin()
-
inline RowIterator end()
-
class RowIterator
Public Functions
-
inline RowIterator(RowIteratorContext &context, size_t ref_entry)
-
inline RowIterator operator++()
-
inline RowIterator operator++(int)
-
inline EntryReference operator*()
-
inline bool operator==(const RowIterator &rhs) const
-
inline bool operator!=(const RowIterator &rhs) const
-
inline RowIterator(RowIteratorContext &context, size_t ref_entry)
-
inline RowIteratorContext(SparseMatrix &matrix, size_t ref_row)
-
SparseMatrix(size_t num_rows, size_t num_cols)