qpOASES  3.2.1
An Implementation of the Online Active Set Strategy
Public Member Functions | Protected Attributes
SparseMatrix Class Reference

Interfaces matrix-vector operations tailored to general sparse matrices. More...

#include <Matrices.hpp>

Inheritance diagram for SparseMatrix:
Matrix SymSparseMat

List of all members.

Public Member Functions

 SparseMatrix ()
 SparseMatrix (int_t nr, int_t nc, sparse_int_t *r, sparse_int_t *c, real_t *v)
 SparseMatrix (int_t nr, int_t nc, int_t ld, const real_t *const v)
virtual ~SparseMatrix ()
virtual void free ()
virtual Matrixduplicate () const
virtual void setVal (const real_t *newVal)
virtual real_t diag (int_t i) const
virtual BooleanType isDiag () const
virtual real_t getNorm (int_t type=2) const
virtual real_t getRowNorm (int_t rNum, int_t type=2) const
virtual returnValue getRowNorm (real_t *norm, int_t type=2) const
virtual returnValue getRow (int_t rNum, const Indexlist *const icols, real_t alpha, real_t *row) const
virtual returnValue getCol (int_t cNum, const Indexlist *const irows, real_t alpha, real_t *col) const
virtual returnValue getSparseSubmatrix (int_t irowsLength, const int_t *const irowsNumber, int_t icolsLength, const int_t *const icolsNumber, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
virtual returnValue times (int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
virtual returnValue transTimes (int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
virtual returnValue times (const Indexlist *const irows, const Indexlist *const icols, int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD, BooleanType yCompr=BT_TRUE) const
virtual returnValue transTimes (const Indexlist *const irows, const Indexlist *const icols, int_t xN, real_t alpha, const real_t *x, int_t xLD, real_t beta, real_t *y, int_t yLD) const
virtual returnValue addToDiag (real_t alpha)
sparse_int_tcreateDiagInfo ()
virtual real_tfull () const
virtual returnValue print (const char *name=0) const
virtual returnValue writeToFile (FILE *output_file, const char *prefix) const
virtual returnValue getSparseSubmatrix (const Indexlist *const irows, const Indexlist *const icols, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
virtual returnValue getSparseSubmatrix (const Indexlist *const irows, int_t idx_icol, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
virtual returnValue getSparseSubmatrix (int_t idx_row, const Indexlist *const icols, int_t rowoffset, int_t coloffset, int_t &numNonzeros, int_t *irn, int_t *jcn, real_t *avals, BooleanType only_lower_triangular=BT_FALSE) const
BooleanType needToFreeMemory () const
void doFreeMemory ()
void doNotFreeMemory ()

Protected Attributes

int_t nRows
int_t nCols
sparse_int_tir
sparse_int_tjc
sparse_int_tjd
real_tval
BooleanType freeMemory

Detailed Description

Sparse matrix class (col compressed format).

Author:
Andreas Potschka, Christian Kirches, Hans Joachim Ferreau
Version:
3.2
Date:
2011-2017

Constructor & Destructor Documentation

Default constructor.

Referenced by duplicate().

SparseMatrix::SparseMatrix ( int_t  nr,
int_t  nc,
sparse_int_t r,
sparse_int_t c,
real_t v 
)

Constructor with arguments.

Parameters:
nrNumber of rows.
ncNumber of columns.
rRow indices (length).
cIndices to first entry of columns (nCols+1).
vVector of entries (length).

References Matrix::doNotFreeMemory().

SparseMatrix::SparseMatrix ( int_t  nr,
int_t  nc,
int_t  ld,
const real_t *const  v 
)

Constructor from dense matrix.

Parameters:
nrNumber of rows.
ncNumber of columns.
ldLeading dimension.
vRow major stored matrix elements.

References BT_FALSE, Matrix::doFreeMemory(), ir, isZero(), jc, nCols, nRows, real_t, and val.

Destructor.

References BT_TRUE, free(), jd, and Matrix::needToFreeMemory().


Member Function Documentation

Adds given offset to diagonal of matrix.

Returns:
SUCCESSFUL_RETURN
RET_NO_DIAGONAL_AVAILABLE
Parameters:
alphaDiagonal offset.

Implements Matrix.

References BT_FALSE, ir, isZero(), jd, nCols, nRows, RET_DIAGONAL_NOT_INITIALISED, RET_NO_DIAGONAL_AVAILABLE, SUCCESSFUL_RETURN, THROWERROR, and val.

Create jd field from ir and jc.

Returns:
Pointer to jd.

References ir, jc, jd, and nCols.

Referenced by QProblemB::createDiagSparseMat(), and solveOqpBenchmark().

real_t SparseMatrix::diag ( int_t  i) const [virtual]

Returns i-th diagonal entry.

Returns:
i-th diagonal entry (or INFTY if diagonal does not exist)
Parameters:
iIndex.

Implements Matrix.

References INFTY, ir, jc, jd, RET_DIAGONAL_NOT_INITIALISED, THROWERROR, and val.

void Matrix::doFreeMemory ( ) [inline, inherited]
void Matrix::doNotFreeMemory ( ) [inline, inherited]

Disables de-allocation of internal memory.

Referenced by free(), SparseMatrixRow::free(), Matrix::Matrix(), SparseMatrix(), and SparseMatrixRow::SparseMatrixRow().

Matrix * SparseMatrix::duplicate ( ) const [virtual]

Returns a deep-copy of the Matrix object.

Returns:
Deep-copy of Matrix object

Implements Matrix.

Reimplemented in SymSparseMat.

References Matrix::doFreeMemory(), ir, jc, jd, nCols, nRows, real_t, SparseMatrix(), and val.

void SparseMatrix::free ( ) [virtual]

Frees all internal memory.

Implements Matrix.

References Matrix::doNotFreeMemory(), ir, jc, and val.

Referenced by ~SparseMatrix().

real_t * SparseMatrix::full ( ) const [virtual]

Allocates and creates dense matrix array in row major format.

Note: Calling function has to free allocated memory!

Returns:
Pointer to matrix array.

Implements Matrix.

References ir, jc, nCols, nRows, real_t, and val.

Referenced by print().

returnValue SparseMatrix::getCol ( int_t  cNum,
const Indexlist *const  irows,
real_t  alpha,
real_t col 
) const [virtual]

Retrieve indexed entries of matrix column multiplied by alpha.

Parameters:
cNumColumn number.
irowsIndex list specifying rows.
alphaScalar factor.
colOutput column vector.

Implements Matrix.

References BT_TRUE, ir, isEqual(), Indexlist::iSort, jc, Indexlist::number, SUCCESSFUL_RETURN, and val.

real_t SparseMatrix::getNorm ( int_t  type = 2) const [virtual]

Get the N-norm of the matrix

Returns:
N-norm of the matrix
Parameters:
typeNorm type, 1: one-norm, 2: Euclidean norm.

Implements Matrix.

References jc, nCols, REFER_NAMESPACE_QPOASES, and val.

returnValue SparseMatrix::getRow ( int_t  rNum,
const Indexlist *const  icols,
real_t  alpha,
real_t row 
) const [virtual]

Retrieve indexed entries of matrix row multiplied by alpha.

Parameters:
rNumRow number.
icolsIndex list specifying columns.
alphaScalar factor.
rowOutput row vector.

Implements Matrix.

References BT_TRUE, ir, isEqual(), Indexlist::iSort, jc, Indexlist::length, nCols, Indexlist::number, SUCCESSFUL_RETURN, and val.

real_t SparseMatrix::getRowNorm ( int_t  rNum,
int_t  type = 2 
) const [virtual]

Get the N-norm of a row

Returns:
N-norm of row rNum
Parameters:
rNumRow number.
typeNorm type, 1: one-norm, 2: Euclidean norm.

Implements Matrix.

References getAbs(), getSqrt(), INFTY, ir, jc, nCols, real_t, RET_INVALID_ARGUMENTS, THROWERROR, and val.

returnValue SparseMatrix::getRowNorm ( real_t norm,
int_t  type = 2 
) const [virtual]

Get the N-norm of all rows

Returns:
SUCCESSFUL_RETURN
Parameters:
normNorm of each row.
typeNorm type, 1: one-norm, 2: Euclidean norm.

Implements Matrix.

References getAbs(), getSqrt(), ir, jc, nCols, nRows, RET_INVALID_ARGUMENTS, SUCCESSFUL_RETURN, and val.

BEGIN_NAMESPACE_QPOASES returnValue Matrix::getSparseSubmatrix ( const Indexlist *const  irows,
const Indexlist *const  icols,
int_t  rowoffset,
int_t  coloffset,
int_t numNonzeros,
int_t irn,
int_t jcn,
real_t avals,
BooleanType  only_lower_triangular = BT_FALSE 
) const [virtual, inherited]

Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return.

Returns:
SUCCESSFUL_RETURN
Parameters:
irowsIndex list specifying rows.
icolsIndex list specifying columns.
rowoffsetOffset for row entries.
coloffsetOffset for row entries.
numNonzerosNumber of nonzeros in submatrix.
irnRow position of entries (as position in irows) plus rowoffset.
jcnColumn position of entries (as position in irows) plus coloffset.
avalsNumerical values of the entries.
only_lower_triangularif true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols.

References Indexlist::getLength(), and Indexlist::getNumberArray().

Referenced by SQProblemSchur::addConstraint(), Matrix::getSparseSubmatrix(), SQProblemSchur::removeBound(), and SQProblemSchur::resetSchurComplement().

returnValue Matrix::getSparseSubmatrix ( const Indexlist *const  irows,
int_t  idx_icol,
int_t  rowoffset,
int_t  coloffset,
int_t numNonzeros,
int_t irn,
int_t jcn,
real_t avals,
BooleanType  only_lower_triangular = BT_FALSE 
) const [virtual, inherited]

Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return. This version retrieves one column.

Returns:
SUCCESSFUL_RETURN
Parameters:
irowsIndex list specifying rows.
idx_icolIndex list specifying columns.
rowoffsetOffset for row entries.
coloffsetOffset for row entries.
numNonzerosNumber of nonzeros in submatrix.
irnRow position of entries (as position in irows) plus rowoffset.
jcnColumn position of entries (as position in irows) plus coloffset.
avalsNumerical values of the entries.
only_lower_triangularif true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols.

References Indexlist::getLength(), Indexlist::getNumberArray(), and Matrix::getSparseSubmatrix().

returnValue Matrix::getSparseSubmatrix ( int_t  idx_row,
const Indexlist *const  icols,
int_t  rowoffset,
int_t  coloffset,
int_t numNonzeros,
int_t irn,
int_t jcn,
real_t avals,
BooleanType  only_lower_triangular = BT_FALSE 
) const [virtual, inherited]

Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return. This version retrieves one row.

Returns:
SUCCESSFUL_RETURN
Parameters:
idx_rowRow number.
icolsIndex list specifying columns.
rowoffsetOffset for row entries.
coloffsetOffset for row entries.
numNonzerosNumber of nonzeros in submatrix.
irnRow position of entries (as position in irows) plus rowoffset.
jcnColumn position of entries (as position in irows) plus coloffset.
avalsNumerical values of the entries.
only_lower_triangularif true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols.

References Indexlist::getLength(), Indexlist::getNumberArray(), and Matrix::getSparseSubmatrix().

returnValue SparseMatrix::getSparseSubmatrix ( int_t  irowsLength,
const int_t *const  irowsNumber,
int_t  icolsLength,
const int_t *const  icolsNumber,
int_t  rowoffset,
int_t  coloffset,
int_t numNonzeros,
int_t irn,
int_t jcn,
real_t avals,
BooleanType  only_lower_triangular = BT_FALSE 
) const [virtual]

Retrieve entries of submatrix in Harwell-Boeing sparse format. If irn, jcn, and avals are null, this only counts the number of nonzeros. Otherwise, numNonzeros containts the size of irn, jcn, and avals on entry, and the written number of entries on return.

Returns:
SUCCESSFUL_RETURN
Parameters:
irowsLengthNumber of rows.
irowsNumberArray with row numbers.
icolsLengthNumber of columns.
icolsNumberArray with column numbers.
rowoffsetOffset for row entries.
coloffsetOffset for row entries.
numNonzerosNumber of nonzeros in submatrix.
irnRow position of entries (as position in irows) plus rowoffset.
jcnColumn position of entries (as position in irows) plus coloffset.
avalsNumerical values of the entries.
only_lower_triangularif true, only the lower triangular portion is returned. This can only be true for symmetric matrices and if irows==jcols.

Implements Matrix.

References BT_FALSE, ir, jc, nRows, RET_INVALID_ARGUMENTS, SUCCESSFUL_RETURN, THROWERROR, and val.

BooleanType SparseMatrix::isDiag ( ) const [virtual]

Checks whether matrix is square and diagonal.

Returns:
BT_TRUE iff matrix is square and diagonal;
BT_FALSE otherwise.

Implements Matrix.

References BT_FALSE, BT_TRUE, ir, jc, nCols, and nRows.

BooleanType Matrix::needToFreeMemory ( ) const [inline, inherited]

Returns whether internal memory needs to be de-allocated.

Returns:
BT_TRUE iff internal memory needs to be de-allocated,
BT_FALSE otherwise

References Matrix::freeMemory.

Referenced by DenseMatrix::duplicate(), SymDenseMat::duplicateSym(), DenseMatrix::~DenseMatrix(), ~SparseMatrix(), and SparseMatrixRow::~SparseMatrixRow().

returnValue SparseMatrix::print ( const char *  name = 0) const [virtual]

Prints matrix to screen.

Returns:
SUCCESSFUL_RETURN
Parameters:
nameName of matrix.

Implements Matrix.

References full(), nCols, nRows, real_t, and REFER_NAMESPACE_QPOASES.

void SparseMatrix::setVal ( const real_t newVal) [virtual]

Sets value array.

Thanks to Frank Chuang.

Parameters:
newVal...

References jc, nCols, and val.

returnValue SparseMatrix::times ( int_t  xN,
real_t  alpha,
const real_t x,
int_t  xLD,
real_t  beta,
real_t y,
int_t  yLD 
) const [virtual]

Evaluate Y=alpha*A*X + beta*Y.

Parameters:
xNNumber of vectors to multiply.
alphaScalar factor for matrix vector product.
xInput vector to be multiplied.
xLDLeading dimension of input x.
betaScalar factor for y.
yOutput vector of results.
yLDLeading dimension of output y.

Implements Matrix.

References BT_FALSE, BT_TRUE, ir, isEqual(), isZero(), jc, nCols, nRows, SUCCESSFUL_RETURN, and val.

returnValue SparseMatrix::times ( const Indexlist *const  irows,
const Indexlist *const  icols,
int_t  xN,
real_t  alpha,
const real_t x,
int_t  xLD,
real_t  beta,
real_t y,
int_t  yLD,
BooleanType  yCompr = BT_TRUE 
) const [virtual]

Evaluate matrix vector product with submatrix given by Indexlist.

Parameters:
irowsIndex list specifying rows.
icolsIndex list specifying columns.
xNNumber of vectors to multiply.
alphaScalar factor for matrix vector product.
xInput vector to be multiplied.
xLDLeading dimension of input x.
betaScalar factor for y.
yOutput vector of results.
yLDLeading dimension of output y.
yComprCompressed storage for y.

Implements Matrix.

References BT_FALSE, BT_TRUE, getAbs(), getMax(), ir, isEqual(), Indexlist::iSort, isZero(), jc, Indexlist::length, nCols, nRows, Indexlist::number, real_t, SUCCESSFUL_RETURN, and val.

returnValue SparseMatrix::transTimes ( int_t  xN,
real_t  alpha,
const real_t x,
int_t  xLD,
real_t  beta,
real_t y,
int_t  yLD 
) const [virtual]

Evaluate Y=alpha*A'*X + beta*Y.

Parameters:
xNNumber of vectors to multiply.
alphaScalar factor for matrix vector product.
xInput vector to be multiplied.
xLDLeading dimension of input x.
betaScalar factor for y.
yOutput vector of results.
yLDLeading dimension of output y.

Implements Matrix.

References BT_FALSE, BT_TRUE, ir, isEqual(), isZero(), jc, nCols, SUCCESSFUL_RETURN, and val.

returnValue SparseMatrix::transTimes ( const Indexlist *const  irows,
const Indexlist *const  icols,
int_t  xN,
real_t  alpha,
const real_t x,
int_t  xLD,
real_t  beta,
real_t y,
int_t  yLD 
) const [virtual]

Evaluate matrix transpose vector product.

Parameters:
irowsIndex list specifying rows.
icolsIndex list specifying columns.
xNNumber of vectors to multiply.
alphaScalar factor for matrix vector product.
xInput vector to be multiplied.
xLDLeading dimension of input x.
betaScalar factor for y.
yOutput vector of results.
yLDLeading dimension of output y.

Implements Matrix.

References BT_FALSE, BT_TRUE, ir, isEqual(), Indexlist::iSort, isZero(), jc, Indexlist::length, nRows, Indexlist::number, real_t, SUCCESSFUL_RETURN, and val.

returnValue SparseMatrix::writeToFile ( FILE *  output_file,
const char *  prefix 
) const [virtual]

Write matrix to file.

Returns:
SUCCESSFUL_RETURN

Implements Matrix.

References ir, jc, nCols, SUCCESSFUL_RETURN, and val.


Member Data Documentation

BooleanType Matrix::freeMemory [protected, inherited]

Indicating whether internal memory needs to be de-allocated.

Referenced by Matrix::doFreeMemory(), and Matrix::needToFreeMemory().

Indices to first entry of lower triangle (including diagonal) (nCols).

Referenced by addToDiag(), SymSparseMat::bilinear(), createDiagInfo(), diag(), duplicate(), SymSparseMat::duplicateSym(), and ~SparseMatrix().

real_t* SparseMatrix::val [protected]

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