Simbody
3.7
|
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 |