humoto
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 > Class Template Reference

Detailed Description

template<typename t_MatrixType>
class etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >

Extra layer for handling of specific sizes of blocks using partial template specialization.

Access matrix using 1x1 blocks. The reason for this is that Eigen does not support Block's of such size.

Template Parameters
t_MatrixTypetype of raw matrix, e.g. Eigen::MatrixXd or a reference to it

Definition at line 743 of file blockmatrix_base.h.

#include <blockmatrix_base.h>

Inheritance diagram for etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >:
Inheritance graph

Public Types

typedef const Eigen::Block< const EIGENTOOLS_DYNAMIC_MATRIX(Scalar) > ConstDynamicMatrixBlock
 Shorthand for Eigen block. More...
 
typedef BlockMatrixAccessBase< t_MatrixType, 1, 1 >::DecayedRawMatrix DecayedRawMatrix
 
typedef Eigen::Block< EIGENTOOLS_DYNAMIC_MATRIX(Scalar) > DynamicMatrixBlock
 Shorthand for Eigen block. More...
 
typedef BlockMatrixAccessBase< t_MatrixType, 1, 1 >::Scalar Scalar
 

Public Member Functions

DynamicMatrixBlock column (const std::ptrdiff_t index_col, const std::ptrdiff_t index_row_first, const std::ptrdiff_t index_num_rows)
 Access column of a matrix. More...
 
DynamicMatrixBlock column (const std::ptrdiff_t index_col, const std::ptrdiff_t index_row_first=0)
 Access column of a matrix. More...
 
ConstDynamicMatrixBlock column (const std::ptrdiff_t index_col, const std::ptrdiff_t index_row_first, const std::ptrdiff_t index_num_rows) const
 Access column of a matrix. More...
 
ConstDynamicMatrixBlock column (const std::ptrdiff_t index_col, const std::ptrdiff_t index_row_first=0) const
 Access column of a matrix. More...
 
std::ptrdiff_t getBlockColsNum () const
 Returns dimension of the matrix block. More...
 
std::ptrdiff_t getBlockRowsNum () const
 Returns dimension of the matrix block. More...
 
std::ptrdiff_t getNumberOfBlocksHorizontal () const
 Get number of blocks (horizontal/vertical) More...
 
std::ptrdiff_t getNumberOfBlocksVertical () const
 Get number of blocks (horizontal/vertical) More...
 
std::ptrdiff_t getNumberOfColumns () const
 Get total number of rows / columns. More...
 
std::ptrdiff_t getNumberOfRows () const
 Get total number of rows / columns. More...
 
const DecayedRawMatrixgetRaw () const
 Get raw matrix. More...
 
Scalaroperator() (const std::ptrdiff_t index_row, const std::ptrdiff_t index_col)
 Block access operator. More...
 
Scalar operator() (const std::ptrdiff_t index_row, const std::ptrdiff_t index_col) const
 Block access operator. More...
 
Scalaroperator() (const std::ptrdiff_t index)
 Block access operator for diagonal blocks. More...
 
Scalar operator() (const std::ptrdiff_t index) const
 Block access operator for diagonal blocks. More...
 
void resize (const std::ptrdiff_t num_blocks_vert, const std::ptrdiff_t num_blocks_hor)
 Resize matrix. More...
 
void resize (const std::ptrdiff_t num_blocks)
 Resize square matrix. More...
 
DynamicMatrixBlock row (const std::ptrdiff_t index_row, const std::ptrdiff_t index_col_first, const std::ptrdiff_t index_num_cols)
 Access row of a matrix. More...
 
DynamicMatrixBlock row (const std::ptrdiff_t index_row, const std::ptrdiff_t index_col_first=0)
 Access row of a matrix. More...
 
ConstDynamicMatrixBlock row (const std::ptrdiff_t index_row, const std::ptrdiff_t index_col_first, const std::ptrdiff_t index_num_cols) const
 Access row of a matrix. More...
 
ConstDynamicMatrixBlock row (const std::ptrdiff_t index_row, const std::ptrdiff_t index_col_first=0) const
 Access row of a matrix. More...
 
DecayedRawMatrix selectRowInBlocksAsMatrix (const std::ptrdiff_t row_in_a_block)
 Selects rows from the matrix. More...
 
void set (const Eigen::DenseBase< t_Derived > &matrix)
 Set raw matrix. More...
 
void setBlockSize (const std::ptrdiff_t block_rows_num, const std::ptrdiff_t block_cols_num)
 Returns dimension of the matrix block. More...
 
void setZero (const std::ptrdiff_t num_blocks_vert, const std::ptrdiff_t num_blocks_hor)
 Resize matrix and initialize it with zeros. More...
 
void setZero (const std::ptrdiff_t num_blocks)
 Resize square matrix and set it to zero. More...
 

Protected Member Functions

 BlockMatrixSizeSpecificBase (const std::ptrdiff_t block_rows_num=MatrixBlockSizeType::UNDEFINED, const std::ptrdiff_t block_cols_num=MatrixBlockSizeType::UNDEFINED)
 
 BlockMatrixSizeSpecificBase (DecayedRawMatrix &matrix, const std::ptrdiff_t block_rows_num=MatrixBlockSizeType::UNDEFINED, const std::ptrdiff_t block_cols_num=MatrixBlockSizeType::UNDEFINED)
 
 BlockMatrixSizeSpecificBase (const DecayedRawMatrix &matrix, const std::ptrdiff_t block_rows_num=MatrixBlockSizeType::UNDEFINED, const std::ptrdiff_t block_cols_num=MatrixBlockSizeType::UNDEFINED)
 
 ~BlockMatrixSizeSpecificBase ()
 Protected destructor: prevent destruction of the child classes through a base pointer. More...
 
void finalize ()
 Compute humber of blocks in matrix and check size consistency. More...
 
void initializeBlockSize (const std::ptrdiff_t block_rows_num, const std::ptrdiff_t block_cols_num)
 Compute humber of blocks in matrix and check size consistency. More...
 

Protected Attributes

std::ptrdiff_t block_cols_num_
 
std::ptrdiff_t block_rows_num_
 
t_MatrixType matrix_
 
std::ptrdiff_t num_blocks_hor_
 
std::ptrdiff_t num_blocks_vert_
 

Member Typedef Documentation

◆ ConstDynamicMatrixBlock

typedef const Eigen::Block< const EIGENTOOLS_DYNAMIC_MATRIX( Scalar ) > etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::ConstDynamicMatrixBlock
inherited

Shorthand for Eigen block.

Definition at line 120 of file blockmatrix_base.h.

◆ DecayedRawMatrix

template<typename t_MatrixType >
typedef BlockMatrixAccessBase<t_MatrixType, 1, 1>::DecayedRawMatrix etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::DecayedRawMatrix

Definition at line 746 of file blockmatrix_base.h.

◆ DynamicMatrixBlock

typedef Eigen::Block< EIGENTOOLS_DYNAMIC_MATRIX( Scalar ) > etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::DynamicMatrixBlock
inherited

Shorthand for Eigen block.

Definition at line 117 of file blockmatrix_base.h.

◆ Scalar

template<typename t_MatrixType >
typedef BlockMatrixAccessBase<t_MatrixType, 1, 1>::Scalar etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::Scalar

Definition at line 747 of file blockmatrix_base.h.

Constructor & Destructor Documentation

◆ ~BlockMatrixSizeSpecificBase()

template<typename t_MatrixType >
etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::~BlockMatrixSizeSpecificBase ( )
inlineprotected

Protected destructor: prevent destruction of the child classes through a base pointer.

Definition at line 801 of file blockmatrix_base.h.

◆ BlockMatrixSizeSpecificBase() [1/3]

template<typename t_MatrixType >
etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::BlockMatrixSizeSpecificBase ( const std::ptrdiff_t  block_rows_num = MatrixBlockSizeType::UNDEFINED,
const std::ptrdiff_t  block_cols_num = MatrixBlockSizeType::UNDEFINED 
)
inlineprotected

Definition at line 804 of file blockmatrix_base.h.

◆ BlockMatrixSizeSpecificBase() [2/3]

template<typename t_MatrixType >
etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::BlockMatrixSizeSpecificBase ( const DecayedRawMatrix matrix,
const std::ptrdiff_t  block_rows_num = MatrixBlockSizeType::UNDEFINED,
const std::ptrdiff_t  block_cols_num = MatrixBlockSizeType::UNDEFINED 
)
inlineprotected

Definition at line 804 of file blockmatrix_base.h.

◆ BlockMatrixSizeSpecificBase() [3/3]

template<typename t_MatrixType >
etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::BlockMatrixSizeSpecificBase ( DecayedRawMatrix matrix,
const std::ptrdiff_t  block_rows_num = MatrixBlockSizeType::UNDEFINED,
const std::ptrdiff_t  block_cols_num = MatrixBlockSizeType::UNDEFINED 
)
inlineprotected

Definition at line 804 of file blockmatrix_base.h.

Member Function Documentation

◆ column() [1/4]

DynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::column ( const std::ptrdiff_t  index_col,
const std::ptrdiff_t  index_row_first,
const std::ptrdiff_t  index_num_rows 
)
inlineinherited

Access column of a matrix.

Parameters
[in]index_colindex of the column
[in]index_row_firstsegment of the column starts at this row
[in]index_num_rowsnumber of blocks
Returns
column or a part of it

Definition at line 238 of file blockmatrix_base.h.

◆ column() [2/4]

DynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::column ( const std::ptrdiff_t  index_col,
const std::ptrdiff_t  index_row_first = 0 
)
inlineinherited

Access column of a matrix.

Parameters
[in]index_colindex of the column
[in]index_row_firstsegment of the column starts at this row if index_row_first is not specified => return the whole column
Returns
column or a part of it

Definition at line 260 of file blockmatrix_base.h.

◆ column() [3/4]

ConstDynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::column ( const std::ptrdiff_t  index_col,
const std::ptrdiff_t  index_row_first,
const std::ptrdiff_t  index_num_rows 
) const
inlineinherited

Access column of a matrix.

Parameters
[in]index_colindex of the column
[in]index_row_firstsegment of the column starts at this row
[in]index_num_rowsnumber of blocks
Returns
column or a part of it

Definition at line 268 of file blockmatrix_base.h.

◆ column() [4/4]

ConstDynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::column ( const std::ptrdiff_t  index_col,
const std::ptrdiff_t  index_row_first = 0 
) const
inlineinherited

Access column of a matrix.

Parameters
[in]index_colindex of the column
[in]index_row_firstsegment of the column starts at this row if index_row_first is not specified => return the whole column
Returns
column or a part of it

Definition at line 281 of file blockmatrix_base.h.

◆ finalize()

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::finalize ( )
inlineprotectedinherited

Compute humber of blocks in matrix and check size consistency.

Definition at line 504 of file blockmatrix_base.h.

◆ getBlockColsNum()

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::getBlockColsNum ( ) const
inlineinherited

Returns dimension of the matrix block.

Returns
number of rows / columns

Definition at line 384 of file blockmatrix_base.h.

◆ getBlockRowsNum()

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::getBlockRowsNum ( ) const
inlineinherited

Returns dimension of the matrix block.

Returns
number of rows / columns

Definition at line 377 of file blockmatrix_base.h.

◆ getNumberOfBlocksHorizontal()

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::getNumberOfBlocksHorizontal ( ) const
inlineinherited

Get number of blocks (horizontal/vertical)

Returns
number of blocks

Definition at line 136 of file blockmatrix_base.h.

◆ getNumberOfBlocksVertical()

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::getNumberOfBlocksVertical ( ) const
inlineinherited

Get number of blocks (horizontal/vertical)

Returns
number of blocks

Definition at line 129 of file blockmatrix_base.h.

◆ getNumberOfColumns()

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::getNumberOfColumns ( ) const
inlineinherited

Get total number of rows / columns.

Returns
number of rows / columns

Definition at line 155 of file blockmatrix_base.h.

◆ getNumberOfRows()

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::getNumberOfRows ( ) const
inlineinherited

Get total number of rows / columns.

Returns
number of rows / columns

Definition at line 148 of file blockmatrix_base.h.

◆ getRaw()

const DecayedRawMatrix& etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::getRaw ( ) const
inlineinherited

Get raw matrix.

Returns
matrix

Definition at line 353 of file blockmatrix_base.h.

◆ initializeBlockSize()

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::initializeBlockSize ( const std::ptrdiff_t  block_rows_num,
const std::ptrdiff_t  block_cols_num 
)
inlineprotectedinherited

Compute humber of blocks in matrix and check size consistency.

Definition at line 474 of file blockmatrix_base.h.

◆ operator()() [1/4]

template<typename t_MatrixType >
Scalar& etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::operator() ( const std::ptrdiff_t  index_row,
const std::ptrdiff_t  index_col 
)
inline

Block access operator.

Parameters
[in]index_row
[in]index_col
Returns
matrix block

Definition at line 758 of file blockmatrix_base.h.

◆ operator()() [2/4]

template<typename t_MatrixType >
Scalar etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::operator() ( const std::ptrdiff_t  index_row,
const std::ptrdiff_t  index_col 
) const
inline

Block access operator.

Parameters
[in]index_row
[in]index_col
Returns
matrix block

Definition at line 766 of file blockmatrix_base.h.

◆ operator()() [3/4]

template<typename t_MatrixType >
Scalar& etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::operator() ( const std::ptrdiff_t  index)
inline

Block access operator for diagonal blocks.

Parameters
[in]indexrow and column index
Returns
matrix block

Definition at line 780 of file blockmatrix_base.h.

◆ operator()() [4/4]

template<typename t_MatrixType >
Scalar etools::BlockMatrixSizeSpecificBase< t_MatrixType, 1, 1 >::operator() ( const std::ptrdiff_t  index) const
inline

Block access operator for diagonal blocks.

Parameters
[in]indexrow and column index
Returns
matrix block

Definition at line 787 of file blockmatrix_base.h.

◆ resize() [1/2]

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::resize ( const std::ptrdiff_t  num_blocks_vert,
const std::ptrdiff_t  num_blocks_hor 
)
inlineinherited

Resize matrix.

Parameters
[in]num_blocks_vert
[in]num_blocks_hor

Definition at line 182 of file blockmatrix_base.h.

◆ resize() [2/2]

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::resize ( const std::ptrdiff_t  num_blocks)
inlineinherited

Resize square matrix.

Parameters
[in]num_blocksnumber of diagonal blocks

Definition at line 211 of file blockmatrix_base.h.

◆ row() [1/4]

DynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::row ( const std::ptrdiff_t  index_row,
const std::ptrdiff_t  index_col_first,
const std::ptrdiff_t  index_num_cols 
)
inlineinherited

Access row of a matrix.

Parameters
[in]index_rowindex of the row
[in]index_col_firstsegment of the row starts at this column
[in]index_num_colsnumber of blocks
Returns
row or a part of it

Definition at line 297 of file blockmatrix_base.h.

◆ row() [2/4]

DynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::row ( const std::ptrdiff_t  index_row,
const std::ptrdiff_t  index_col_first = 0 
)
inlineinherited

Access row of a matrix.

Parameters
[in]index_rowindex of the row
[in]index_col_firstsegment of the row starts at this column if index_col_first is not specified => return the whole row
Returns
row or a part of it

Definition at line 319 of file blockmatrix_base.h.

◆ row() [3/4]

ConstDynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::row ( const std::ptrdiff_t  index_row,
const std::ptrdiff_t  index_col_first,
const std::ptrdiff_t  index_num_cols 
) const
inlineinherited

Access row of a matrix.

Parameters
[in]index_rowindex of the row
[in]index_col_firstsegment of the row starts at this column
[in]index_num_colsnumber of blocks
Returns
row or a part of it

Definition at line 327 of file blockmatrix_base.h.

◆ row() [4/4]

ConstDynamicMatrixBlock etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::row ( const std::ptrdiff_t  index_row,
const std::ptrdiff_t  index_col_first = 0 
) const
inlineinherited

Access row of a matrix.

Parameters
[in]index_rowindex of the row
[in]index_col_firstsegment of the row starts at this column if index_col_first is not specified => return the whole row
Returns
row or a part of it

Definition at line 340 of file blockmatrix_base.h.

◆ selectRowInBlocksAsMatrix()

DecayedRawMatrix etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::selectRowInBlocksAsMatrix ( const std::ptrdiff_t  row_in_a_block)
inlineinherited

Selects rows from the matrix.

Parameters
[in]row_in_a_blockrow number in a block
Returns
selected rows

Definition at line 366 of file blockmatrix_base.h.

◆ set()

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::set ( const Eigen::DenseBase< t_Derived > &  matrix)
inlineinherited

Set raw matrix.

Template Parameters
t_DerivedEigen parameter
Parameters
[in]matrix

Definition at line 169 of file blockmatrix_base.h.

◆ setBlockSize()

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::setBlockSize ( const std::ptrdiff_t  block_rows_num,
const std::ptrdiff_t  block_cols_num 
)
inlineinherited

Returns dimension of the matrix block.

Returns
number of rows / columns

Definition at line 395 of file blockmatrix_base.h.

◆ setZero() [1/2]

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::setZero ( const std::ptrdiff_t  num_blocks_vert,
const std::ptrdiff_t  num_blocks_hor 
)
inlineinherited

Resize matrix and initialize it with zeros.

Parameters
[in]num_blocks_vert
[in]num_blocks_hor

Definition at line 197 of file blockmatrix_base.h.

◆ setZero() [2/2]

void etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::setZero ( const std::ptrdiff_t  num_blocks)
inlineinherited

Resize square matrix and set it to zero.

Parameters
[in]num_blocksnumber of diagonal blocks

Definition at line 222 of file blockmatrix_base.h.

Member Data Documentation

◆ block_cols_num_

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::block_cols_num_
protectedinherited

Definition at line 414 of file blockmatrix_base.h.

◆ block_rows_num_

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::block_rows_num_
protectedinherited

Definition at line 413 of file blockmatrix_base.h.

◆ matrix_

t_MatrixType etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::matrix_
protectedinherited

Definition at line 408 of file blockmatrix_base.h.

◆ num_blocks_hor_

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::num_blocks_hor_
protectedinherited

Definition at line 411 of file blockmatrix_base.h.

◆ num_blocks_vert_

std::ptrdiff_t etools::BlockMatrixAccessBase< t_MatrixType, t_block_rows_num, t_block_cols_num >::num_blocks_vert_
protectedinherited

Definition at line 410 of file blockmatrix_base.h.


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