strumpack::CSRMatrix< scalar_t, integer_t > Class Template Reference

Class for storing a compressed sparse row matrix (single node). More...

#include <CSRMatrix.hpp>

Inheritance diagram for strumpack::CSRMatrix< scalar_t, integer_t >:
Collaboration diagram for strumpack::CSRMatrix< scalar_t, integer_t >:

Public Member Functions

 CSRMatrix (integer_t n, integer_t nnz)
 
 CSRMatrix (integer_t n, const integer_t *ptr, const integer_t *ind, const scalar_t *values, bool symm_sparsity=false)
 
real_t norm1 () const override
 
void spmv (const DenseM_t &x, DenseM_t &y) const override
 
void spmv (const scalar_t *x, scalar_t *y) const override
 
void spmv (Trans op, const DenseM_t &x, DenseM_t &y) const
 
Equil_t equilibration () const override
 
void equilibrate (const Equil_t &eq) override
 
void permute_columns (const std::vector< integer_t > &perm) override
 
real_t max_scaled_residual (const scalar_t *x, const scalar_t *b) const override
 
real_t max_scaled_residual (const DenseM_t &x, const DenseM_t &b) const override
 
std::unique_ptr< CSRMatrix< scalar_t, integer_t > > add_missing_diagonal (const scalar_t &s) const
 
int read_matrix_market (const std::string &filename) override
 
int read_binary (const std::string &filename)
 
void print_dense (const std::string &name) const override
 
void print_matrix_market (const std::string &filename) const override
 
void print_binary (const std::string &filename) const
 
CSRGraph< integer_t > extract_graph (int ordering_level, integer_t lo, integer_t hi) const override
 
CSRGraph< integer_t > extract_graph_sep_CB (int ordering_level, integer_t lo, integer_t hi, const std::vector< integer_t > &upd) const override
 
CSRGraph< integer_t > extract_graph_CB_sep (int ordering_level, integer_t lo, integer_t hi, const std::vector< integer_t > &upd) const override
 
CSRGraph< integer_t > extract_graph_CB (int ordering_level, const std::vector< integer_t > &upd) const override
 
- Public Member Functions inherited from strumpack::CompressedSparseMatrix< scalar_t, integer_t >
virtual ~CompressedSparseMatrix ()
 
integer_t size () const
 
integer_t nnz () const
 
const integer_t * ptr () const
 
const integer_t * ind () const
 
const scalar_t * val () const
 
integer_t * ptr ()
 
integer_t * ind ()
 
scalar_t * val ()
 
const integer_t & ptr (integer_t i) const
 
const integer_t & ind (integer_t i) const
 
const scalar_t & val (integer_t i) const
 
integer_t & ptr (integer_t i)
 
integer_t & ind (integer_t i)
 
scalar_t & val (integer_t i)
 
virtual real_t norm1 () const =0
 
bool symm_sparse () const
 
void set_symm_sparse (bool symm_sparse=true)
 
virtual void spmv (const DenseM_t &x, DenseM_t &y) const =0
 
virtual void spmv (const scalar_t *x, scalar_t *y) const =0
 
virtual void permute (const integer_t *iorder, const integer_t *order)
 
virtual void permute (const std::vector< integer_t > &iorder, const std::vector< integer_t > &order)
 
virtual void permute_columns (const std::vector< integer_t > &perm)=0
 
virtual Equil_t equilibration () const
 
virtual void equilibrate (const Equil_t &)
 
virtual Match_t matching (MatchingJob, bool apply=true)
 
virtual void apply_matching (const Match_t &)
 
virtual void symmetrize_sparsity ()
 
virtual void print () const
 
virtual void print_dense (const std::string &name) const
 
virtual void print_matrix_market (const std::string &filename) const
 
virtual int read_matrix_market (const std::string &filename)=0
 
virtual real_t max_scaled_residual (const scalar_t *x, const scalar_t *b) const =0
 
virtual real_t max_scaled_residual (const DenseM_t &x, const DenseM_t &b) const =0
 

Detailed Description

template<typename scalar_t, typename integer_t>
class strumpack::CSRMatrix< scalar_t, integer_t >

Class for storing a compressed sparse row matrix (single node).

Template Parameters
scalar_t
integer_t
See also
CompressedSparseMatrix, CSRMatrixMPI

Member Function Documentation

◆ equilibrate()

template<typename scalar_t , typename integer_t >
void strumpack::CSRMatrix< scalar_t, integer_t >::equilibrate ( const Equil_t eq)
overridevirtual

◆ equilibration()

template<typename scalar_t , typename integer_t >
Equil_t strumpack::CSRMatrix< scalar_t, integer_t >::equilibration ( ) const
overridevirtual

◆ max_scaled_residual() [1/2]

template<typename scalar_t , typename integer_t >
real_t strumpack::CSRMatrix< scalar_t, integer_t >::max_scaled_residual ( const DenseM_t x,
const DenseM_t b 
) const
overridevirtual

◆ max_scaled_residual() [2/2]

template<typename scalar_t , typename integer_t >
real_t strumpack::CSRMatrix< scalar_t, integer_t >::max_scaled_residual ( const scalar_t *  x,
const scalar_t *  b 
) const
overridevirtual

◆ norm1()

template<typename scalar_t , typename integer_t >
real_t strumpack::CSRMatrix< scalar_t, integer_t >::norm1 ( ) const
overridevirtual

◆ permute_columns()

template<typename scalar_t , typename integer_t >
void strumpack::CSRMatrix< scalar_t, integer_t >::permute_columns ( const std::vector< integer_t > &  perm)
overridevirtual

◆ print_dense()

template<typename scalar_t , typename integer_t >
void strumpack::CSRMatrix< scalar_t, integer_t >::print_dense ( const std::string &  name) const
overridevirtual

◆ print_matrix_market()

template<typename scalar_t , typename integer_t >
void strumpack::CSRMatrix< scalar_t, integer_t >::print_matrix_market ( const std::string &  filename) const
overridevirtual

◆ read_matrix_market()

template<typename scalar_t , typename integer_t >
int strumpack::CSRMatrix< scalar_t, integer_t >::read_matrix_market ( const std::string &  filename)
overridevirtual

◆ spmv() [1/2]

template<typename scalar_t , typename integer_t >
void strumpack::CSRMatrix< scalar_t, integer_t >::spmv ( const DenseM_t x,
DenseM_t y 
) const
overridevirtual

Sparse matrix times dense vector/matrix product y = this * x x and y can have multiple columns. y should be pre-allocated!

TODO make the public interface non-virtual

Parameters
xinput right hand-side vector/matrix, should satisfy x.size() == this->size()
youtput, result of y = this * x, should satisfy y.size() == this->size()

Implements strumpack::CompressedSparseMatrix< scalar_t, integer_t >.

◆ spmv() [2/2]

template<typename scalar_t , typename integer_t >
void strumpack::CSRMatrix< scalar_t, integer_t >::spmv ( const scalar_t *  x,
scalar_t *  y 
) const
overridevirtual

Sparse matrix times dense vector product y = this * x x and y can have multiple columns. y should be pre-allocated.

TODO make the public interface non-virtual

Parameters
xinput right hand-side vector/matrix, should be a pointer to an array of size size()
youtput, result of y = this * x, should be a pointer to an array of size size(), already allocated

Implements strumpack::CompressedSparseMatrix< scalar_t, integer_t >.


The documentation for this class was generated from the following file: