Class SparseMatrix

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)

Public Members

const size_t &row_index
const size_t &column_index
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
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
struct EntryReference

Public Functions

inline EntryReference(const size_t &row_id, const size_t &column_id, double &value)

Public Members

const size_t &row_index
const size_t &column_index
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