Nektar++
|
#include <StorageSmvBsr.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 () | |
const IndexType | GetRows () const |
const IndexType | GetColumns () const |
const IndexType | GetNumNonZeroEntries () const |
const IndexType | GetNumStoredDoubles () const |
const IndexType | GetBlkSize () const |
const DataType | GetFillInRatio () const |
const size_t | GetMemoryUsage (IndexType nnz, IndexType nRows) const |
const_iterator | begin () const |
const_iterator | end () const |
const boost::call_traits < DataType >::const_reference | 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 blkColumns, const IndexType blkDim, const BCOMatType &bcoMat) |
void | Multiply_1x1 (const int mb, const int kb, 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() | |
void | Multiply_2x2 (const int mb, const int kb, 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() | |
void | Multiply_3x3 (const int mb, const int kb, 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. | |
void | Multiply_4x4 (const int mb, const int kb, 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. | |
void | Multiply_generic (const int mb, const int kb, 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. |
Definition at line 70 of file StorageSmvBsr.hpp.
typedef Array<OneD, const DataType> Nektar::StorageSmvBsr< T >::ConstDataVectorType |
Definition at line 76 of file StorageSmvBsr.hpp.
typedef T Nektar::StorageSmvBsr< T >::DataType |
Definition at line 74 of file StorageSmvBsr.hpp.
typedef Array<OneD, DataType> Nektar::StorageSmvBsr< T >::DataVectorType |
Definition at line 75 of file StorageSmvBsr.hpp.
typedef Array<OneD, IndexType> Nektar::StorageSmvBsr< T >::IndexVectorType |
Definition at line 77 of file StorageSmvBsr.hpp.
typedef void(* Nektar::StorageSmvBsr< T >::MultiplyKernel)(const double *, const double *, double *) |
Definition at line 79 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 220 of file StorageSmvBsr.cpp.
References Nektar::eFULL, and Nektar::StorageSmvBsr< T >::processBcoInput().
Nektar::StorageSmvBsr< DataType >::StorageSmvBsr | ( | const StorageSmvBsr< T > & | src | ) |
Nektar::StorageSmvBsr< DataType >::~StorageSmvBsr | ( | ) |
Definition at line 276 of file StorageSmvBsr.cpp.
StorageSmvBsr< DataType >::const_iterator Nektar::StorageSmvBsr< DataType >::begin | ( | ) | const |
Definition at line 358 of file StorageSmvBsr.cpp.
Referenced by Nektar::StorageSmvBsr< T >::const_iterator::const_iterator().
StorageSmvBsr< DataType >::const_iterator Nektar::StorageSmvBsr< DataType >::end | ( | ) | const |
const IndexType Nektar::StorageSmvBsr< DataType >::GetBlkSize | ( | ) | const |
Definition at line 300 of file StorageSmvBsr.cpp.
const IndexType Nektar::StorageSmvBsr< DataType >::GetColumns | ( | ) | const |
Definition at line 288 of file StorageSmvBsr.cpp.
const DataType Nektar::StorageSmvBsr< DataType >::GetFillInRatio | ( | ) | const |
const size_t Nektar::StorageSmvBsr< DataType >::GetMemoryUsage | ( | IndexType | nnz, |
IndexType | nRows | ||
) | const |
const IndexType Nektar::StorageSmvBsr< DataType >::GetNumNonZeroEntries | ( | ) | const |
Definition at line 294 of file StorageSmvBsr.cpp.
const IndexType Nektar::StorageSmvBsr< DataType >::GetNumStoredDoubles | ( | ) | const |
Definition at line 307 of file StorageSmvBsr.cpp.
const IndexType Nektar::StorageSmvBsr< DataType >::GetRows | ( | ) | const |
Definition at line 282 of file StorageSmvBsr.cpp.
const boost::call_traits< DataType >::const_reference Nektar::StorageSmvBsr< DataType >::GetValue | ( | IndexType | row, |
IndexType | column | ||
) | const |
void Nektar::StorageSmvBsr< DataType >::Multiply | ( | const DataType * | in, |
DataType * | out | ||
) |
Definition at line 412 of file StorageSmvBsr.cpp.
void Nektar::StorageSmvBsr< DataType >::Multiply | ( | const DataVectorType & | in, |
DataVectorType & | out | ||
) |
Definition at line 375 of file StorageSmvBsr.cpp.
|
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 490 of file StorageSmvBsr.cpp.
|
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 517 of file StorageSmvBsr.cpp.
|
protected |
Zero-based BSR multiply unrolled for 3x3 blocks.
Definition at line 553 of file StorageSmvBsr.cpp.
|
protected |
Zero-based BSR multiply unrolled for 4x4 blocks.
Definition at line 591 of file StorageSmvBsr.cpp.
|
protected |
Generic zero-based BSR multiply for higher matrix ranks.
Definition at line 667 of file StorageSmvBsr.cpp.
void Nektar::StorageSmvBsr< DataType >::MultiplyLight | ( | const DataVectorType & | in, |
DataVectorType & | out | ||
) |
Definition at line 451 of file StorageSmvBsr.cpp.
|
protected |
Definition at line 702 of file StorageSmvBsr.cpp.
References Nektar::NekConstants::kNekSparseNonZeroTol.
Referenced by Nektar::StorageSmvBsr< T >::StorageSmvBsr().
|
protected |
Definition at line 210 of file StorageSmvBsr.hpp.
|
protected |
Definition at line 211 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::const_iterator::storageIndexToFullCoord().
|
protected |
Definition at line 209 of file StorageSmvBsr.hpp.
|
protected |
Definition at line 213 of file StorageSmvBsr.hpp.
|
protected |
Definition at line 217 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::const_iterator::storageIndexToFullCoord().
|
protected |
Definition at line 207 of file StorageSmvBsr.hpp.
|
protected |
Definition at line 205 of file StorageSmvBsr.hpp.
|
protected |
Definition at line 214 of file StorageSmvBsr.hpp.
|
protected |
Definition at line 218 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::const_iterator::storageIndexToFullCoord().
|
protected |
Definition at line 216 of file StorageSmvBsr.hpp.
Referenced by Nektar::StorageSmvBsr< T >::const_iterator::forward().