Nektar++
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Attributes | List of all members
Nektar::NekSparseDiagBlkMatrix< SparseStorageType > Class Template Reference

#include <SparseDiagBlkMatrix.hpp>

Public Types

typedef SparseStorageType StorageType
typedef SparseStorageType::DataType DataType
typedef boost::shared_ptr
< SparseStorageType > 
SparseStorageSharedPtr
typedef Array< OneD, DataTypeDataVectorType
typedef Array< OneD, const
DataType
ConstDataVectorType
typedef Array< OneD,
SparseStorageSharedPtr
SparseStorageSharedPtrVector

Public Member Functions

 NekSparseDiagBlkMatrix (const SparseStorageSharedPtrVector &sparseStoragePtrVector)
 NekSparseDiagBlkMatrix (const NekSparseDiagBlkMatrix &src)
 ~NekSparseDiagBlkMatrix ()
const IndexType GetRows () const
const IndexType GetColumns () const
const IndexType GetNumNonZeroEntries ()
const DataType GetFillInRatio () const
const IndexType GetRows (int i) const
 number of rows at i-th submatrix
const IndexType GetColumns (int i) const
 number of columns at i-th submatrix
const IndexType GetNumberOfMatrixBlocks () const
const IndexType GetNumNonZeroEntries (int i) const
const DataType GetFillInRatio (int i) const
boost::call_traits< DataType >
::const_reference 
operator() (const IndexType row, const IndexType column) const
boost::call_traits< DataType >
::const_reference 
operator() (const IndexType block, const IndexType row, const IndexType column) const
void Multiply (const DataVectorType &in, DataVectorType &out)
void Multiply (const DataType *in, DataType *out)
void MultiplySubMatrix (const IndexType blockNum, DataType *in, DataType *out)
const size_t GetMemoryFootprint ()
const size_t GetMemoryFootprint (IndexType i) const
const unsigned long GetMulCallsCounter () const
const DataType GetAvgRowDensity ()
const DataType GetAvgRowDensity (IndexType i) const
const IndexType GetBandwidth ()
const IndexType GetBandwidth (IndexType i)
COOMatTypeSharedPtr GetCooStorage ()
COOMatTypeSharedPtr GetCooStorage (IndexType i)
void writeSparsityPatternTo (std::ostream &out, IndexType blockSize=64)
void writeSubmatrixSparsityPatternTo (std::ostream &out, const IndexType subMatrixIdx, IndexType blockSize=64)
void writeBlockSparsityPatternTo (std::ostream &out, const IndexType blk_row=0, const IndexType blk_col=0, IndexType blockSize=64)
void writeSubmatrixBlockSparsityPatternTo (std::ostream &out, const IndexType subMatrixIdx, const IndexType blk_row=0, const IndexType blk_col=0, IndexType blockSize=64)
 Complementary routine to the previous. It generates exact non-zero pattern of a given block matrix entry to *this object. E.g., for a 6x6 matrix defined as A(i,i):=i, A(i,j):=0, block size = 2 and blk_row=blk_col=2 it produces 2x2 matrix with 5 and 6 along the diagonal.

Protected Attributes

IndexType m_rows
IndexType m_cols
IndexVector m_rowoffset
unsigned long m_mulCallsCounter
SparseStorageSharedPtrVector m_submatrix

Detailed Description

template<typename SparseStorageType>
class Nektar::NekSparseDiagBlkMatrix< SparseStorageType >

Definition at line 62 of file SparseDiagBlkMatrix.hpp.

Member Typedef Documentation

template<typename SparseStorageType>
typedef Array<OneD, const DataType> Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::ConstDataVectorType

Definition at line 70 of file SparseDiagBlkMatrix.hpp.

template<typename SparseStorageType>
typedef SparseStorageType::DataType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::DataType

Definition at line 67 of file SparseDiagBlkMatrix.hpp.

template<typename SparseStorageType>
typedef Array<OneD, DataType> Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::DataVectorType

Definition at line 69 of file SparseDiagBlkMatrix.hpp.

template<typename SparseStorageType>
typedef boost::shared_ptr<SparseStorageType> Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::SparseStorageSharedPtr

Definition at line 68 of file SparseDiagBlkMatrix.hpp.

template<typename SparseStorageType>
typedef Array<OneD, SparseStorageSharedPtr> Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::SparseStorageSharedPtrVector

Definition at line 71 of file SparseDiagBlkMatrix.hpp.

template<typename SparseStorageType>
typedef SparseStorageType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::StorageType

Definition at line 66 of file SparseDiagBlkMatrix.hpp.

Constructor & Destructor Documentation

template<typename SparseStorageType >
Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::NekSparseDiagBlkMatrix ( const SparseStorageSharedPtrVector sparseStoragePtrVector)

Definition at line 57 of file SparseDiagBlkMatrix.cpp.

References Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_cols, Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_rowoffset, and Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_rows.

:
m_rows(0),
m_cols(0),
m_rowoffset(sparseStoragePtrVector.num_elements()+1, 0.0),
m_submatrix(sparseStoragePtrVector.num_elements(),sparseStoragePtrVector)
{
for (int i = 0; i < sparseStoragePtrVector.num_elements(); i++)
{
const IndexType rows = sparseStoragePtrVector[i]->GetRows();
m_rows += rows;
m_cols += sparseStoragePtrVector[i]->GetColumns();
m_rowoffset[i+1] = m_rowoffset[i] + rows;
}
}
template<typename SparseStorageType >
Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::NekSparseDiagBlkMatrix ( const NekSparseDiagBlkMatrix< SparseStorageType > &  src)

Definition at line 75 of file SparseDiagBlkMatrix.cpp.

:
m_rows(src.m_rows),
m_cols(src.m_cols),
m_rowoffset(src.m_rowoffset),
m_mulCallsCounter(src.m_mulCallsCounter),
m_submatrix(src.m_submatrix)
{
}
template<typename SparseStorageType >
Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::~NekSparseDiagBlkMatrix ( )

Definition at line 85 of file SparseDiagBlkMatrix.cpp.

{
}

Member Function Documentation

template<typename SparseStorageType >
const SparseStorageType::DataType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetAvgRowDensity ( )

Definition at line 267 of file SparseDiagBlkMatrix.cpp.

{
DataType avgRowDensity = 0.0;
for (int i = 0; i < m_submatrix.num_elements(); i++)
{
avgRowDensity += (DataType) m_submatrix[i]->GetNumNonZeroEntries() /
}
return avgRowDensity / m_submatrix.num_elements();
}
template<typename SparseStorageType >
const SparseStorageType::DataType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetAvgRowDensity ( IndexType  i) const

Definition at line 279 of file SparseDiagBlkMatrix.cpp.

{
return (DataType) m_submatrix[i]->GetNumNonZeroEntries() /
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetBandwidth ( )

Definition at line 286 of file SparseDiagBlkMatrix.cpp.

{
IndexType bandwidth = 0;
for (int i = 0; i < m_submatrix.num_elements(); i++)
{
typename SparseStorageType::const_iterator entry = m_submatrix[i]->begin();
for (; entry != m_submatrix[i]->end(); ++entry)
{
bandwidth = (std::max)(static_cast<int>(bandwidth),
2*abs( static_cast<int>(entry->first.first - entry->first.second)+1));
}
}
return bandwidth;
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetBandwidth ( IndexType  i)

Definition at line 302 of file SparseDiagBlkMatrix.cpp.

{
IndexType bandwidth = 0;
typename SparseStorageType::const_iterator entry = m_submatrix[i]->begin();
for (; entry != m_submatrix[i]->end(); ++entry)
{
bandwidth = (std::max)(static_cast<int>(bandwidth),
2*abs( static_cast<int>(entry->first.first - entry->first.second)+1));
}
return bandwidth;
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetColumns ( ) const

Definition at line 96 of file SparseDiagBlkMatrix.cpp.

{
return m_cols;
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetColumns ( int  i) const

number of columns at i-th submatrix

Definition at line 110 of file SparseDiagBlkMatrix.cpp.

{
return m_submatrix[i]->GetColumns();
}
template<typename SparseStorageType >
COOMatTypeSharedPtr Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetCooStorage ( )

Definition at line 329 of file SparseDiagBlkMatrix.cpp.

{
IndexType row_offset = 0;
IndexType col_offset = 0;
for (IndexType i = 0; i < m_submatrix.num_elements(); i++)
{
typename SparseStorageType::const_iterator entry = m_submatrix[i]->begin();
for (; entry != m_submatrix[i]->end(); entry++)
{
IndexType loc_row = entry->first.first;
IndexType loc_col = entry->first.second;
(*coo)[std::make_pair(loc_row + row_offset, loc_col + col_offset) ] = entry->second;
}
row_offset += m_submatrix[i]->GetRows();
col_offset += m_submatrix[i]->GetColumns();
}
return coo;
}
template<typename SparseStorageType >
COOMatTypeSharedPtr Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetCooStorage ( IndexType  i)

Definition at line 315 of file SparseDiagBlkMatrix.cpp.

{
typename SparseStorageType::const_iterator entry = m_submatrix[i]->begin();
for (; entry != m_submatrix[i]->end(); entry++)
{
IndexType loc_row = entry->first.first;
IndexType loc_col = entry->first.second;
(*coo)[std::make_pair(loc_row, loc_col) ] = entry->second;
}
return coo;
}
template<typename SparseStorageType >
const NekSparseDiagBlkMatrix< SparseStorageType >::DataType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetFillInRatio ( ) const

Definition at line 146 of file SparseDiagBlkMatrix.cpp.

{
IndexType stored = 0;
IndexType nnz = 0;
for (int i = 0; i < m_submatrix.num_elements(); i++)
{
stored += m_submatrix[i]->GetNumStoredDoubles();
nnz += m_submatrix[i]->GetNumNonZeroEntries();
}
return (DataType)stored/(DataType)nnz;
}
template<typename SparseStorageType >
const NekSparseDiagBlkMatrix< SparseStorageType >::DataType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetFillInRatio ( int  i) const

Definition at line 140 of file SparseDiagBlkMatrix.cpp.

{
return m_submatrix[i]->GetFillInRatio();
}
template<typename SparseStorageType >
const size_t Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetMemoryFootprint ( )

Definition at line 232 of file SparseDiagBlkMatrix.cpp.

{
size_t bytes =
sizeof(IndexType)*2 + // sizes
sizeof(unsigned long) + // mulCallsCounter
sizeof(IndexVector) +
sizeof(IndexType)*m_rowoffset.capacity() +
sizeof(SparseStorageSharedPtr)*m_submatrix.capacity();
for (int i = 0; i < m_submatrix.num_elements(); i++)
{
bytes += m_submatrix[i]->GetMemoryUsage(
);
}
return bytes;
}
template<typename SparseStorageType >
const size_t Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetMemoryFootprint ( IndexType  i) const

Definition at line 252 of file SparseDiagBlkMatrix.cpp.

{
return m_submatrix[i]->GetMemoryUsage(
);
}
template<typename SparseStorageType >
const unsigned long Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetMulCallsCounter ( ) const

Definition at line 261 of file SparseDiagBlkMatrix.cpp.

{
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetNumberOfMatrixBlocks ( ) const

Definition at line 116 of file SparseDiagBlkMatrix.cpp.

{
return m_submatrix.num_elements();
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetNumNonZeroEntries ( )

Definition at line 122 of file SparseDiagBlkMatrix.cpp.

{
IndexType nnz = 0;
for (int i = 0; i < m_submatrix.num_elements(); i++)
{
nnz += m_submatrix[i]->GetNumNonZeroEntries();
}
return nnz;
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetNumNonZeroEntries ( int  i) const

Definition at line 134 of file SparseDiagBlkMatrix.cpp.

{
return m_submatrix[i]->GetNumNonZeroEntries();
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetRows ( ) const

Definition at line 90 of file SparseDiagBlkMatrix.cpp.

Referenced by Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::operator()().

{
return m_rows;
}
template<typename SparseStorageType >
const IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetRows ( int  i) const

number of rows at i-th submatrix

Definition at line 103 of file SparseDiagBlkMatrix.cpp.

{
return m_submatrix[i]->GetRows();
}
template<typename SparseStorageType >
void Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::Multiply ( const DataVectorType in,
DataVectorType out 
)

Definition at line 199 of file SparseDiagBlkMatrix.cpp.

{
for (int i = 0; i < m_submatrix.num_elements(); ++i)
{
m_submatrix[i]->Multiply(&in[m_rowoffset[i]], &out[m_rowoffset[i]]);
}
}
template<typename SparseStorageType >
void Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::Multiply ( const DataType in,
DataType out 
)

Definition at line 211 of file SparseDiagBlkMatrix.cpp.

{
for (int i = 0; i < m_submatrix.num_elements(); ++i)
{
m_submatrix[i]->Multiply(&in[m_rowoffset[i]], &out[m_rowoffset[i]]);
}
}
template<typename SparseStorageType >
void Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::MultiplySubMatrix ( const IndexType  blockNum,
DataType in,
DataType out 
)

Definition at line 223 of file SparseDiagBlkMatrix.cpp.

{
m_submatrix[blockNum]->Multiply(in + m_rowoffset[blockNum], out + m_rowoffset[blockNum]);
// m_mulCallsCounter++;
}
template<typename SparseStorageType >
boost::call_traits< typename SparseStorageType::DataType >::const_reference Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::operator() ( const IndexType  row,
const IndexType  column 
) const
Todo:
double check, might be a bug when local_col > local column

Definition at line 168 of file SparseDiagBlkMatrix.cpp.

References Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::GetRows().

{
/*
ASSERTL1(row < GetRows(), std::string("Row ") + boost::lexical_cast<std::string>(glob_row) +
std::string(" requested in a matrix with a maximum of ") + boost::lexical_cast<std::string>(GetRows()) +
std::string(" rows"));
ASSERTL1(column < GetColumns(), std::string("Column ") + boost::lexical_cast<std::string>(glob_column) +
std::string(" requested in a matrix with a maximum of ") + boost::lexical_cast<std::string>(GetColumns()) +
std::string(" columns"));
*/
IndexType i = 0;
static DataType defaultReturnValue = 0;
signed int local_row = glob_row;
signed int local_col = glob_column;
while ((local_row >= m_submatrix[i]->GetRows()) &&
(local_col >= 0))
{
local_row -= m_submatrix[i]->GetRows();
local_col -= m_submatrix[i]->GetColumns();
i++;
}
/// \todo double check, might be a bug when local_col > local column
if (local_col < 0) return defaultReturnValue;
return m_submatrix[i]->GetValue(local_row, local_col);
}
template<typename SparseStorageType >
boost::call_traits< typename SparseStorageType::DataType >::const_reference Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::operator() ( const IndexType  block,
const IndexType  row,
const IndexType  column 
) const

Definition at line 160 of file SparseDiagBlkMatrix.cpp.

{
return m_submatrix[block]->GetValue(loc_row, loc_column);
}
template<typename SparseStorageType >
void Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::writeBlockSparsityPatternTo ( std::ostream &  out,
const IndexType  blk_row = 0,
const IndexType  blk_col = 0,
IndexType  blockSize = 64 
)

Definition at line 484 of file SparseDiagBlkMatrix.cpp.

{
blockSize = (std::min)(blockSize, GetRows());
std::vector< std::vector<int> > grid (blockSize);
for (int row = 0; row < blockSize; row++)
{
grid[row].resize(blockSize,0.0);
}
IndexType row_offset = 0;
IndexType col_offset = 0;
for (int i = 0; i < m_submatrix.num_elements(); i++)
{
typename SparseStorageType::const_iterator entry =
m_submatrix[i]->begin();
typename SparseStorageType::const_iterator stop =
m_submatrix[i]->end();
for (; entry != stop; ++entry)
{
const IndexType row = entry->first.first + row_offset;
const IndexType col = entry->first.second + col_offset;
if (blk_row != row / blockSize ) continue;
if (blk_col != col / blockSize ) continue;
grid[row % blockSize][col % blockSize]++;
}
row_offset += m_submatrix[i]->GetRows();
col_offset += m_submatrix[i]->GetColumns();
}
for (int row = 0; row < blockSize; row++)
{
for (int col = 0; col < blockSize; col++)
{
out << grid[row][col] << " ";
}
out << std::endl;
}
}
template<typename SparseStorageType >
void Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::writeSparsityPatternTo ( std::ostream &  out,
IndexType  blockSize = 64 
)

Definition at line 397 of file SparseDiagBlkMatrix.cpp.

{
const int matRows = GetRows();
const int gridRows = matRows / blockSize + (matRows % blockSize > 0);
const int gridCols = gridRows;
std::vector< std::vector<int> > grid (gridRows);
for (int row = 0; row < gridRows; row++)
{
grid[row].resize(gridCols,0.0);
}
IndexType row_offset = 0;
IndexType col_offset = 0;
for (int i = 0; i < m_submatrix.num_elements(); i++)
{
typename SparseStorageType::const_iterator entry = m_submatrix[i]->begin();
typename SparseStorageType::const_iterator stop = m_submatrix[i]->end();
for (; entry != stop; ++entry)
{
const IndexType row = entry->first.first + row_offset;
const IndexType col = entry->first.second + col_offset;
const int gridRow = row / blockSize;
const int gridCol = col / blockSize;
grid[gridRow][gridCol]++;
}
row_offset += m_submatrix[i]->GetRows();
col_offset += m_submatrix[i]->GetColumns();
}
for (int row = 0; row < gridRows; row++)
{
for (int col = 0; col < gridCols; col++)
{
out << grid[row][col] << " ";
}
out << std::endl;
}
}
template<typename SparseStorageType >
void Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::writeSubmatrixBlockSparsityPatternTo ( std::ostream &  out,
const IndexType  subMatrixIdx,
const IndexType  blk_row = 0,
const IndexType  blk_col = 0,
IndexType  blockSize = 64 
)

Complementary routine to the previous. It generates exact non-zero pattern of a given block matrix entry to *this object. E.g., for a 6x6 matrix defined as A(i,i):=i, A(i,j):=0, block size = 2 and blk_row=blk_col=2 it produces 2x2 matrix with 5 and 6 along the diagonal.

Definition at line 446 of file SparseDiagBlkMatrix.cpp.

{
blockSize = (std::min)(blockSize, m_submatrix[subMatrixIdx]->GetRows());
std::vector< std::vector<int> > grid (blockSize);
for (int row = 0; row < blockSize; row++)
{
grid[row].resize(blockSize,0.0);
}
typename SparseStorageType::const_iterator entry =
m_submatrix[subMatrixIdx]->begin();
typename SparseStorageType::const_iterator stop =
m_submatrix[subMatrixIdx]->end();
for (; entry != stop; ++entry)
{
const IndexType row = entry->first.first;
const IndexType col = entry->first.second;
if (blk_row != row / blockSize ) continue;
if (blk_col != col / blockSize ) continue;
grid[row % blockSize][col % blockSize]++;
}
for (int row = 0; row < blockSize; row++)
{
for (int col = 0; col < blockSize; col++)
{
out << grid[row][col] << " ";
}
out << std::endl;
}
}
template<typename SparseStorageType >
void Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::writeSubmatrixSparsityPatternTo ( std::ostream &  out,
const IndexType  subMatrixIdx,
IndexType  blockSize = 64 
)

Definition at line 358 of file SparseDiagBlkMatrix.cpp.

{
const int matRows = m_submatrix[subMatrixIdx]->GetRows();
const int gridRows = matRows / blockSize + (matRows % blockSize > 0);
const int gridCols = gridRows;
std::vector< std::vector<int> > grid (gridRows);
for (int row = 0; row < gridRows; row++)
{
grid[row].resize(gridCols,0.0);
}
typename SparseStorageType::const_iterator entry =
m_submatrix[subMatrixIdx]->begin();
typename SparseStorageType::const_iterator stop =
m_submatrix[subMatrixIdx]->end();
for (; entry != stop; ++entry)
{
const IndexType row = entry->first.first;
const IndexType col = entry->first.second;
const int gridRow = row / blockSize;
const int gridCol = col / blockSize;
grid[gridRow][gridCol]++;
}
for (int row = 0; row < gridRows; row++)
{
for (int col = 0; col < gridCols; col++)
{
out << grid[row][col] << " ";
}
out << std::endl;
}
}

Member Data Documentation

template<typename SparseStorageType>
IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_cols
protected

Definition at line 127 of file SparseDiagBlkMatrix.hpp.

Referenced by Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::NekSparseDiagBlkMatrix().

template<typename SparseStorageType>
unsigned long Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_mulCallsCounter
protected

Definition at line 129 of file SparseDiagBlkMatrix.hpp.

template<typename SparseStorageType>
IndexVector Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_rowoffset
protected

Definition at line 128 of file SparseDiagBlkMatrix.hpp.

Referenced by Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::NekSparseDiagBlkMatrix().

template<typename SparseStorageType>
IndexType Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_rows
protected

Definition at line 126 of file SparseDiagBlkMatrix.hpp.

Referenced by Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::NekSparseDiagBlkMatrix().

template<typename SparseStorageType>
SparseStorageSharedPtrVector Nektar::NekSparseDiagBlkMatrix< SparseStorageType >::m_submatrix
protected

Definition at line 130 of file SparseDiagBlkMatrix.hpp.