Nektar++
|
#include <SparseMatrixFwd.hpp>
Classes | |
class | const_iterator |
Public Types | |
typedef T | DataType |
typedef Array< OneD, DataType > | DataVectorType |
typedef Array< OneD, const DataType > | ConstDataVectorType |
typedef Array< OneD, IndexType > | IndexVectorType |
typedef void(* | MultiplyKernel) (const double *, const double *, double *) |
Public Member Functions | |
StorageSmvBsr (const IndexType blkRows, const IndexType blkCols, const IndexType blkDim, const BCOMatType &bcoMat, const MatrixStorage matType=eFULL) | |
StorageSmvBsr (const StorageSmvBsr &src) | |
~StorageSmvBsr () | |
IndexType | GetRows () const |
IndexType | GetColumns () const |
IndexType | GetNumNonZeroEntries () const |
IndexType | GetNumStoredDoubles () const |
IndexType | GetBlkSize () const |
DataType | GetFillInRatio () const |
size_t | GetMemoryUsage () const |
const_iterator | begin () const |
const_iterator | end () const |
const DataType & | GetValue (IndexType row, IndexType column) const |
void | Multiply (const DataType *in, DataType *out) |
void | Multiply (const DataVectorType &in, DataVectorType &out) |
void | MultiplyLight (const DataVectorType &in, DataVectorType &out) |
Protected Member Functions | |
void | processBcoInput (const IndexType blkRows, const IndexType blkDim, const BCOMatType &bcoMat) |
void | Multiply_1x1 (const int mb, const double *val, const int *bindx, const int *bpntrb, const int *bpntre, const double *b, double *c) |
Zero-based CSR multiply. Essentially this is slightly modified copy-paste from NIST Sparse Blas 0.9b routine CSR_VecMult_CAB_double() More... | |
void | Multiply_2x2 (const int mb, const double *val, const int *bindx, const int *bpntrb, const int *bpntre, const double *b, double *c) |
Zero-based BSR multiply unrolled for 2x2 blocks. Essentially this is slightly optimised copy-paste from NIST Sparse Blas 0.9b routine BSR_VecMult_BAB_double() More... | |
void | Multiply_3x3 (const int mb, const double *val, const int *bindx, const int *bpntrb, const int *bpntre, const double *b, double *c) |
Zero-based BSR multiply unrolled for 3x3 blocks. More... | |
void | Multiply_4x4 (const int mb, const double *val, const int *bindx, const int *bpntrb, const int *bpntre, const double *b, double *c) |
Zero-based BSR multiply unrolled for 4x4 blocks. More... | |
void | Multiply_generic (const int mb, const double *val, const int *bindx, const int *bpntrb, const int *bpntre, const double *b, double *c) |
Generic zero-based BSR multiply for higher matrix ranks. More... | |
Definition at line 70 of file SparseMatrixFwd.hpp.
typedef Array<OneD, const DataType> Nektar::StorageSmvBsr< T >::ConstDataVectorType |
Definition at line 69 of file StorageSmvBsr.hpp.
typedef T Nektar::StorageSmvBsr< T >::DataType |
Definition at line 67 of file StorageSmvBsr.hpp.
typedef Array<OneD, DataType> Nektar::StorageSmvBsr< T >::DataVectorType |
Definition at line 68 of file StorageSmvBsr.hpp.
typedef Array<OneD, IndexType> Nektar::StorageSmvBsr< T >::IndexVectorType |
Definition at line 70 of file StorageSmvBsr.hpp.
typedef void(* Nektar::StorageSmvBsr< T >::MultiplyKernel) (const double *, const double *, double *) |
Definition at line 72 of file StorageSmvBsr.hpp.
Nektar::StorageSmvBsr< DataType >::StorageSmvBsr | ( | const IndexType | blkRows, |
const IndexType | blkCols, | ||
const IndexType | blkDim, | ||
const BCOMatType & | bcoMat, | ||
const MatrixStorage | matType = eFULL |
||
) |
Definition at line 214 of file StorageSmvBsr.cpp.
References Nektar::eFULL, and Nektar::StorageSmvBsr< T >::processBcoInput().
Nektar::StorageSmvBsr< DataType >::StorageSmvBsr | ( | const StorageSmvBsr< T > & | src | ) |
Definition at line 245 of file StorageSmvBsr.cpp.
Nektar::StorageSmvBsr< DataType >::~StorageSmvBsr | ( | ) |
Definition at line 259 of file StorageSmvBsr.cpp.
StorageSmvBsr< DataType >::const_iterator Nektar::StorageSmvBsr< DataType >::begin | ( | ) | const |
Definition at line 341 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, Nektar::StorageSmvBsr< T >::m_indx, Nektar::StorageSmvBsr< T >::m_matType, Nektar::StorageSmvBsr< T >::m_nnz, Nektar::StorageSmvBsr< T >::m_pntr, and Nektar::StorageSmvBsr< T >::m_val.
Referenced by Nektar::StorageSmvBsr< T >::const_iterator::const_iterator().
StorageSmvBsr< DataType >::const_iterator Nektar::StorageSmvBsr< DataType >::end | ( | ) | const |
IndexType Nektar::StorageSmvBsr< DataType >::GetBlkSize | ( | ) | const |
IndexType Nektar::StorageSmvBsr< DataType >::GetColumns | ( | ) | const |
Definition at line 271 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkCols, and Nektar::StorageSmvBsr< T >::m_blkDim.
DataType Nektar::StorageSmvBsr< DataType >::GetFillInRatio | ( | ) | const |
Definition at line 296 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, Nektar::StorageSmvBsr< T >::m_bnnz, and Nektar::StorageSmvBsr< T >::m_nnz.
size_t Nektar::StorageSmvBsr< DataType >::GetMemoryUsage | ( | ) | const |
Definition at line 303 of file StorageSmvBsr.cpp.
References Nektar::Array< OneD, const DataType >::capacity(), Nektar::StorageSmvBsr< T >::m_indx, Nektar::StorageSmvBsr< T >::m_pntr, and Nektar::StorageSmvBsr< T >::m_val.
IndexType Nektar::StorageSmvBsr< DataType >::GetNumNonZeroEntries | ( | ) | const |
IndexType Nektar::StorageSmvBsr< DataType >::GetNumStoredDoubles | ( | ) | const |
Definition at line 290 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, and Nektar::StorageSmvBsr< T >::m_bnnz.
IndexType Nektar::StorageSmvBsr< DataType >::GetRows | ( | ) | const |
Definition at line 265 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, and Nektar::StorageSmvBsr< T >::m_blkRows.
const DataType & Nektar::StorageSmvBsr< DataType >::GetValue | ( | IndexType | row, |
IndexType | column | ||
) | const |
Definition at line 314 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, Nektar::StorageSmvBsr< T >::m_indx, Nektar::StorageSmvBsr< T >::m_pntr, and Nektar::StorageSmvBsr< T >::m_val.
void Nektar::StorageSmvBsr< DataType >::Multiply | ( | const DataType * | in, |
DataType * | out | ||
) |
Definition at line 383 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, Nektar::StorageSmvBsr< T >::m_blkRows, Nektar::StorageSmvBsr< T >::m_indx, Nektar::StorageSmvBsr< T >::m_pntr, Nektar::StorageSmvBsr< T >::m_val, Nektar::StorageSmvBsr< T >::Multiply_1x1(), Nektar::StorageSmvBsr< T >::Multiply_2x2(), and Nektar::StorageSmvBsr< T >::Multiply_generic().
void Nektar::StorageSmvBsr< DataType >::Multiply | ( | const DataVectorType & | in, |
DataVectorType & | out | ||
) |
Definition at line 358 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, Nektar::StorageSmvBsr< T >::m_blkRows, Nektar::StorageSmvBsr< T >::m_indx, Nektar::StorageSmvBsr< T >::m_pntr, Nektar::StorageSmvBsr< T >::m_val, Nektar::StorageSmvBsr< T >::Multiply_1x1(), Nektar::StorageSmvBsr< T >::Multiply_2x2(), and Nektar::StorageSmvBsr< T >::Multiply_generic().
|
protected |
Zero-based CSR multiply. Essentially this is slightly modified copy-paste from NIST Sparse Blas 0.9b routine CSR_VecMult_CAB_double()
Definition at line 437 of file StorageSmvBsr.cpp.
Referenced by Nektar::StorageSmvBsr< T >::Multiply(), and Nektar::StorageSmvBsr< T >::MultiplyLight().
|
protected |
Zero-based BSR multiply unrolled for 2x2 blocks. Essentially this is slightly optimised copy-paste from NIST Sparse Blas 0.9b routine BSR_VecMult_BAB_double()
Definition at line 463 of file StorageSmvBsr.cpp.
Referenced by Nektar::StorageSmvBsr< T >::Multiply(), and Nektar::StorageSmvBsr< T >::MultiplyLight().
|
protected |
|
protected |
|
protected |
Generic zero-based BSR multiply for higher matrix ranks.
Definition at line 574 of file StorageSmvBsr.cpp.
References Blas::Dgemv(), and Nektar::StorageSmvBsr< T >::m_blkDim.
Referenced by Nektar::StorageSmvBsr< T >::Multiply(), and Nektar::StorageSmvBsr< T >::MultiplyLight().
void Nektar::StorageSmvBsr< DataType >::MultiplyLight | ( | const DataVectorType & | in, |
DataVectorType & | out | ||
) |
Definition at line 410 of file StorageSmvBsr.cpp.
References Nektar::StorageSmvBsr< T >::m_blkDim, Nektar::StorageSmvBsr< T >::m_blkRows, Nektar::StorageSmvBsr< T >::m_indx, Nektar::StorageSmvBsr< T >::m_pntr, Nektar::StorageSmvBsr< T >::m_val, Nektar::StorageSmvBsr< T >::Multiply_1x1(), Nektar::StorageSmvBsr< T >::Multiply_2x2(), and Nektar::StorageSmvBsr< T >::Multiply_generic().
|
protected |
Definition at line 608 of file StorageSmvBsr.cpp.
References CellMLToNektar.pycml::copy(), Nektar::NekConstants::kNekSparseNonZeroTol, Nektar::StorageSmvBsr< T >::m_indx, Nektar::StorageSmvBsr< T >::m_nnz, Nektar::StorageSmvBsr< T >::m_pntr, and Nektar::StorageSmvBsr< T >::m_val.
Referenced by Nektar::StorageSmvBsr< T >::StorageSmvBsr().
|
protected |
Definition at line 195 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::GetColumns().
|
protected |
Definition at line 196 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::begin(), Nektar::StorageSmvBsr< T >::end(), Nektar::StorageSmvBsr< T >::GetBlkSize(), Nektar::StorageSmvBsr< T >::GetColumns(), Nektar::StorageSmvBsr< T >::GetFillInRatio(), Nektar::StorageSmvBsr< T >::GetNumStoredDoubles(), Nektar::StorageSmvBsr< T >::GetRows(), Nektar::StorageSmvBsr< T >::GetValue(), Nektar::StorageSmvBsr< T >::Multiply(), Nektar::StorageSmvBsr< T >::Multiply_generic(), and Nektar::StorageSmvBsr< T >::MultiplyLight().
|
protected |
Definition at line 194 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::GetRows(), Nektar::StorageSmvBsr< T >::Multiply(), and Nektar::StorageSmvBsr< T >::MultiplyLight().
|
protected |
Definition at line 198 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::GetFillInRatio(), and Nektar::StorageSmvBsr< T >::GetNumStoredDoubles().
|
protected |
Definition at line 202 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::begin(), Nektar::StorageSmvBsr< T >::end(), Nektar::StorageSmvBsr< T >::GetMemoryUsage(), Nektar::StorageSmvBsr< T >::GetValue(), Nektar::StorageSmvBsr< T >::Multiply(), Nektar::StorageSmvBsr< T >::MultiplyLight(), and Nektar::StorageSmvBsr< T >::processBcoInput().
|
protected |
Definition at line 192 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::begin(), and Nektar::StorageSmvBsr< T >::end().
|
protected |
Definition at line 190 of file StorageSmvBsr.hpp.
|
protected |
Definition at line 199 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::begin(), Nektar::StorageSmvBsr< T >::end(), Nektar::StorageSmvBsr< T >::GetFillInRatio(), Nektar::StorageSmvBsr< T >::GetNumNonZeroEntries(), and Nektar::StorageSmvBsr< T >::processBcoInput().
|
protected |
Definition at line 203 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::begin(), Nektar::StorageSmvBsr< T >::end(), Nektar::StorageSmvBsr< T >::GetMemoryUsage(), Nektar::StorageSmvBsr< T >::GetValue(), Nektar::StorageSmvBsr< T >::Multiply(), Nektar::StorageSmvBsr< T >::MultiplyLight(), and Nektar::StorageSmvBsr< T >::processBcoInput().
|
protected |
Definition at line 201 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::begin(), Nektar::StorageSmvBsr< T >::end(), Nektar::StorageSmvBsr< T >::GetMemoryUsage(), Nektar::StorageSmvBsr< T >::GetValue(), Nektar::StorageSmvBsr< T >::Multiply(), Nektar::StorageSmvBsr< T >::MultiplyLight(), and Nektar::StorageSmvBsr< T >::processBcoInput().