SOFA API  63d8fd06
Open source framework for multi-physics simuation
sofa::defaulttype::BaseMatrix Class Referenceabstract

#include <BaseMatrix.h>

Inheritance diagram for sofa::defaulttype::BaseMatrix:

Detailed Description

Generic matrix API, allowing to fill and use a matrix independently of the linear algebra library in use.

Note that accessing values using this class is rather slow and should only be used in codes where the provided genericity is necessary.

Classes

class  BlockAccessor
 
class  BlockConstAccessor
 
class  ColBlockConstIterator
 
class  InternalBlockAccessor
 
class  InternalColBlockIterator
 
class  InternalRowBlockIterator
 
class  RowBlockConstIterator
 

Public Member Functions

 BaseMatrix ()
 
virtual ~BaseMatrix ()
 
virtual Index rowSize (void) const =0
 Number of rows. More...
 
virtual Index colSize (void) const =0
 Number of columns. More...
 
Index rows (void) const
 Number of rows (Eigen-compatible API) More...
 
Index cols (void) const
 Number of columns (Eigen-compatible API) More...
 
virtual SReal element (Index i, Index j) const =0
 Read the value of the element at row i, column j (using 0-based indices) More...
 
SReal operator() (Index i, Index j) const
 Read the value of the element at row i, column j (using 0-based indices). Eigen-compatible API. More...
 
virtual void resize (Index nbRow, Index nbCol)=0
 Resize the matrix and reset all values to 0. More...
 
virtual void clear ()=0
 Reset all values to 0. More...
 
virtual void set (Index i, Index j, double v)=0
 Write the value of the element at row i, column j (using 0-based indices) More...
 
virtual void add (Index i, Index j, double v)=0
 Add v to the existing value of the element at row i, column j (using 0-based indices) More...
 
virtual void add (Index _i, Index _j, const defaulttype::Mat3x3d &_M)
 Adding values from a 3x3d matrix this function may be overload to obtain better performances. More...
 
virtual void add (Index _i, Index _j, const defaulttype::Mat3x3f &_M)
 Adding values from a 3x3f matrix this function may be overload to obtain better performances. More...
 
virtual void add (Index _i, Index _j, const defaulttype::Mat2x2d &_M)
 Adding values from a 2x2d matrix this function may be overload to obtain better performances. More...
 
virtual void add (Index _i, Index _j, const defaulttype::Mat2x2f &_M)
 Adding values from a 2x2f matrix this function may be overload to obtain better performances. More...
 
virtual void clear (Index i, Index j)
 
virtual void clearRow (Index i)
 Reset all the values in row i to 0. More...
 
virtual void clearRows (Index imin, Index imax)
 Clears the value of rows imin to imax-1. More...
 
virtual void clearCol (Index j)
 Reset the all values in column j to 0. More...
 
virtual void clearCols (Index imin, Index imax)
 Clears all the values in columns imin to imax-1. More...
 
virtual void clearRowCol (Index i)
 Reset the value of both row and column i to 0. More...
 
virtual void clearRowsCols (Index imin, Index imax)
 Clears all the values in rows imin to imax-1 and columns imin to imax-1. More...
 
virtual void compress ()
 
basic linear operations
virtual void opMulV (defaulttype::BaseVector *result, const defaulttype::BaseVector *v) const
 Multiply the matrix by vector v and put the result in vector result. More...
 
virtual void opMulV (float *result, const float *v) const
 Multiply the matrix by float vector v and put the result in vector result. More...
 
virtual void opMulV (double *result, const double *v) const
 Multiply the matrix by double vector v and put the result in vector result. More...
 
virtual void opPMulV (defaulttype::BaseVector *result, const defaulttype::BaseVector *v) const
 Multiply the matrix by vector v and add the result in vector result. More...
 
virtual void opPMulV (float *result, const float *v) const
 Multiply the matrix by float vector v and add the result in vector result. More...
 
virtual void opPMulV (double *result, const double *v) const
 Multiply the matrix by double vector v and add the result in vector result. More...
 
virtual void opMulTV (defaulttype::BaseVector *result, const defaulttype::BaseVector *v) const
 Multiply the transposed matrix by vector v and put the result in vector result. More...
 
virtual void opMulTV (float *result, const float *v) const
 Multiply the transposed matrix by float vector v and put the result in vector result. More...
 
virtual void opMulTV (double *result, const double *v) const
 Multiply the transposed matrix by double vector v and put the result in vector result. More...
 
virtual void opPMulTV (defaulttype::BaseVector *result, const defaulttype::BaseVector *v) const
 Multiply the transposed matrix by vector v and add the result in vector result. More...
 
virtual void opPMulTV (float *result, const float *v) const
 Multiply the transposed matrix by float vector v and add the result in vector result. More...
 
virtual void opPMulTV (double *result, const double *v) const
 Multiply the transposed matrix by double vector v and add the result in vector result. More...
 
virtual void opMulTM (BaseMatrix *result, BaseMatrix *m) const
 Multiply the transposed matrix by matrix m and store the result in matrix result. More...
 
virtual void opAddM (defaulttype::BaseMatrix *m, double fact) const
 Subtract the matrix to the m matrix and strore the result in m. More...
 
virtual void opAddMT (defaulttype::BaseMatrix *m, double fact) const
 Subtract the transposed matrix to the m matrix and strore the result in m. More...
 

Friends

std::ostream & operator<< (std::ostream &out, const sofa::defaulttype::BaseMatrix &m)
 
std::istream & operator>> (std::istream &in, sofa::defaulttype::BaseMatrix &m)
 

Get information about the content and structure of this matrix (diagonal, band, sparse, full, block size, ...)

enum  ElementType { ELEMENT_UNKNOWN = 0, ELEMENT_FLOAT, ELEMENT_INT }
 
enum  MatrixCategory {
  MATRIX_UNKNOWN = 0, MATRIX_IDENTITY, MATRIX_DIAGONAL, MATRIX_BAND,
  MATRIX_SPARSE, MATRIX_FULL
}
 
virtual ElementType getElementType () const
 
virtual std::size_t getElementSize () const
 
virtual MatrixCategory getCategory () const
 
virtual Index getBlockRows () const
 
virtual Index getBlockCols () const
 
virtual Index bRowSize () const
 
virtual Index bColSize () const
 
virtual Index getBandWidth () const
 
bool isDiagonal () const
 
bool isBlockDiagonal () const
 
bool isBand () const
 
bool isSparse () const
 

Virtual iterator classes and methods

virtual BlockConstAccessor blocGet (Index i, Index j) const
 Get read access to a bloc. More...
 
virtual BlockAccessor blocGetW (Index i, Index j)
 Get write access to a bloc. More...
 
virtual BlockAccessor blocCreate (Index i, Index j)
 Get write access to a bloc, possibly creating it. More...
 
template<class T >
const T * blocElements (Index i, Index j, T *buffer) const
 Shortcut for blocGet(i,j).elements(buffer) More...
 
template<class T >
void blocSet (Index i, Index j, const T *buffer)
 Shortcut for blocCreate(i,j).set(buffer) More...
 
template<class T >
void blocAdd (Index i, Index j, const T *buffer)
 Shortcut for blocCreate(i,j).add(buffer) More...
 
virtual ColBlockConstIterator bRowBegin (Index ib) const
 Get the iterator corresponding to the beginning of the given row of blocks. More...
 
virtual ColBlockConstIterator bRowEnd (Index ib) const
 Get the iterator corresponding to the end of the given row of blocks. More...
 
virtual std::pair< ColBlockConstIterator, ColBlockConstIteratorbRowRange (Index ib) const
 Get the iterators corresponding to the beginning and end of the given row of blocks. More...
 
virtual RowBlockConstIterator bRowsBegin () const
 Get the iterator corresponding to the beginning of the rows of blocks. More...
 
virtual RowBlockConstIterator bRowsEnd () const
 Get the iterator corresponding to the end of the rows of blocks. More...
 
virtual std::pair< RowBlockConstIterator, RowBlockConstIteratorbRowsRange () const
 Get the iterators corresponding to the beginning and end of the given row of blocks. More...
 
virtual void bAccessorDelete (const InternalBlockAccessor *) const
 
virtual void bAccessorCopy (InternalBlockAccessor *) const
 
virtual SReal bAccessorElement (const InternalBlockAccessor *b, Index i, Index j) const
 
virtual void bAccessorSet (InternalBlockAccessor *b, Index i, Index j, double v)
 
virtual void bAccessorAdd (InternalBlockAccessor *b, Index i, Index j, double v)
 
template<class T >
const T * bAccessorElementsDefaultImpl (const InternalBlockAccessor *b, T *buffer) const
 
virtual const floatbAccessorElements (const InternalBlockAccessor *b, float *buffer) const
 
virtual const doublebAccessorElements (const InternalBlockAccessor *b, double *buffer) const
 
virtual const intbAccessorElements (const InternalBlockAccessor *b, int *buffer) const
 
template<class T >
void bAccessorSetDefaultImpl (InternalBlockAccessor *b, const T *buffer)
 
virtual void bAccessorSet (InternalBlockAccessor *b, const float *buffer)
 
virtual void bAccessorSet (InternalBlockAccessor *b, const double *buffer)
 
virtual void bAccessorSet (InternalBlockAccessor *b, const int *buffer)
 
template<class T >
void bAccessorAddDefaultImpl (InternalBlockAccessor *b, const T *buffer)
 
virtual void bAccessorAdd (InternalBlockAccessor *b, const float *buffer)
 
virtual void bAccessorAdd (InternalBlockAccessor *b, const double *buffer)
 
virtual void bAccessorAdd (InternalBlockAccessor *b, const int *buffer)
 
template<class T >
T * bAccessorPrepareAddDefaultImpl (InternalBlockAccessor *, T *buffer)
 
virtual floatbAccessorPrepareAdd (InternalBlockAccessor *b, float *buffer)
 
virtual doublebAccessorPrepareAdd (InternalBlockAccessor *b, double *buffer)
 
virtual intbAccessorPrepareAdd (InternalBlockAccessor *b, int *buffer)
 
virtual void bAccessorFinishAdd (InternalBlockAccessor *b, const float *buffer)
 
virtual void bAccessorFinishAdd (InternalBlockAccessor *b, const double *buffer)
 
virtual void bAccessorFinishAdd (InternalBlockAccessor *b, const int *buffer)
 
BlockAccessor createBlockAccessor (Index row, Index col, void *internalPtr=nullptr)
 
BlockAccessor createBlockAccessor (Index row, Index col, Index internalData)
 
BlockConstAccessor createBlockConstAccessor (Index row, Index col, void *internalPtr=nullptr) const
 
BlockConstAccessor createBlockConstAccessor (Index row, Index col, Index internalData) const
 
void setMatrix (BlockAccessor *b)
 
void setMatrix (BlockConstAccessor *b) const
 
virtual void itCopyColBlock (InternalColBlockIterator *) const
 
virtual void itDeleteColBlock (const InternalColBlockIterator *) const
 
virtual void itAccessColBlock (InternalColBlockIterator *it, BlockConstAccessor *b) const
 
virtual void itIncColBlock (InternalColBlockIterator *it) const
 
virtual void itDecColBlock (InternalColBlockIterator *it) const
 
virtual bool itEqColBlock (const InternalColBlockIterator *it, const InternalColBlockIterator *it2) const
 
virtual bool itLessColBlock (const InternalColBlockIterator *it, const InternalColBlockIterator *it2) const
 
ColBlockConstIterator createColBlockConstIterator (Index row, void *internalPtr) const
 
ColBlockConstIterator createColBlockConstIterator (Index row, Index internalData) const
 
virtual void itCopyRowBlock (InternalRowBlockIterator *) const
 
virtual void itDeleteRowBlock (const InternalRowBlockIterator *) const
 
virtual Index itAccessRowBlock (InternalRowBlockIterator *it) const
 
virtual ColBlockConstIterator itBeginRowBlock (InternalRowBlockIterator *it) const
 
virtual ColBlockConstIterator itEndRowBlock (InternalRowBlockIterator *it) const
 
virtual std::pair< ColBlockConstIterator, ColBlockConstIteratoritRangeRowBlock (InternalRowBlockIterator *it) const
 
virtual void itIncRowBlock (InternalRowBlockIterator *it) const
 
virtual void itDecRowBlock (InternalRowBlockIterator *it) const
 
virtual bool itEqRowBlock (const InternalRowBlockIterator *it, const InternalRowBlockIterator *it2) const
 
virtual bool itLessRowBlock (const InternalRowBlockIterator *it, const InternalRowBlockIterator *it2) const
 
RowBlockConstIterator createRowBlockConstIterator (void *internalPtr) const
 
RowBlockConstIterator createRowBlockConstIterator (Index internalData0, Index internalData1) const
 
static InternalBlockAccessorgetInternal (BlockConstAccessor *b)
 
static const InternalBlockAccessorgetInternal (const BlockConstAccessor *b)
 
static InternalBlockAccessorgetInternal (BlockAccessor *b)
 
static const InternalBlockAccessorgetInternal (const BlockAccessor *b)
 
static InternalColBlockIteratorgetInternal (ColBlockConstIterator *b)
 
static const InternalColBlockIteratorgetInternal (const ColBlockConstIterator *b)
 
static InternalRowBlockIteratorgetInternal (RowBlockConstIterator *b)
 
static const InternalRowBlockIteratorgetInternal (const RowBlockConstIterator *b)
 

Constructor details

sofa::defaulttype::BaseMatrix::BaseMatrix ( )
sofa::defaulttype::BaseMatrix::~BaseMatrix ( )
virtual

Function details

virtual void sofa::defaulttype::BaseMatrix::add ( Index  i,
Index  j,
double  v 
)
pure virtual

Add v to the existing value of the element at row i, column j (using 0-based indices)

Implemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, sofa::component::linearsolver::DiagonalMatrix< R2 >, and sofa::component::linearsolver::RotationMatrix< TReal >.

virtual void sofa::defaulttype::BaseMatrix::add ( Index  _i,
Index  _j,
const defaulttype::Mat3x3d _M 
)
inlinevirtual

Adding values from a 3x3d matrix this function may be overload to obtain better performances.

virtual void sofa::defaulttype::BaseMatrix::add ( Index  _i,
Index  _j,
const defaulttype::Mat3x3f _M 
)
inlinevirtual

Adding values from a 3x3f matrix this function may be overload to obtain better performances.

virtual void sofa::defaulttype::BaseMatrix::add ( Index  _i,
Index  _j,
const defaulttype::Mat2x2d _M 
)
inlinevirtual

Adding values from a 2x2d matrix this function may be overload to obtain better performances.

virtual void sofa::defaulttype::BaseMatrix::add ( Index  _i,
Index  _j,
const defaulttype::Mat2x2f _M 
)
inlinevirtual

Adding values from a 2x2f matrix this function may be overload to obtain better performances.

template<class T >
void sofa::defaulttype::BaseMatrix::bAccessorAddDefaultImpl ( InternalBlockAccessor b,
const T *  buffer 
)
inlineprotected
template<class T >
const T* sofa::defaulttype::BaseMatrix::bAccessorElementsDefaultImpl ( const InternalBlockAccessor b,
T *  buffer 
) const
inlineprotected
virtual void sofa::defaulttype::BaseMatrix::bAccessorFinishAdd ( InternalBlockAccessor b,
const float buffer 
)
inlineprotectedvirtual
virtual void sofa::defaulttype::BaseMatrix::bAccessorFinishAdd ( InternalBlockAccessor b,
const double buffer 
)
inlineprotectedvirtual
virtual void sofa::defaulttype::BaseMatrix::bAccessorFinishAdd ( InternalBlockAccessor b,
const int buffer 
)
inlineprotectedvirtual
virtual float* sofa::defaulttype::BaseMatrix::bAccessorPrepareAdd ( InternalBlockAccessor b,
float buffer 
)
inlineprotectedvirtual
virtual double* sofa::defaulttype::BaseMatrix::bAccessorPrepareAdd ( InternalBlockAccessor b,
double buffer 
)
inlineprotectedvirtual
virtual int* sofa::defaulttype::BaseMatrix::bAccessorPrepareAdd ( InternalBlockAccessor b,
int buffer 
)
inlineprotectedvirtual
template<class T >
T* sofa::defaulttype::BaseMatrix::bAccessorPrepareAddDefaultImpl ( InternalBlockAccessor ,
T *  buffer 
)
inlineprotected
template<class T >
void sofa::defaulttype::BaseMatrix::bAccessorSetDefaultImpl ( InternalBlockAccessor b,
const T *  buffer 
)
inlineprotected
template<class T >
void sofa::defaulttype::BaseMatrix::blocAdd ( Index  i,
Index  j,
const T *  buffer 
)
inline

Shortcut for blocCreate(i,j).add(buffer)

template<class T >
const T* sofa::defaulttype::BaseMatrix::blocElements ( Index  i,
Index  j,
T *  buffer 
) const
inline

Shortcut for blocGet(i,j).elements(buffer)

template<class T >
void sofa::defaulttype::BaseMatrix::blocSet ( Index  i,
Index  j,
const T *  buffer 
)
inline

Shortcut for blocCreate(i,j).set(buffer)

virtual void sofa::defaulttype::BaseMatrix::clear ( )
pure virtual

Reset all values to 0.

Implemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::SparseMatrix< T >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::SparseMatrix< Real >, sofa::component::linearsolver::TNewMatMatrix< Mat >, sofa::component::linearsolver::BlocFullMatrix< N, T >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, sofa::component::linearsolver::DiagonalMatrix< R2 >, and sofa::component::linearsolver::RotationMatrix< TReal >.

virtual void sofa::defaulttype::BaseMatrix::clearCol ( Index  j)
inlinevirtual

Reset the all values in column j to 0.

Reimplemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, and sofa::component::linearsolver::DiagonalMatrix< R2 >.

virtual void sofa::defaulttype::BaseMatrix::clearRow ( Index  i)
inlinevirtual

Reset all the values in row i to 0.

Reimplemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, and sofa::component::linearsolver::DiagonalMatrix< R2 >.

virtual void sofa::defaulttype::BaseMatrix::clearRowCol ( Index  i)
inlinevirtual

Reset the value of both row and column i to 0.

Reimplemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, and sofa::component::linearsolver::DiagonalMatrix< R2 >.

Index sofa::defaulttype::BaseMatrix::cols ( void  ) const
inline

Number of columns (Eigen-compatible API)

virtual Index sofa::defaulttype::BaseMatrix::colSize ( void  ) const
pure virtual

Number of columns.

Implemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::BlocFullMatrix< N, T >, sofa::component::linearsolver::SparseMatrix< T >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::SparseMatrix< Real >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, sofa::component::linearsolver::DiagonalMatrix< R2 >, sofa::component::linearsolver::TNewMatMatrix< Mat >, and sofa::component::linearsolver::RotationMatrix< TReal >.

BlockAccessor sofa::defaulttype::BaseMatrix::createBlockAccessor ( Index  row,
Index  col,
void *  internalPtr = nullptr 
)
inlineprotected
BlockAccessor sofa::defaulttype::BaseMatrix::createBlockAccessor ( Index  row,
Index  col,
Index  internalData 
)
inlineprotected
BlockConstAccessor sofa::defaulttype::BaseMatrix::createBlockConstAccessor ( Index  row,
Index  col,
void *  internalPtr = nullptr 
) const
inlineprotected
BlockConstAccessor sofa::defaulttype::BaseMatrix::createBlockConstAccessor ( Index  row,
Index  col,
Index  internalData 
) const
inlineprotected
ColBlockConstIterator sofa::defaulttype::BaseMatrix::createColBlockConstIterator ( Index  row,
void *  internalPtr 
) const
inlineprotected
ColBlockConstIterator sofa::defaulttype::BaseMatrix::createColBlockConstIterator ( Index  row,
Index  internalData 
) const
inlineprotected
RowBlockConstIterator sofa::defaulttype::BaseMatrix::createRowBlockConstIterator ( void *  internalPtr) const
inlineprotected
RowBlockConstIterator sofa::defaulttype::BaseMatrix::createRowBlockConstIterator ( Index  internalData0,
Index  internalData1 
) const
inlineprotected
virtual SReal sofa::defaulttype::BaseMatrix::element ( Index  i,
Index  j 
) const
pure virtual

Read the value of the element at row i, column j (using 0-based indices)

Implemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, sofa::component::linearsolver::DiagonalMatrix< R2 >, and sofa::component::linearsolver::RotationMatrix< TReal >.

static InternalBlockAccessor* sofa::defaulttype::BaseMatrix::getInternal ( BlockConstAccessor b)
inlinestaticprotected
static const InternalBlockAccessor* sofa::defaulttype::BaseMatrix::getInternal ( const BlockConstAccessor b)
inlinestaticprotected
static InternalBlockAccessor* sofa::defaulttype::BaseMatrix::getInternal ( BlockAccessor b)
inlinestaticprotected
static const InternalBlockAccessor* sofa::defaulttype::BaseMatrix::getInternal ( const BlockAccessor b)
inlinestaticprotected
static InternalColBlockIterator* sofa::defaulttype::BaseMatrix::getInternal ( ColBlockConstIterator b)
inlinestaticprotected
static const InternalColBlockIterator* sofa::defaulttype::BaseMatrix::getInternal ( const ColBlockConstIterator b)
inlinestaticprotected
static InternalRowBlockIterator* sofa::defaulttype::BaseMatrix::getInternal ( RowBlockConstIterator b)
inlinestaticprotected
static const InternalRowBlockIterator* sofa::defaulttype::BaseMatrix::getInternal ( const RowBlockConstIterator b)
inlinestaticprotected
bool sofa::defaulttype::BaseMatrix::isBand ( ) const
inline
Returns
true if this matrix is band
bool sofa::defaulttype::BaseMatrix::isBlockDiagonal ( ) const
inline
Returns
true if this matrix is block-diagonal
bool sofa::defaulttype::BaseMatrix::isDiagonal ( ) const
inline
Returns
true if this matrix is diagonal
bool sofa::defaulttype::BaseMatrix::isSparse ( ) const
inline
Returns
true if this matrix is sparse
void sofa::defaulttype::BaseMatrix::opAddM ( defaulttype::BaseMatrix m,
double  fact 
) const
virtual

Subtract the matrix to the m matrix and strore the result in m.

Multiply the matrix by vector v and put the result in vector result.

void sofa::defaulttype::BaseMatrix::opAddMT ( defaulttype::BaseMatrix m,
double  fact 
) const
virtual

Subtract the transposed matrix to the m matrix and strore the result in m.

Multiply the matrix by vector v and put the result in vector result.

SReal sofa::defaulttype::BaseMatrix::operator() ( Index  i,
Index  j 
) const
inline

Read the value of the element at row i, column j (using 0-based indices). Eigen-compatible API.

void sofa::defaulttype::BaseMatrix::opMulTM ( BaseMatrix result,
BaseMatrix m 
) const
virtual

Multiply the transposed matrix by matrix m and store the result in matrix result.

Reimplemented in sofa::component::linearsolver::RotationMatrix< TReal >.

void sofa::defaulttype::BaseMatrix::opMulTV ( defaulttype::BaseVector result,
const defaulttype::BaseVector v 
) const
virtual

Multiply the transposed matrix by vector v and put the result in vector result.

Reimplemented in sofa::component::linearsolver::RotationMatrix< TReal >.

void sofa::defaulttype::BaseMatrix::opMulTV ( float result,
const float v 
) const
virtual

Multiply the transposed matrix by float vector v and put the result in vector result.

void sofa::defaulttype::BaseMatrix::opMulTV ( double result,
const double v 
) const
virtual

Multiply the transposed matrix by double vector v and put the result in vector result.

void sofa::defaulttype::BaseMatrix::opMulV ( defaulttype::BaseVector result,
const defaulttype::BaseVector v 
) const
virtual

Multiply the matrix by vector v and put the result in vector result.

Reimplemented in sofa::component::linearsolver::RotationMatrix< TReal >.

void sofa::defaulttype::BaseMatrix::opMulV ( float result,
const float v 
) const
virtual

Multiply the matrix by float vector v and put the result in vector result.

void sofa::defaulttype::BaseMatrix::opMulV ( double result,
const double v 
) const
virtual

Multiply the matrix by double vector v and put the result in vector result.

void sofa::defaulttype::BaseMatrix::opPMulTV ( defaulttype::BaseVector result,
const defaulttype::BaseVector v 
) const
virtual

Multiply the transposed matrix by vector v and add the result in vector result.

void sofa::defaulttype::BaseMatrix::opPMulTV ( float result,
const float v 
) const
virtual

Multiply the transposed matrix by float vector v and add the result in vector result.

void sofa::defaulttype::BaseMatrix::opPMulTV ( double result,
const double v 
) const
virtual

Multiply the transposed matrix by double vector v and add the result in vector result.

void sofa::defaulttype::BaseMatrix::opPMulV ( defaulttype::BaseVector result,
const defaulttype::BaseVector v 
) const
virtual

Multiply the matrix by vector v and add the result in vector result.

void sofa::defaulttype::BaseMatrix::opPMulV ( float result,
const float v 
) const
virtual

Multiply the matrix by float vector v and add the result in vector result.

void sofa::defaulttype::BaseMatrix::opPMulV ( double result,
const double v 
) const
virtual

Multiply the matrix by double vector v and add the result in vector result.

virtual void sofa::defaulttype::BaseMatrix::resize ( Index  nbRow,
Index  nbCol 
)
pure virtual

Resize the matrix and reset all values to 0.

Implemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::LPtrFullMatrix< T >, sofa::component::linearsolver::LPtrFullMatrix< double >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, sofa::component::linearsolver::DiagonalMatrix< R2 >, and sofa::component::linearsolver::RotationMatrix< TReal >.

Index sofa::defaulttype::BaseMatrix::rows ( void  ) const
inline

Number of rows (Eigen-compatible API)

virtual Index sofa::defaulttype::BaseMatrix::rowSize ( void  ) const
pure virtual

Number of rows.

Implemented in sofa::component::linearsolver::CompressedRowSparseMatrix< TBloc, TVecBloc, TVecIndex >, sofa::component::linearsolver::CompressedRowSparseMatrix< defaulttype::sofa::defaulttype::Mat< NL, NC, MReal > >, sofa::component::linearsolver::CompressedRowSparseMatrix< MReal >, sofa::component::linearsolver::CompressedRowSparseMatrix< Real >, sofa::component::linearsolver::BTDMatrix< N, T >, sofa::component::linearsolver::BlockDiagonalMatrix< LC, T >, sofa::component::linearsolver::EigenBaseSparseMatrix< TReal >, sofa::component::linearsolver::EigenBaseSparseMatrix< Out::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TOut::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< OutDataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< typename DataTypes::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< In::Real >, sofa::component::linearsolver::EigenBaseSparseMatrix< TIn::Real >, sofa::component::linearsolver::FullMatrix< T >, sofa::component::linearsolver::FullMatrix< double >, sofa::component::linearsolver::FullMatrix< typename Vector::Real >, sofa::component::linearsolver::FullMatrix< Real >, sofa::component::linearsolver::BlocFullMatrix< N, T >, sofa::component::linearsolver::SparseMatrix< T >, sofa::component::linearsolver::SparseMatrix< double >, sofa::component::linearsolver::SparseMatrix< SReal >, sofa::component::linearsolver::SparseMatrix< Real >, sofa::component::linearsolver::DiagonalMatrix< T >, sofa::component::linearsolver::DiagonalMatrix< R1 >, sofa::component::linearsolver::DiagonalMatrix< R2 >, sofa::component::linearsolver::TNewMatMatrix< Mat >, and sofa::component::linearsolver::RotationMatrix< TReal >.

void sofa::defaulttype::BaseMatrix::setMatrix ( BlockAccessor b)
inlineprotected
void sofa::defaulttype::BaseMatrix::setMatrix ( BlockConstAccessor b) const
inlineprotected

Enum details

Enumerator
ELEMENT_UNKNOWN 
ELEMENT_FLOAT 
ELEMENT_INT 
Enumerator
MATRIX_UNKNOWN 
MATRIX_IDENTITY 
MATRIX_DIAGONAL 
MATRIX_BAND 
MATRIX_SPARSE 
MATRIX_FULL 

Related details

std::ostream& operator<< ( std::ostream &  out,
const sofa::defaulttype::BaseMatrix m 
)
friend
std::istream& operator>> ( std::istream &  in,
sofa::defaulttype::BaseMatrix m 
)
friend