a data structure to represent a matrix object (derived from MatrixType) More...
#include <OSMatrix.h>
Public Member Functions | |
OSMatrix () | |
-------— Methods for class OSMatrix -------— More... | |
~OSMatrix () | |
OSMatrix * | createConstructorTreeFromPrefix (std::vector< MatrixNode * > mtxConstructorVec) |
virtual ENUM_MATRIX_CONSTRUCTOR_TYPE | getNodeType () |
virtual std::string | getNodeName () |
virtual ENUM_MATRIX_TYPE | getMatrixType () |
virtual bool | expandElements (bool rowMajor) |
A method to process a matrixType into a specific block structure. More... | |
virtual bool | alignsOnBlockBoundary (int firstRow, int firstColumn, int nRows, int nCols) |
Check whether a submatrix aligns with the block partition of a matrix or block or other constructor. More... | |
bool | isBlockDiagonal () |
A method to check whether a matrix is block-diagonal. More... | |
bool | setMatrix (std::string name, int numberOfRows, int numberOfColumns, ENUM_MATRIX_SYMMETRY symmetry, ENUM_MATRIX_TYPE matrixType, unsigned int inumberOfChildren, MatrixNode **m_mChildren) |
add values to this matrix. More... | |
virtual std::string | getMatrixNodeInXML () |
virtual OSMatrix * | cloneMatrixNode () |
The implementation of the virtual functions. More... | |
bool | IsEqual (OSMatrix *that) |
A function to check for the equality of two objects. More... | |
bool | setRandom (double density, bool conformant, int iMin, int iMax) |
A function to make a random instance of this class. More... | |
bool | deepCopyFrom (OSMatrix *that) |
A function to make a deep copy of an instance of this class. More... | |
![]() | |
MatrixType () | |
-------— Methods for class MatrixType -------— More... | |
virtual | ~MatrixType () |
bool | matrixHasBase () |
Several tools to parse the constructor list of a matrix. More... | |
bool | matrixHasElements () |
bool | matrixHasTransformations () |
bool | matrixHasBlocks () |
int | getNumberOfElementConstructors () |
int | getNumberOfTransformationConstructors () |
int | getNumberOfBlocksConstructors () |
GeneralSparseMatrix * | getMatrixCoefficientsInColumnMajor () |
GeneralSparseMatrix * | getMatrixCoefficientsInRowMajor () |
GeneralSparseMatrix * | getMatrixBlockInColumnMajorForm (int columnIdx, int rowIdx) |
bool | printExpandedMatrix (bool rowMajor) |
a utility routine to print the expanded matrix or block. More... | |
int | getRowPartitionSize () |
get the size of the row partition of a matrix More... | |
int * | getRowPartition () |
get the row partition of the matrix More... | |
int | getColumnPartitionSize () |
get the size of the column partition of a matrix More... | |
int * | getColumnPartition () |
get the column partition of the matrix More... | |
GeneralSparseMatrix * | convertToOtherMajor (bool isColumnMajor) |
A method to convert a matrix to the other major. More... | |
bool | processBlockPartition () |
A method to determine the block structure of a matrixType as defined by the <blocks> element or elements. More... | |
virtual bool | processBlocks (bool rowMajor, ENUM_MATRIX_SYMMETRY symmetry) |
A method to process a matrixType into a block structure defined by the <blocks> element or elements. More... | |
virtual bool | processBlocks (int *rowOffset, int rowOffsetSize, int *colOffset, int colOffsetSize, bool rowMajor, ENUM_MATRIX_SYMMETRY symmetry) |
A method to process a matrixType into a specific block structure. More... | |
GeneralSparseMatrix * | extractBlock (int firstrow, int firstcol, int lastrow, int lastcol, bool rowMajor, ENUM_MATRIX_SYMMETRY symmetry) |
A method to extract a block from a larger matrix The result is a sparse matrix object, depending on the matrixType, of constant matrix elements, variable references, linear or nonlinear expressions, or objective and constraint references (possibly mixed). More... | |
ExpandedMatrixBlocks * | getBlocks (int *rowPartition, int rowPartitionSize, int *colPartition, int colPartitionSize, bool rowMajor, bool appendToBlockArray) |
A method to extract a block from a larger matrix The result is a sparse matrix object, depending on the matrixType, of constant matrix elements, variable references, linear or nonlinear expressions, or objective and constraint references (possibly mixed). More... | |
ExpandedMatrixBlocks * | disassembleMatrix (int *rowPartition, int rowPartitionSize, int *colPartition, int colPartitionSize, bool rowMajor, ENUM_MATRIX_SYMMETRY symmetry) |
A method to disassemble a MatrixType into individual blocks of specific structure. More... | |
bool | IsEqual (MatrixType *that) |
A function to check for the equality of two objects. More... | |
bool | setRandom (double density, bool conformant, int iMin, int iMax) |
A function to make a random instance of this class. More... | |
bool | deepCopyFrom (MatrixType *that) |
A function to make a deep copy of an instance of this class. More... | |
![]() | |
MatrixNode () | |
default constructor More... | |
virtual | ~MatrixNode () |
destructor More... | |
std::vector< MatrixNode * > | getPrefixFromNodeTree () |
std::vector< MatrixNode * > | preOrderMatrixNodeTraversal (std::vector< MatrixNode * > *prefixVector) |
std::vector< MatrixNode * > | getPostfixFromNodeTree () |
std::vector< MatrixNode * > | postOrderMatrixNodeTraversal (std::vector< MatrixNode * > *postfixVector) |
virtual bool | IsEqual (MatrixNode *that) |
A function to check for the equality of two objects. More... | |
bool | setRandom (double density, bool conformant, int iMin, int iMax) |
A function to make a random instance of this class. More... | |
bool | deepCopyFrom (MatrixNode *that) |
A function to make a deep copy of an instance of this class. More... | |
Public Attributes | |
int | idx |
std::string | name |
![]() | |
ENUM_MATRIX_SYMMETRY | symmetry |
To track the type of symmetry present in the matrix or block. More... | |
ENUM_MATRIX_TYPE | type |
To track the type of values present in the matrix or block. More... | |
int | numberOfRows |
int | numberOfColumns |
GeneralSparseMatrix * | ExpandedMatrixInRowMajorForm |
The matrix can be held in expanded form by rows or by columns and in a number of ways stored by blocks. More... | |
GeneralSparseMatrix * | ExpandedMatrixInColumnMajorForm |
std::vector < ExpandedMatrixBlocks * > | ExpandedMatrixByBlocks |
![]() | |
ENUM_MATRIX_TYPE | matrixType |
matrixType tracks the type of elements contained in this MatrixNode, which may be useful in solver selection For an enumeration of the possible types see OSParameters.h More... | |
ENUM_MATRIX_CONSTRUCTOR_TYPE | nType |
nType is a unique integer assigned to each type of matrix node (see OSParameters.h) More... | |
unsigned int | inumberOfChildren |
inumberOfChildren is the number of MatrixNode child elements For the matrix types (OSMatrix and MatrixBlock) this number is not fixed and is temporarily set to 0 More... | |
MatrixNode ** | m_mChildren |
m_mChildren holds all the children, that is, nodes used in the definition or construction of the current node. More... | |
a data structure to represent a matrix object (derived from MatrixType)
Definition at line 2185 of file OSMatrix.h.
OSMatrix::OSMatrix | ( | ) |
-------— Methods for class OSMatrix -------—
Definition at line 2968 of file OSMatrix.cpp.
OSMatrix::~OSMatrix | ( | ) |
Definition at line 2979 of file OSMatrix.cpp.
OSMatrix * OSMatrix::createConstructorTreeFromPrefix | ( | std::vector< MatrixNode * > | mtxConstructorVec | ) |
Take a vector of MatrixNodes in prefix format and create a matrix root node
mtxConstructorVec | holds a vector of pointers to matrix constructors, mtxConstructorVec and blocks in prefix format |
Definition at line 2987 of file OSMatrix.cpp.
|
virtual |
Reimplemented from MatrixNode.
Definition at line 3010 of file OSMatrix.cpp.
|
virtual |
Implements MatrixNode.
Definition at line 3015 of file OSMatrix.cpp.
|
virtual |
Implements MatrixNode.
Definition at line 3020 of file OSMatrix.cpp.
|
virtual |
A method to process a matrixType into a specific block structure.
rowOffset | defines a partition of the matrix rows into the blocks |
colOffset | defines a partition of the matrix columns into the blocks |
rowMajor | controls whether the blocks are stored by row or by column |
symmetry | can be used to store only the upper or lower triangle, depending on the parameter value — see OSParameters.h for definitions |
rowMajor | can be used to store the objects in row major form. |
Reimplemented from MatrixType.
Definition at line 3031 of file OSMatrix.cpp.
|
virtual |
Check whether a submatrix aligns with the block partition of a matrix or block or other constructor.
firstRow | gives the number of the first row in the submatrix (zero-based) |
firstColumn | gives the number of the first column in the submatrix (zero-based) |
nRows | gives the number of rows in the submatrix |
nColumns | gives the number of columns in the submatrix |
Reimplemented from MatrixType.
Definition at line 3411 of file OSMatrix.cpp.
bool OSMatrix::isBlockDiagonal | ( | ) |
A method to check whether a matrix is block-diagonal.
bool OSMatrix::setMatrix | ( | std::string | name, |
int | numberOfRows, | ||
int | numberOfColumns, | ||
ENUM_MATRIX_SYMMETRY | symmetry, | ||
ENUM_MATRIX_TYPE | matrixType, | ||
unsigned int | inumberOfChildren, | ||
MatrixNode ** | m_mChildren | ||
) |
add values to this matrix.
name | holds the matrix name; use null or empty std::string ("") if no matrix name. |
numberOfRows | holds the number of rows. It is required. Use 1 for column vectors. |
numberOfColumns | holds the number of columns. It is required. Use 1 for row vectors. |
symmetry | holds the type of symmetry used in the definition of the matrix. For more information see the enumeration ENUM_MATRIX_SYMMETRY in OSGeneral.h. If no symmetry, use ENUM_MATRIX_SYMMETRY_none. |
matrixType | tracks the type of elements contained in this matrix. For more information see the enumeration ENUM_MATRIX_TYPE in OSGeneral.h. If unsure, use ENUM_MATRIX_TYPE_unknown. |
inumberOfChildren | is the number of MatrixNode child elements, i.e., the number of matrix constructors in the m_mChildren array. |
m_mChildren | is the array of matrix constructors used in the definition of this matrix. |
Definition at line 3668 of file OSMatrix.cpp.
|
virtual |
The following method writes a matrix node in OSgL format. it is used by OSgLWriter to write a <matrix> element.
Implements MatrixNode.
Reimplemented in OSMatrixWithMatrixConIdx, OSMatrixWithMatrixObjIdx, and OSMatrixWithMatrixVarIdx.
Definition at line 3683 of file OSMatrix.cpp.
|
virtual |
The implementation of the virtual functions.
Implements MatrixNode.
Reimplemented in OSMatrixWithMatrixConIdx, OSMatrixWithMatrixObjIdx, and OSMatrixWithMatrixVarIdx.
Definition at line 3708 of file OSMatrix.cpp.
bool OSMatrix::IsEqual | ( | OSMatrix * | that | ) |
A function to check for the equality of two objects.
Definition at line 3715 of file OSMatrix.cpp.
A function to make a random instance of this class.
density,: | corresponds to the probability that a particular child element is created |
conformant,: | if true enforces side constraints not enforceable in the schema (e.g., agreement of "numberOfXXX" attributes and <XXX> children) |
iMin,: | lowest index value (inclusive) that a variable reference in this matrix can take |
iMax,: | greatest index value (inclusive) that a variable reference in this matrix can take |
bool OSMatrix::deepCopyFrom | ( | OSMatrix * | that | ) |
A function to make a deep copy of an instance of this class.
that,: | the instance from which information is to be copied |
int OSMatrix::idx |
Definition at line 2188 of file OSMatrix.h.
std::string OSMatrix::name |
Definition at line 2189 of file OSMatrix.h.