#include <IpDenseSymMatrix.hpp>
Matrix elements are stored in one array in "Fortran" format, using BLAS "lower triangular" storage (not packed).
Public Member Functions | |
SmartPtr< DenseSymMatrix > | MakeNewDenseSymMatrix () const |
Create a new DenseSymMatrix from same MatrixSpace. | |
Number * | Values () |
Retrieve the array for storing the matrix elements. | |
const Number * | Values () const |
Retrieve the array that stores the matrix elements. | |
void | FillIdentity (Number factor=1.) |
Set this matrix to be a multiple of the identity matrix. | |
void | AddMatrix (Number alpha, const DenseSymMatrix &A, Number beta) |
Method for adding another matrix to this one. | |
void | HighRankUpdate (bool trans, Number alpha, const DenseGenMatrix &V, Number beta) |
Method for adding a high-rank update to this matrix. | |
void | HighRankUpdateTranspose (Number alpha, const MultiVectorMatrix &V1, const MultiVectorMatrix &V2, Number beta) |
Method for adding a high-rank update to this matrix. | |
void | SpecialAddForLMSR1 (const DenseVector &D, const DenseGenMatrix &L) |
Method for doing a specialized Add operation, required in the limited memory SR1 update. | |
Constructors / Destructors | |
DenseSymMatrix (const DenseSymMatrixSpace *owner_space) | |
Constructor, taking the owner_space. | |
~DenseSymMatrix () | |
Destructor. | |
Protected Member Functions | |
Overloaded methods from Matrix base class | |
virtual void | MultVectorImpl (Number alpha, const Vector &x, Number beta, Vector &y) const |
Method for determining if all stored numbers are valid (i.e., no Inf or Nan). | |
virtual bool | HasValidNumbersImpl () const |
Method for determining if all stored numbers are valid (i.e., no Inf or Nan). | |
virtual void | PrintImpl (const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix) const |
Method for determining if all stored numbers are valid (i.e., no Inf or Nan). |
DenseSymMatrix | ( | const DenseSymMatrixSpace * | owner_space | ) |
Constructor, taking the owner_space.
~DenseSymMatrix | ( | ) |
Destructor.
SmartPtr< DenseSymMatrix > MakeNewDenseSymMatrix | ( | ) | const [inline] |
Create a new DenseSymMatrix from same MatrixSpace.
References DenseSymMatrixSpace::MakeNewDenseSymMatrix().
Number* Values | ( | ) | [inline] |
Retrieve the array for storing the matrix elements.
This is the non-const version, and it is assume that afterwards the calling method will set all matrix elements. The matrix elements are stored one column after each other.
References TaggedObject::ObjectChanged().
Referenced by DenseSymMatrix::AddMatrix(), DenseGenMatrix::ComputeCholeskyFactor(), and DenseGenMatrix::ComputeEigenVectors().
const Number* Values | ( | ) | const [inline] |
Retrieve the array that stores the matrix elements.
This is the const version, i.e., read-only. The matrix elements are stored one column after each other.
References DBG_ASSERT.
void FillIdentity | ( | Number | factor = 1. |
) |
Set this matrix to be a multiple of the identity matrix.
References SymMatrix::Dim(), fkinkryx::i, and TaggedObject::ObjectChanged().
void AddMatrix | ( | Number | alpha, | |
const DenseSymMatrix & | A, | |||
Number | beta | |||
) |
Method for adding another matrix to this one.
If B is this matrix, it becomes B = alpha * A + beta * B after this call.
References DBG_ASSERT, SymMatrix::Dim(), fkinkryx::i, TaggedObject::ObjectChanged(), and DenseSymMatrix::Values().
void HighRankUpdate | ( | bool | trans, | |
Number | alpha, | |||
const DenseGenMatrix & | V, | |||
Number | beta | |||
) |
Method for adding a high-rank update to this matrix.
It computes M = alpha*op(V) op(V)^T + beta*M, where V is a DenseGenMatrix, where op(V) is V^T trans is true.
References DBG_ASSERT, SymMatrix::Dim(), Ipopt::IpBlasDsyrk(), Matrix::NCols(), Matrix::NRows(), TaggedObject::ObjectChanged(), and DenseGenMatrix::Values().
void HighRankUpdateTranspose | ( | Number | alpha, | |
const MultiVectorMatrix & | V1, | |||
const MultiVectorMatrix & | V2, | |||
Number | beta | |||
) |
Method for adding a high-rank update to this matrix.
It computes M = alpha*V1^T V2 + beta*M, where V1 and V2 are MultiVectorMatrices, so that V1^T V2 is symmetric.
References DBG_ASSERT, SymMatrix::Dim(), MultiVectorMatrix::GetVector(), fkinkryx::i, Matrix::NCols(), and TaggedObject::ObjectChanged().
void SpecialAddForLMSR1 | ( | const DenseVector & | D, | |
const DenseGenMatrix & | L | |||
) |
Method for doing a specialized Add operation, required in the limited memory SR1 update.
if M is this matrix, it computes M = M + D + L + L^T, where D is a diagonal matrix (given as a DenseVector), and L is a matrix that is assumed to be strictly lower triangular.
References DBG_ASSERT, Vector::Dim(), SymMatrix::Dim(), fkinkryx::i, Matrix::NCols(), Matrix::NRows(), TaggedObject::ObjectChanged(), DenseGenMatrix::Values(), and DenseVector::Values().
void MultVectorImpl | ( | Number | alpha, | |
const Vector & | x, | |||
Number | beta, | |||
Vector & | y | |||
) | const [protected, virtual] |
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
Implements Matrix.
References DBG_ASSERT, SymMatrix::Dim(), Vector::Dim(), Ipopt::IpBlasDsymv(), Matrix::NCols(), Matrix::NRows(), and DenseVector::Values().
bool HasValidNumbersImpl | ( | ) | const [protected, virtual] |
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
Reimplemented from Matrix.
References DBG_ASSERT, SymMatrix::Dim(), fkinkryx::i, Ipopt::IsFiniteNumber(), and SimTK::sum().
void PrintImpl | ( | const Journalist & | jnlst, | |
EJournalLevel | level, | |||
EJournalCategory | category, | |||
const std::string & | name, | |||
Index | indent, | |||
const std::string & | prefix | |||
) | const [protected, virtual] |
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
Implements Matrix.
References SymMatrix::Dim(), fkinkryx::i, Matrix::NCols(), Matrix::NRows(), Journalist::Printf(), and Journalist::PrintfIndented().