1#ifndef SimTK_SIMMATRIX_MATRIX_CHARACTERISTICS_H_
2#define SimTK_SIMMATRIX_MATRIX_CHARACTERISTICS_H_
49class MatrixCommitment;
61 NoStructure = 0x00000000,
62 Matrix1d = 0x00000001,
64 Identity = 0x00000004,
65 Permutation = 0x00000008,
66 RepeatedDiagonal = 0x00000010,
67 Diagonal = 0x00000020,
68 BiDiagonal = 0x00000040,
69 TriDiagonal = 0x00000080,
70 BandedSymmetric = 0x00000100,
71 BandedHermitian = 0x00000200,
73 Triangular = 0x00000800,
74 QuasiTriangular = 0x00001000,
75 Hessenberg = 0x00002000,
76 Symmetric = 0x00004000,
77 Hermitian = 0x00008000,
78 SkewSymmetric = 0x00010000,
79 SkewHermitian = 0x00020000,
111 NoDiagValue = 0x0000,
124 if (structure == NoStructure)
126 if (position == NoPosition)
128 if (diagValue == NoDiagValue)
129 diagValue = StoredDiag;
134 return std::string(name(getStructure()))
135 +
"|" + std::string(name(getPosition()))
136 +
"|" + std::string(name(getDiagValue()));
142 : structure(sm), position(pm), diagValue(dm) {}
144 { structure=UncommittedStructure; position=UncommittedPosition;
145 diagValue=UncommittedDiagValue;
return *
this; }
147 {
return structure==UncommittedStructure && position==UncommittedPosition
148 && diagValue==UncommittedDiagValue; }
167 : structure(s), position(p), diagValue(d) {}
184 { structure=s; position=p; diagValue=d;
return *
this; }
187 { structure=NoStructure; position=NoPosition;
188 diagValue=NoDiagValue;
return *
this; }
191 Structure structure:32;
192 Position position:16;
193 DiagValue diagValue:16;
221 NoPlacement = 0x0000,
232 ColumnOrder = 0x0001,
254 : packing(UncommittedPacking), placement(UncommittedPlacement),
255 order(UncommittedOrder), diagonal(UncommittedDiagonal) {}
257 : packing(pkm), placement(plm), order(om), diagonal(dm) {}
259 { packing=UncommittedPacking; placement=UncommittedPlacement;
260 order=UncommittedOrder; diagonal=UncommittedDiagonal;
return *
this; }
262 {
return packing==UncommittedPacking && placement==UncommittedPlacement
263 && order==UncommittedOrder && diagonal==UncommittedDiagonal; }
283 return std::string(name(getPacking()))
284 +
"|" + std::string(name(getPlacement()))
285 +
"|" + std::string(name(getOrder()))
286 +
"|" + std::string(name(getDiagonal()));
304 : packing(NoPacking), placement(NoPlacement), order(NoOrder), diagonal(NoDiag) {}
310 : packing(pk), placement(pl), order(o), diagonal(d) {}
315 : packing(pk), placement(NoPlacement), order(o), diagonal(StoredDiag) {}
320 if (packing==NoPacking)
322 if (placement==NoPlacement)
326 if (diagonal==NoDiag)
327 diagonal = StoredDiag;
333 { packing=NoPacking; placement=NoPlacement;
334 order=NoOrder; diagonal=NoDiag;
return *
this; }
348 Placement placement:16;
350 Diagonal diagonal:16;
395 Mask() : outline(UncommittedOutline) {}
405 std::string
name()
const {
return std::string(
name(getOutline()));}
457 UnknownCondition = 0x0000,
459 PositiveDefinite = 0x0002,
460 WellConditioned = 0x0004,
471 UnknownDiagonal = 0x0000,
472 ZeroDiagonal = 0x0001,
473 OneDiagonal = 0x0002,
474 RealDiagonal = 0x0004,
475 ImaginaryDiagonal = 0x0008
485 Mask() : condition(UncommittedCondition), diagonal(UncommittedDiagonal) {}
488 { condition=UncommittedCondition; diagonal=UncommittedDiagonal;
return *
this;}
490 {
return condition==UncommittedCondition && diagonal==UncommittedDiagonal;}
500 {
return std::string(name(getCondition())) +
"|" + std::string(name(getDiagonal()));}
509 : condition(cond), diagonal(diag) {}
531 {
return Mask(calcMask(getCondition()), calcMask(getDiagonal())); }
540 Condition condition:16;
541 Diagonal diagonal:16;
620 std::pair<int,int>
getSize()
const {
return std::pair<int,int>(nrow(),ncol());}
621 ptrdiff_t
nelt()
const {
return (ptrdiff_t)nrow() * (ptrdiff_t)ncol();}
626 {
return std::pair<int,int>(getLowerBandwidth(), getUpperBandwidth()); }
646 { setSize(m,n); outline = MatrixOutline::calcFromSize(m,n);
return *
this; }
648 { setNumRows(m); outline = MatrixOutline::calcFromSize(m,ncol());
return *
this; }
650 { setNumCols(n); outline = MatrixOutline::calcFromSize(nrow(),n);
return *
this; }
653 assert(lb>=0 && lb>=0);
654 lband = lb; uband = ub;
676 : nr(m), nc(n), lband(lb), uband(ub),
677 structure(structure), storage(storage),
679 condition(condition) {}
694 { assert(m>=0 && n>=0); nr = m; nc = n;
return *
this; }
696 { assert(m>=0); nr = m;
return *
this; }
697 MatrixCharacter& setNumCols(
int n)
698 { assert(n>=0); nc = n;
return *
this; }
850 { commitNumRows(m); commitNumCols(n);
return *
this; }
853 masks.nr = m;
return *
this; }
856 masks.nc = n;
return *
this; }
859 { commitLowerBandwidth(lb); commitUpperBandwidth(ub);
return *
this;}
862 masks.lband = lb;
return *
this; }
865 masks.uband = ub;
return *
this; }
868 { structure=s; masks.structure=s.
mask();
return *
this; }
870 { storage=s; masks.storage =s.
mask();
return *
this; }
872 { outline=o; masks.outline =o.
mask();
return *
this; }
874 { condition=c; masks.condition=c.
mask();
return *
this; }
908 bool isSizeOK(
int m,
int n)
const {
return masks.isSizeOK(m,n);}
910 {
return isSizeOK(mn.first, mn.second); }
912 bool isBandwidthOK(
int lower,
int upper)
const {
return masks.isBandwidthOK(lower,upper);}
915 {
return masks.isSatisfiedBy(actual); }
917 {
return getStructureMask().isSatisfiedBy(s); }
919 {
return getStorageMask().isSatisfiedBy(s); }
921 {
return getOutlineMask().isSatisfiedBy(o); }
923 {
return getConditionMask().isSatisfiedBy(c); }
931 {
return !getStructureMask().isUncommitted(); }
933 {
return !getStorageMask().isUncommitted();}
935 {
return !getOutlineMask().isUncommitted(); }
937 {
return !getConditionMask().isUncommitted();}
941 structure.setToNone();
944 condition.setToNone();
945 masks.setToUncommitted();
953 : structure(structure), storage(storage),
954 outline(outline), condition(condition),
957 if (outline.
getOutline()==MatrixOutline::Scalar) commitSize(1,1);
958 else if (outline.
getOutline()==MatrixOutline::Column) commitNumCols(1);
959 else if (outline.
getOutline()==MatrixOutline::Row) commitNumRows(1);
961 masks.structure = structure.
mask();
962 masks.storage = storage.
mask();
963 masks.outline = outline.
mask();
964 masks.condition = condition.
mask();
#define SimTK_SIZECHECK_NONNEG(sz, where)
Definition ExceptionMacros.h:147
This is a user-includable header which includes everything needed to make use of SimMatrix Scalar cod...
#define SimTK_SimTKCOMMON_EXPORT
Definition SimTKcommon/include/SimTKcommon/internal/common.h:224
Predefined MatrixCharacter for an ordinary Lapack-style full matrix of a particular dimension m x n (...
Definition MatrixCharacteristics.h:711
LapackFull(int m, int n)
Definition MatrixCharacteristics.h:713
This class collects masks of each characteristic type for representing sets of accceptable characteri...
Definition MatrixCharacteristics.h:750
Mask & setToUncommitted()
Set all bits to one ("Uncommitted").
Definition MatrixCharacteristics.h:776
int getDefaultNumRows() const
Definition MatrixCharacteristics.h:767
SizeMask nr
number of rows
Definition MatrixCharacteristics.h:812
SizeMask lband
lower bandwidth, if banded
Definition MatrixCharacteristics.h:814
int getDefaultUpperBandwidth() const
Definition MatrixCharacteristics.h:773
bool isBandwidthOK(int lower, int upper) const
Check whether an actual bandwidth satisfies the bandwidth commitment.
Definition MatrixCharacteristics.h:808
MatrixCondition::Mask condition
Definition MatrixCharacteristics.h:819
SizeMask nc
number of columns
Definition MatrixCharacteristics.h:813
int getDefaultLowerBandwidth() const
Definition MatrixCharacteristics.h:772
bool isResizeable() const
Definition MatrixCharacteristics.h:757
Mask()
Definition MatrixCharacteristics.h:752
unsigned int getLowerBandwidthMask() const
Definition MatrixCharacteristics.h:764
MatrixStructure::Mask structure
Definition MatrixCharacteristics.h:816
SizeMask uband
upper bandwidth, if banded
Definition MatrixCharacteristics.h:815
unsigned int getNumRowsMask() const
Definition MatrixCharacteristics.h:762
MatrixStorage::Mask storage
Definition MatrixCharacteristics.h:817
bool isNumColsLocked() const
Definition MatrixCharacteristics.h:760
bool isSatisfiedBy(const MatrixCharacter &actual) const
Check whether an actual matrix character satisfies this matrix commitment.
Definition MatrixCharacteristics.h:792
static const SizeMask SizeUncommitted
Definition MatrixCharacteristics.h:755
MatrixOutline::Mask outline
Definition MatrixCharacteristics.h:818
bool isNumRowsLocked() const
Definition MatrixCharacteristics.h:759
unsigned int SizeMask
Definition MatrixCharacteristics.h:754
unsigned int getUpperBandwidthMask() const
Definition MatrixCharacteristics.h:765
bool isUpperBandwidthLocked() const
Definition MatrixCharacteristics.h:771
bool isUncommitted() const
Return if all fields are set to "Uncommitted" (all bits are one).
Definition MatrixCharacteristics.h:784
bool isLowerBandwidthLocked() const
Definition MatrixCharacteristics.h:770
int getDefaultNumCols() const
Definition MatrixCharacteristics.h:768
bool isSizeOK(int m, int n) const
Check whether an actual size satisfies the size commitment.
Definition MatrixCharacteristics.h:802
unsigned int getNumColsMask() const
Definition MatrixCharacteristics.h:763
bool isFullyResizeable() const
Definition MatrixCharacteristics.h:758
Predefined MatrixCharacter for an ordinary row vector of a particular size.
Definition MatrixCharacteristics.h:737
RowVector(int n)
Definition MatrixCharacteristics.h:739
Predefined MatrixCharacter for an ordinary column vector of a particular size.
Definition MatrixCharacteristics.h:724
Vector(int m)
Definition MatrixCharacteristics.h:726
A MatrixCharacter is a set containing a value for each of the matrix characteristics except element t...
Definition MatrixCharacteristics.h:597
int nrow() const
These are dimensions of the logical matrix and have nothing to do with how much storage may be used t...
Definition MatrixCharacteristics.h:618
int ncol() const
Definition MatrixCharacteristics.h:619
MatrixStorage storage
Definition MatrixCharacteristics.h:687
ptrdiff_t nelt() const
Definition MatrixCharacteristics.h:621
MatrixCharacter & setActualSize(int m, int n)
Set the actual size and update the outline to match.
Definition MatrixCharacteristics.h:645
int nc
actual number of columns
Definition MatrixCharacteristics.h:683
MatrixCharacter & setActualNumRows(int m)
Definition MatrixCharacteristics.h:647
const MatrixStructure & getStructure() const
Definition MatrixCharacteristics.h:628
MatrixCharacter(int m, int n, int lb, int ub, MatrixStructure structure, MatrixStorage storage, MatrixCondition condition)
Definition MatrixCharacteristics.h:671
int lband
actual lower bandwidth, if banded
Definition MatrixCharacteristics.h:684
std::pair< int, int > getSize() const
Definition MatrixCharacteristics.h:620
int uband
actual upper bandwidth, if banded
Definition MatrixCharacteristics.h:685
MatrixCondition & updCondition()
Definition MatrixCharacteristics.h:636
int getLowerBandwidth() const
Definition MatrixCharacteristics.h:623
MatrixOutline & updOutline()
Definition MatrixCharacteristics.h:635
MatrixCharacter & setStructure(const MatrixStructure &sa)
Definition MatrixCharacteristics.h:638
MatrixCharacter & setStorage(const MatrixStorage &sa)
Definition MatrixCharacteristics.h:639
const MatrixCondition & getCondition() const
Definition MatrixCharacteristics.h:631
MatrixCharacter & setLowerBandwidth(int lb)
Definition MatrixCharacteristics.h:657
MatrixCharacter & setBandwidth(int lb, int ub)
Definition MatrixCharacteristics.h:652
MatrixCharacter & setOutline(const MatrixOutline &oa)
Definition MatrixCharacteristics.h:640
MatrixCondition condition
Definition MatrixCharacteristics.h:689
MatrixCharacter()
Default constructor sets lengths to zero and the other characteristics to "none specified".
Definition MatrixCharacteristics.h:601
MatrixStructure structure
Definition MatrixCharacteristics.h:686
MatrixCharacter & setToNone()
Restore this MatrixCharacter to its default-constructed state of "none".
Definition MatrixCharacteristics.h:609
MatrixCharacter & setCondition(const MatrixCondition &ca)
Definition MatrixCharacteristics.h:641
MatrixOutline outline
Definition MatrixCharacteristics.h:688
const MatrixOutline & getOutline() const
Definition MatrixCharacteristics.h:630
MatrixCharacter & setActualNumCols(int n)
Definition MatrixCharacteristics.h:649
int nr
actual number of rows
Definition MatrixCharacteristics.h:682
MatrixStorage & updStorage()
Definition MatrixCharacteristics.h:634
MatrixCharacter & setUpperBandwidth(int ub)
Definition MatrixCharacteristics.h:662
int getUpperBandwidth() const
Definition MatrixCharacteristics.h:624
std::pair< int, int > getBandwidth() const
Definition MatrixCharacteristics.h:625
const MatrixStorage & getStorage() const
Definition MatrixCharacteristics.h:629
MatrixStructure & updStructure()
Definition MatrixCharacteristics.h:633
This is the default commitment for a Hermitian (not symmetric) matrix.
Definition MatrixCharacteristics.h:1052
Hermitian()
Definition MatrixCharacteristics.h:1054
This is the default commitment for a row vector.
Definition MatrixCharacteristics.h:1005
RowVector(int n)
Commit to a row vector of a particular length.
Definition MatrixCharacteristics.h:1017
RowVector()
Commit to a resizeable row vector.
Definition MatrixCharacteristics.h:1008
This is the default commitment for a skew Hermitian (not skew symmetric) matrix.
Definition MatrixCharacteristics.h:1082
SkewHermitian()
Definition MatrixCharacteristics.h:1084
This is the default commitment for skew symmetric (not skew Hermitian) matrix.
Definition MatrixCharacteristics.h:1067
SkewSymmetric()
Definition MatrixCharacteristics.h:1069
This is the default commitment for a symmetric (not Hermitian) matrix.
Definition MatrixCharacteristics.h:1040
Symmetric()
Definition MatrixCharacteristics.h:1042
This is the default commitment for a triangular matrix.
Definition MatrixCharacteristics.h:1029
Triangular()
Definition MatrixCharacteristics.h:1031
This is the default commitment for a column vector.
Definition MatrixCharacteristics.h:981
Vector(int m)
Commit to a column vector of a particular length.
Definition MatrixCharacteristics.h:993
Vector()
Commit to a resizeable column vector.
Definition MatrixCharacteristics.h:984
A MatrixCommitment provides a set of acceptable matrix characteristics.
Definition MatrixCharacteristics.h:832
const MatrixStorage::Mask & getStorageMask() const
Definition MatrixCharacteristics.h:896
MatrixCharacter::Mask::SizeMask getNumColsMask() const
Definition MatrixCharacteristics.h:901
bool isOutlineOK(const MatrixOutline &o) const
Definition MatrixCharacteristics.h:920
const MatrixStructure::Mask & getStructureMask() const
These report the masks of acceptable values generated from the commitment.
Definition MatrixCharacteristics.h:895
MatrixCondition condition
Definition MatrixCharacteristics.h:972
MatrixCommitment & commitOutline(const MatrixOutline &o)
Definition MatrixCharacteristics.h:871
MatrixCommitment()
Definition MatrixCharacteristics.h:834
MatrixCharacter::Mask::SizeMask getNumRowsMask() const
Definition MatrixCharacteristics.h:900
MatrixCommitment & commitUpperBandwidth(int ub)
Definition MatrixCharacteristics.h:863
bool isNumColsLocked() const
Definition MatrixCharacteristics.h:928
MatrixCommitment & commitStorage(const MatrixStorage &s)
Definition MatrixCharacteristics.h:869
const MatrixOutline & getOutlineCommitment() const
Definition MatrixCharacteristics.h:891
MatrixStorage storage
Definition MatrixCharacteristics.h:970
const MatrixCondition::Mask & getConditionMask() const
Definition MatrixCharacteristics.h:898
bool isStructureCommitted() const
Definition MatrixCharacteristics.h:930
MatrixCharacter::Mask masks
These are the bitmasks of acceptable characteristics which would satisfy the above-specified commitme...
Definition MatrixCharacteristics.h:976
bool isSizeOK(int m, int n) const
Definition MatrixCharacteristics.h:908
MatrixCommitment & commitCondition(const MatrixCondition &c)
Definition MatrixCharacteristics.h:873
MatrixCommitment & commitNumCols(int n)
Definition MatrixCharacteristics.h:854
bool isConditionCommitted() const
Definition MatrixCharacteristics.h:936
bool isOutlineCommitted() const
Definition MatrixCharacteristics.h:934
MatrixCommitment & commitSize(int m, int n)
Definition MatrixCharacteristics.h:849
bool isBandwidthOK(int lower, int upper) const
Definition MatrixCharacteristics.h:912
bool isStructureOK(const MatrixStructure &s) const
Definition MatrixCharacteristics.h:916
MatrixCommitment(const MatrixStructure &str)
This is an implicit conversion from a MatrixStructure specification to a MatrixCommitment with storag...
Definition MatrixCharacteristics.h:838
bool isResizeable() const
Definition MatrixCharacteristics.h:925
bool isSizeOK(const std::pair< int, int > &mn) const
Definition MatrixCharacteristics.h:909
MatrixCommitment & commitStructure(const MatrixStructure &s)
Definition MatrixCharacteristics.h:867
MatrixOutline outline
Definition MatrixCharacteristics.h:971
const MatrixCondition & getConditionCommitment() const
Definition MatrixCharacteristics.h:892
int getDefaultNumRows() const
Definition MatrixCharacteristics.h:905
const MatrixStructure & getStructureCommitment() const
These report the commitment as it was specified.
Definition MatrixCharacteristics.h:889
MatrixCommitment & commitLowerBandwidth(int lb)
Definition MatrixCharacteristics.h:860
bool isStorageCommitted() const
Definition MatrixCharacteristics.h:932
MatrixCharacter calcDefaultCharacter(int minNumRows, int minNumCols) const
For any handle commitment, we can calculate a "best character" for an allocation that satisfies the c...
int getDefaultNumCols() const
Definition MatrixCharacteristics.h:906
bool isStorageOK(const MatrixStorage &s) const
Definition MatrixCharacteristics.h:918
const MatrixOutline::Mask & getOutlineMask() const
Definition MatrixCharacteristics.h:897
MatrixCharacter::Mask::SizeMask getLowerBandwidthMask() const
Definition MatrixCharacteristics.h:902
bool isConditionOK(const MatrixCondition &c) const
Definition MatrixCharacteristics.h:922
void clear()
Set commitment s to "none" and masks to "uncommitted" for all characteristics.
Definition MatrixCharacteristics.h:940
MatrixCommitment & commitBandwidth(int lb, int ub)
Definition MatrixCharacteristics.h:858
MatrixCommitment & commitNumRows(int m)
Definition MatrixCharacteristics.h:851
MatrixStructure structure
These are the commitments as specified.
Definition MatrixCharacteristics.h:969
const MatrixStorage & getStorageCommitment() const
Definition MatrixCharacteristics.h:890
bool isFullyResizeable() const
Definition MatrixCharacteristics.h:926
bool isSatisfiedBy(const MatrixCharacter &actual) const
Definition MatrixCharacteristics.h:914
bool isNumRowsLocked() const
Definition MatrixCharacteristics.h:927
MatrixCommitment(const MatrixStructure &structure, const MatrixStorage &storage, const MatrixOutline &outline, const MatrixCondition &condition)
Definition MatrixCharacteristics.h:949
MatrixCharacter::Mask::SizeMask getUpperBandwidthMask() const
Definition MatrixCharacteristics.h:903
Matrix "condition" is a statement about the numerical characteristics of a Matrix.
Definition MatrixCharacteristics.h:454
unsigned short DiagonalMask
Definition MatrixCharacteristics.h:479
Condition
Definition MatrixCharacteristics.h:456
Condition getCondition() const
Definition MatrixCharacteristics.h:533
MatrixCondition(Condition cond, Diagonal diag=UnknownDiagonal)
This is an implicit conversion from the Condition enum to a MatrixCondition object.
Definition MatrixCharacteristics.h:508
static const char * name(Condition)
Diagonal
Definition MatrixCharacteristics.h:470
static ConditionMask calcMask(Condition)
Given a particular Condition provided as a commitment, calculate the mask of all Condition values tha...
MatrixCondition & setDiagonal(Diagonal d)
Definition MatrixCharacteristics.h:537
MatrixCondition()
The default constructor sets the condition to Unknown, which is typically where it remains.
Definition MatrixCharacteristics.h:504
MatrixCondition & setToNone()
Restore to default-constructed state of "none".
Definition MatrixCharacteristics.h:512
MatrixCondition & setCondition(Condition c)
Definition MatrixCharacteristics.h:536
static const char * name(Diagonal)
std::string name() const
Definition MatrixCharacteristics.h:499
unsigned short ConditionMask
Definition MatrixCharacteristics.h:466
Diagonal getDiagonal() const
Definition MatrixCharacteristics.h:534
Mask mask() const
Return the commitment mask corresponding to use of "this" condition as a commitment.
Definition MatrixCharacteristics.h:530
static DiagonalMask calcMask(Diagonal)
Given a particular Diagonal condition provided as a commitment, calculate the mask of all Diagonal co...
Matrix "outline" refers to the characteristic relationship between the number of rows and columns of ...
Definition MatrixCharacteristics.h:376
static OutlineMask calcMask(Outline)
Compute a mask of acceptable Outline values given a particular value specified as a commitment.
static const char * name(Outline)
Outline getOutline() const
Return the outline value stored in this MatrixOutline object.
Definition MatrixCharacteristics.h:436
MatrixOutline(Outline outline)
This is an implicit conversion from the Outline enum to a MatrixOutline object.
Definition MatrixCharacteristics.h:412
Mask mask() const
When "this" outline is used as a commitment, it represents a mask of acceptable outlines.
Definition MatrixCharacteristics.h:424
MatrixOutline()
Default constructor produces an object containing no outline specification.
Definition MatrixCharacteristics.h:409
Outline
Definition MatrixCharacteristics.h:378
std::string name() const
Definition MatrixCharacteristics.h:405
unsigned short OutlineMask
Definition MatrixCharacteristics.h:390
static MatrixOutline calcFromSize(int m, int n)
Determine the outline from given actual dimensions.
MatrixOutline & setToNone()
Set the outline back to its default-constructed value of "none".
Definition MatrixCharacteristics.h:415
void getMinimumSize(int &m, int &n) const
Return the minimum shape that will satisfy this outline.
bool isSizeOK(int m, int n) const
Determine if the proposed shape satisfies this outline.
Matrix "storage" refers to the physical layout of data in the computer's memory.
Definition MatrixCharacteristics.h:203
static const char * name(Packing)
MatrixStorage & setPacking(Packing p)
Definition MatrixCharacteristics.h:336
MatrixStorage(Packing pk, Order o)
This constructor is for the common case of just packing and order, with no particular placement and a...
Definition MatrixCharacteristics.h:314
unsigned short OrderMask
Definition MatrixCharacteristics.h:236
static const char * name(Order)
static const char * name(Placement)
unsigned short PlacementMask
Definition MatrixCharacteristics.h:226
Diagonal getDiagonal() const
Definition MatrixCharacteristics.h:344
MatrixStorage & setPlacement(Placement p)
Definition MatrixCharacteristics.h:337
MatrixStorage & setOrder(Order o)
Definition MatrixCharacteristics.h:338
static MatrixStorage calcDefaultStorage(const MatrixStructure &, const MatrixOutline &)
std::string name() const
Definition MatrixCharacteristics.h:282
Diagonal
Definition MatrixCharacteristics.h:240
Placement getPlacement() const
Definition MatrixCharacteristics.h:342
Packing
Definition MatrixCharacteristics.h:205
MatrixStorage & setMissingAttributes()
Assuming this is an actual matrix description, set any unspecified attributes to appropriate defaults...
Definition MatrixCharacteristics.h:319
MatrixStorage(Packing pk, Placement pl=NoPlacement, Order o=NoOrder, Diagonal d=NoDiag)
This constructor is also an implicit conversion from the Packing enum to a MatrixStorage object which...
Definition MatrixCharacteristics.h:309
Order getOrder() const
Definition MatrixCharacteristics.h:343
Placement
Definition MatrixCharacteristics.h:220
Mask mask() const
Calculate the commitment mask associated with specifying "this" set of storage attributes as a commit...
Definition MatrixCharacteristics.h:293
static const char * name(Diagonal)
MatrixStorage & setDiagonal(Diagonal d)
Definition MatrixCharacteristics.h:339
unsigned short DiagonalMask
Definition MatrixCharacteristics.h:246
Packing getPacking() const
Definition MatrixCharacteristics.h:341
Order
Definition MatrixCharacteristics.h:230
MatrixStorage()
Default constructor leaves all fields unspecified.
Definition MatrixCharacteristics.h:303
MatrixStorage & setToNone()
Restore this object to its default-constructed state of "none".
Definition MatrixCharacteristics.h:332
unsigned short PackingMask
Definition MatrixCharacteristics.h:216
Matrix "structure" refers to an inherent mathematical (or at least algorithmic) characteristic of the...
Definition MatrixCharacteristics.h:58
Structure getStructure() const
Definition MatrixCharacteristics.h:175
unsigned int StructureMask
Definition MatrixCharacteristics.h:84
static StructureMask calcStructureMask(Structure)
Structure
Definition MatrixCharacteristics.h:60
Position
For triangular matrices, we have to know which triangle we're talking about.
Definition MatrixCharacteristics.h:93
DiagValue getDiagValue() const
Definition MatrixCharacteristics.h:177
static const char * name(DiagValue)
Position getPosition() const
Definition MatrixCharacteristics.h:176
static const char * name(Position)
MatrixStructure()
Definition MatrixCharacteristics.h:162
MatrixStructure & setMissingAttributes()
Definition MatrixCharacteristics.h:123
MatrixStructure & setToNone()
Definition MatrixCharacteristics.h:186
MatrixStructure & setPosition(Position p)
Definition MatrixCharacteristics.h:180
static DiagValueMask calcDiagValueMask(Structure)
std::string name() const
Definition MatrixCharacteristics.h:133
static const char * name(Structure)
MatrixStructure & set(Structure s, Position p, DiagValue d)
Definition MatrixCharacteristics.h:183
static PositionMask calcPositionMask(Structure)
unsigned short DiagValueMask
Definition MatrixCharacteristics.h:118
unsigned short PositionMask
Definition MatrixCharacteristics.h:100
DiagValue
For triangular, symmetric, and hermitian matrices the diagonal elements may have a single,...
Definition MatrixCharacteristics.h:110
MatrixStructure & setStructure(Structure s)
Definition MatrixCharacteristics.h:179
MatrixStructure & setDiagValue(DiagValue d)
Definition MatrixCharacteristics.h:181
MatrixStructure(Structure s, Position p=NoPosition, DiagValue d=NoDiagValue)
This constructor is also an implicit conversion from the Structure enum to a MatrixStructure object w...
Definition MatrixCharacteristics.h:166
Mask mask() const
Given a Structure commitment, which more-restrictive Structures will still satisfy this commitment?...
Represents a variable size row vector; much less common than the column vector type Vector_.
Definition RowVector_.h:52
This is a fixed-length row vector designed for no-overhead inline computation.
Definition Row.h:132
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition Assembler.h:37
std::ostream & operator<<(std::ostream &o, const ContactForce &f)
Definition CompliantContactSubsystem.h:387
Use this class to represent a set of acceptable Condition values.
Definition MatrixCharacteristics.h:484
Mask()
Definition MatrixCharacteristics.h:485
ConditionMask condition
Definition MatrixCharacteristics.h:495
Mask & setToUncommitted()
Definition MatrixCharacteristics.h:487
bool isUncommitted() const
Definition MatrixCharacteristics.h:489
bool isSatisfiedBy(const MatrixCondition &actual) const
Definition MatrixCharacteristics.h:491
Mask(ConditionMask cmask, DiagonalMask dmask)
Definition MatrixCharacteristics.h:486
DiagonalMask diagonal
Definition MatrixCharacteristics.h:496
Definition MatrixCharacteristics.h:394
bool isUncommitted() const
Definition MatrixCharacteristics.h:398
Mask & setToUncommitted()
Definition MatrixCharacteristics.h:397
Mask(OutlineMask mask)
Definition MatrixCharacteristics.h:396
bool isSatisfiedBy(const MatrixOutline &actual) const
Definition MatrixCharacteristics.h:399
OutlineMask outline
Definition MatrixCharacteristics.h:402
Mask()
Definition MatrixCharacteristics.h:395
Use this class to represent sets of acceptable values for each of the storage attributes (packing,...
Definition MatrixCharacteristics.h:252
PackingMask packing
Definition MatrixCharacteristics.h:273
PlacementMask placement
Definition MatrixCharacteristics.h:274
DiagonalMask diagonal
Definition MatrixCharacteristics.h:276
bool isSatisfiedBy(Packing pack, Placement place, Order ord, Diagonal diag) const
Definition MatrixCharacteristics.h:264
bool isUncommitted() const
Definition MatrixCharacteristics.h:261
Mask & setToUncommitted()
Definition MatrixCharacteristics.h:258
OrderMask order
Definition MatrixCharacteristics.h:275
Mask()
Definition MatrixCharacteristics.h:253
bool isSatisfiedBy(const MatrixStorage &actual) const
Definition MatrixCharacteristics.h:269
Mask(PackingMask pkm, PlacementMask plm, OrderMask om, DiagonalMask dm)
Definition MatrixCharacteristics.h:256
Definition MatrixCharacteristics.h:139
Mask(StructureMask sm, PositionMask pm, DiagValueMask dm)
Definition MatrixCharacteristics.h:141
bool isSatisfiedBy(const MatrixStructure &actual) const
Definition MatrixCharacteristics.h:153
StructureMask structure
Definition MatrixCharacteristics.h:157
bool isSatisfiedBy(Structure str, Position pos, DiagValue diag) const
Definition MatrixCharacteristics.h:149
PositionMask position
Definition MatrixCharacteristics.h:158
Mask()
Definition MatrixCharacteristics.h:140
bool isUncommitted() const
Definition MatrixCharacteristics.h:146
Mask & setToUncommitted()
Definition MatrixCharacteristics.h:143
DiagValueMask diagValue
Definition MatrixCharacteristics.h:159