Simbody
3.8
|
Matrix "structure" refers to an inherent mathematical (or at least algorithmic) characteristic of the matrix rather than a storage strategy. More...
Classes | |
struct | Mask |
Public Types | |
enum | Structure { NoStructure = 0x00000000 , Matrix1d = 0x00000001 , Zero = 0x00000002 , Identity = 0x00000004 , Permutation = 0x00000008 , RepeatedDiagonal = 0x00000010 , Diagonal = 0x00000020 , BiDiagonal = 0x00000040 , TriDiagonal = 0x00000080 , BandedSymmetric = 0x00000100 , BandedHermitian = 0x00000200 , Banded = 0x00000400 , Triangular = 0x00000800 , QuasiTriangular = 0x00001000 , Hessenberg = 0x00002000 , Symmetric = 0x00004000 , Hermitian = 0x00008000 , SkewSymmetric = 0x00010000 , SkewHermitian = 0x00020000 , Full = 0x00040000 } |
enum | Position { NoPosition = 0x0000 , Lower = 0x0001 , Upper = 0x0002 } |
For triangular matrices, we have to know which triangle we're talking about. More... | |
enum | DiagValue { NoDiagValue = 0x0000 , StoredDiag = 0x0001 , ZeroDiag = 0x0002 , UnitDiag = 0x0004 } |
For triangular, symmetric, and hermitian matrices the diagonal elements may have a single, assumed value rather than being stored in memory. More... | |
typedef unsigned int | StructureMask |
typedef unsigned short | PositionMask |
typedef unsigned short | DiagValueMask |
Public Member Functions | |
MatrixStructure & | setMissingAttributes () |
std::string | name () const |
MatrixStructure () | |
MatrixStructure (Structure s, Position p=NoPosition, DiagValue d=NoDiagValue) | |
This constructor is also an implicit conversion from the Structure enum to a MatrixStructure object which does not specify Position or DiagValue. More... | |
Mask | mask () const |
Given a Structure commitment, which more-restrictive Structures will still satisfy this commitment? Returned value is a mask with a bit set for every Structure that is satisfactory. More... | |
Structure | getStructure () const |
Position | getPosition () const |
DiagValue | getDiagValue () const |
MatrixStructure & | setStructure (Structure s) |
MatrixStructure & | setPosition (Position p) |
MatrixStructure & | setDiagValue (DiagValue d) |
MatrixStructure & | set (Structure s, Position p, DiagValue d) |
MatrixStructure & | setToNone () |
Static Public Member Functions | |
static const char * | name (Structure) |
static StructureMask | calcStructureMask (Structure) |
static const char * | name (Position) |
static PositionMask | calcPositionMask (Structure) |
static const char * | name (DiagValue) |
static DiagValueMask | calcDiagValueMask (Structure) |
Static Public Attributes | |
static const StructureMask | AnyStructure = 0x0007ffffU |
static const StructureMask | UncommittedStructure = 0xffffffffU |
static const PositionMask | AnyPosition = 0x0003U |
static const PositionMask | UncommittedPosition = 0xffffU |
static const DiagValueMask | AnyDiagValue = 0x0003U |
static const DiagValueMask | UncommittedDiagValue = 0xffffU |
Matrix "structure" refers to an inherent mathematical (or at least algorithmic) characteristic of the matrix rather than a storage strategy.
Symmetry is the clearest example of this; it is far more significant mathematically than just a way to save storage and reduce operation count.
typedef unsigned int SimTK::MatrixStructure::StructureMask |
typedef unsigned short SimTK::MatrixStructure::PositionMask |
typedef unsigned short SimTK::MatrixStructure::DiagValueMask |
For triangular matrices, we have to know which triangle we're talking about.
Don't confuse this with MatrixStorage::Placement which has to do with where we put it in memory, not what matrix is being represented.
Enumerator | |
---|---|
NoPosition | |
Lower | |
Upper |
For triangular, symmetric, and hermitian matrices the diagonal elements may have a single, assumed value rather than being stored in memory.
This specifies the value. Don't confuse this with the similar MatrixStorage type which simply says whether there is a known value rather than stored values, not what that value is.
Enumerator | |
---|---|
NoDiagValue | |
StoredDiag | |
ZeroDiag | |
UnitDiag |
|
inline |
|
inline |
This constructor is also an implicit conversion from the Structure enum to a MatrixStructure object which does not specify Position or DiagValue.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
inline |
|
inline |
Mask SimTK::MatrixStructure::mask | ( | ) | const |
Given a Structure commitment, which more-restrictive Structures will still satisfy this commitment? Returned value is a mask with a bit set for every Structure that is satisfactory.
For example, if the commitment is "Banded", "Diagonal" is also acceptable.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |