template<std::size_t LC, typename T = SReal>
class sofa::linearalgebra::BlockDiagonalMatrix< LC, T >
Simple full matrix container. 
|  | 
|  | BlockDiagonalMatrix () | 
|  | 
|  | ~BlockDiagonalMatrix () override | 
|  | 
| void | resize (Index nbRow, Index) override | 
|  | Resize the matrix and reset all values to 0.  More... 
 | 
|  | 
| Index | rowSize (void) const override | 
|  | Number of rows.  More... 
 | 
|  | 
| Index | colSize (void) const override | 
|  | Number of columns.  More... 
 | 
|  | 
| Index | rowBSize (void) const | 
|  | 
| Index | colBSize (void) const | 
|  | 
| const Block & | bloc (Index i) const | 
|  | 
| const Block & | bloc (Index i, Index j) const | 
|  | 
| Block * | wbloc (Index i) | 
|  | 
| Block * | wbloc (Index i, Index j) | 
|  | 
| SReal | element (Index i, Index j) const override | 
|  | Read the value of the element at row i, column j (using 0-based indices)  More... 
 | 
|  | 
| void | set (Index i, Index j, double v) override | 
|  | Write the value of the element at row i, column j (using 0-based indices)  More... 
 | 
|  | 
| void | setB (Index i, const Block &b) | 
|  | 
| void | setB (Index i, Index j, const Block &b) | 
|  | 
| void | add (Index i, Index j, double v) override | 
|  | Add v to the existing value of the element at row i, column j (using 0-based indices)  More... 
 | 
|  | 
| void | addB (Index i, const Block &b) | 
|  | 
| void | addB (Index i, Index j, const Block &b) | 
|  | 
| void | clear (Index i, Index j) override | 
|  | 
| void | clearRow (Index i) override | 
|  | Reset all the values in row i to 0.  More... 
 | 
|  | 
| void | clearCol (Index j) override | 
|  | Reset the all values in column j to 0.  More... 
 | 
|  | 
| void | clearRowCol (Index i) override | 
|  | Reset the value of both row and column i to 0.  More... 
 | 
|  | 
| void | clear () override | 
|  | Reset all values to 0.  More... 
 | 
|  | 
| void | invert () | 
|  | 
| template<class Real2 > | 
| void | mul (FullVector< Real2 > &res, const FullVector< Real2 > &v) const | 
|  | 
| template<class Real2 > | 
| FullVector< Real2 > | operator* (const FullVector< Real2 > &v) const | 
|  | 
| virtual void | add (Index row, Index col, 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 row, Index col, const type::Mat3x3d &_M) | 
|  | Adding values from a 3x3d matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat3x3f &_M) | 
|  | Adding values from a 3x3f matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat2x2d &_M) | 
|  | Adding values from a 2x2d matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat2x2f &_M) | 
|  | Adding values from a 2x2f matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat6x6d &_M) | 
|  | Adding values from a 6x6d matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat6x6f &_M) | 
|  | Adding values from a 6x6f matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
|  | BaseMatrix () | 
|  | 
| virtual | ~BaseMatrix () | 
|  | 
| Index | rows (void) const | 
|  | Number of rows (Eigen-compatible API)  More... 
 | 
|  | 
| Index | cols (void) const | 
|  | Number of columns (Eigen-compatible API)  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 | add (Index row, Index col, const type::Mat3x3d &_M) | 
|  | Adding values from a 3x3d matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat3x3f &_M) | 
|  | Adding values from a 3x3f matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat2x2d &_M) | 
|  | Adding values from a 2x2d matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat2x2f &_M) | 
|  | Adding values from a 2x2f matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat6x6d &_M) | 
|  | Adding values from a 6x6d matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | add (Index row, Index col, const type::Mat6x6f &_M) | 
|  | Adding values from a 6x6f matrix. This function may be overload to obtain better performances.  More... 
 | 
|  | 
| virtual void | clearRows (Index imin, Index imax) | 
|  | Clears the value of rows imin to imax-1.  More... 
 | 
|  | 
| virtual void | clearCols (Index imin, Index imax) | 
|  | Clears all the values in columns imin to imax-1.  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 () | 
|  | 
| virtual void | opMulV (linearalgebra::BaseVector *result, const linearalgebra::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 (linearalgebra::BaseVector *result, const linearalgebra::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 (linearalgebra::BaseVector *result, const linearalgebra::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 (linearalgebra::BaseVector *result, const linearalgebra::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 (linearalgebra::BaseMatrix *m, double fact) const | 
|  | Subtract the matrix to the m matrix and strore the result in m.  More... 
 | 
|  | 
| virtual void | opAddMT (linearalgebra::BaseMatrix *m, double fact) const | 
|  | Subtract the transposed matrix to the m matrix and strore the result in m.  More... 
 | 
|  | 
| 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 BlockConstAccessor | blocGet (Index i, Index j) const | 
|  | Get read access to a block.  More... 
 | 
|  | 
| virtual BlockAccessor | blocGetW (Index i, Index j) | 
|  | Get write access to a block.  More... 
 | 
|  | 
| virtual BlockAccessor | blocCreate (Index i, Index j) | 
|  | Get write access to a block, 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, ColBlockConstIterator > | bRowRange (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, RowBlockConstIterator > | bRowsRange () 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 float * | bAccessorElements (const InternalBlockAccessor *b, float *buffer) const | 
|  | 
| virtual const double * | bAccessorElements (const InternalBlockAccessor *b, double *buffer) const | 
|  | 
| virtual const int * | bAccessorElements (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 float * | bAccessorPrepareAdd (InternalBlockAccessor *b, float *buffer) | 
|  | 
| virtual double * | bAccessorPrepareAdd (InternalBlockAccessor *b, double *buffer) | 
|  | 
| virtual int * | bAccessorPrepareAdd (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, ColBlockConstIterator > | itRangeRowBlock (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 InternalBlockAccessor * | getInternal (BlockConstAccessor *b) | 
|  | 
| static const InternalBlockAccessor * | getInternal (const BlockConstAccessor *b) | 
|  | 
| static InternalBlockAccessor * | getInternal (BlockAccessor *b) | 
|  | 
| static const InternalBlockAccessor * | getInternal (const BlockAccessor *b) | 
|  | 
| static InternalColBlockIterator * | getInternal (ColBlockConstIterator *b) | 
|  | 
| static const InternalColBlockIterator * | getInternal (const ColBlockConstIterator *b) | 
|  | 
| static InternalRowBlockIterator * | getInternal (RowBlockConstIterator *b) | 
|  | 
| static const InternalRowBlockIterator * | getInternal (const RowBlockConstIterator *b) | 
|  |