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