Simbody  3.7
SimTK::MatrixStructure Class Reference

Matrix "structure" refers to an inherent mathematical (or at least algorithmic) characteristic of the matrix rather than a storage strategy. More...

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

MatrixStructuresetMissingAttributes ()

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

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

MatrixStructuresetStructure (Structure s)

MatrixStructuresetPosition (Position p)

MatrixStructuresetDiagValue (DiagValue d)

MatrixStructureset (Structure s, Position p, DiagValue d)

MatrixStructuresetToNone ()

## Static Public Member Functions

static const char * name (Structure)

static const char * name (Position)

static const char * name (DiagValue)

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

## Detailed Description

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.

## Member Typedef Documentation

 typedef unsigned int SimTK::MatrixStructure::StructureMask

 typedef unsigned short SimTK::MatrixStructure::PositionMask

 typedef unsigned short SimTK::MatrixStructure::DiagValueMask

## ◆ Structure

Enumerator
NoStructure

unspecified structure

Matrix1d

a 1-d matrix (could be row or column)

Zero

a matrix of all zeroes

Identity

diagonal matrix with repeated 1's

Permutation

permutation of an identity matrix

RepeatedDiagonal

diagonal matrix with repeated element

Diagonal

diagonal matrix with arbitrary elements

BiDiagonal

diagonal plus one upper or lower band

TriDiagonal

diagonal plus one upper and one lower band

BandedSymmetric

diagonal plus adjacent symmetric bands

BandedHermitian

diagonal plus adjacent conjugate bands

Banded

diagonal plus upper and lower bands

Triangular

diagonal plus all upper or all lower bands

QuasiTriangular

triangular but with 2x2 blocks on the diagonal

Hessenberg

triangular plus one band above/below diagonal

Symmetric

symmetric: elt(i,j)==elt(j,i)

Hermitian

hermitian: elt(i,j)==conjugate(elt(j,i))

SkewSymmetric

skew symmetric: elt(i,j) == -elt(j,i)

SkewHermitian

skew hermitian: elt(i,j) == -conjugate(elt(j,i))

Full

full mxn matrix, all elements distinct

## ◆ Position

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

## ◆ DiagValue

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

## ◆ MatrixStructure() [1/2]

 SimTK::MatrixStructure::MatrixStructure ( )
inline

## ◆ MatrixStructure() [2/2]

 SimTK::MatrixStructure::MatrixStructure ( Structure s, Position p = `NoPosition`, DiagValue d = `NoDiagValue` )
inline

This constructor is also an implicit conversion from the Structure enum to a MatrixStructure object which does not specify Position or DiagValue.

## ◆ name() [1/4]

 static const char* SimTK::MatrixStructure::name ( Structure )
static

static

## ◆ name() [2/4]

 static const char* SimTK::MatrixStructure::name ( Position )
static

static

## ◆ name() [3/4]

 static const char* SimTK::MatrixStructure::name ( DiagValue )
static

static

## ◆ setMissingAttributes()

 MatrixStructure& SimTK::MatrixStructure::setMissingAttributes ( )
inline

## ◆ name() [4/4]

 std::string SimTK::MatrixStructure::name ( ) const
inline

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.

## ◆ getStructure()

 Structure SimTK::MatrixStructure::getStructure ( ) const
inline

## ◆ getPosition()

 Position SimTK::MatrixStructure::getPosition ( ) const
inline

## ◆ getDiagValue()

 DiagValue SimTK::MatrixStructure::getDiagValue ( ) const
inline

## ◆ setStructure()

 MatrixStructure& SimTK::MatrixStructure::setStructure ( Structure s )
inline

## ◆ setPosition()

 MatrixStructure& SimTK::MatrixStructure::setPosition ( Position p )
inline

## ◆ setDiagValue()

 MatrixStructure& SimTK::MatrixStructure::setDiagValue ( DiagValue d )
inline

## ◆ set()

 MatrixStructure& SimTK::MatrixStructure::set ( Structure s, Position p, DiagValue d )
inline

## ◆ setToNone()

 MatrixStructure& SimTK::MatrixStructure::setToNone ( )
inline

## ◆ AnyStructure

 const StructureMask SimTK::MatrixStructure::AnyStructure = 0x0007ffffU
static

## ◆ UncommittedStructure

 const StructureMask SimTK::MatrixStructure::UncommittedStructure = 0xffffffffU
static

## ◆ AnyPosition

 const PositionMask SimTK::MatrixStructure::AnyPosition = 0x0003U
static

## ◆ UncommittedPosition

 const PositionMask SimTK::MatrixStructure::UncommittedPosition = 0xffffU
static

## ◆ AnyDiagValue

 const DiagValueMask SimTK::MatrixStructure::AnyDiagValue = 0x0003U
static

## ◆ UncommittedDiagValue

 const DiagValueMask SimTK::MatrixStructure::UncommittedDiagValue = 0xffffU
static

The documentation for this class was generated from the following file: