1 #ifndef SimTK_SIMMATRIX_MATRIX_CHARACTERISTICS_H_ 
    2 #define SimTK_SIMMATRIX_MATRIX_CHARACTERISTICS_H_ 
   44 class MatrixStructure;
 
   47 class MatrixCondition;
 
   48 class MatrixCharacter;
 
   49 class 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()); }
 
  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),
 
  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
 
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
 
unsigned int SizeMask
Definition: MatrixCharacteristics.h:754
 
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 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
 
Mask & setToUncommitted()
Set all bits to one ("Uncommitted").
Definition: MatrixCharacteristics.h:776
 
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
 
MatrixStructure & updStructure()
Definition: MatrixCharacteristics.h:633
 
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
 
MatrixCharacter & setOutline(const MatrixOutline &oa)
Definition: MatrixCharacteristics.h:640
 
MatrixStorage storage
Definition: MatrixCharacteristics.h:687
 
MatrixCharacter & setCondition(const MatrixCondition &ca)
Definition: MatrixCharacteristics.h:641
 
ptrdiff_t nelt() const
Definition: MatrixCharacteristics.h:621
 
const MatrixCondition & getCondition() const
Definition: MatrixCharacteristics.h:631
 
MatrixCharacter & setLowerBandwidth(int lb)
Definition: MatrixCharacteristics.h:657
 
int nc
actual number of columns
Definition: MatrixCharacteristics.h:683
 
MatrixCharacter & setUpperBandwidth(int ub)
Definition: MatrixCharacteristics.h:662
 
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
 
MatrixCondition & updCondition()
Definition: MatrixCharacteristics.h:636
 
int uband
actual upper bandwidth, if banded
Definition: MatrixCharacteristics.h:685
 
MatrixCharacter & setStorage(const MatrixStorage &sa)
Definition: MatrixCharacteristics.h:639
 
int getLowerBandwidth() const
Definition: MatrixCharacteristics.h:623
 
const MatrixOutline & getOutline() const
Definition: MatrixCharacteristics.h:630
 
MatrixCharacter & setActualNumCols(int n)
Definition: MatrixCharacteristics.h:649
 
MatrixCharacter & setBandwidth(int lb, int ub)
Definition: MatrixCharacteristics.h:652
 
MatrixCondition condition
Definition: MatrixCharacteristics.h:689
 
MatrixCharacter & setActualSize(int m, int n)
Set the actual size and update the outline to match.
Definition: MatrixCharacteristics.h:645
 
MatrixCharacter()
Default constructor sets lengths to zero and the other characteristics to "none specified".
Definition: MatrixCharacteristics.h:601
 
MatrixCharacter & setToNone()
Restore this MatrixCharacter to its default-constructed state of "none".
Definition: MatrixCharacteristics.h:609
 
MatrixStructure structure
Definition: MatrixCharacteristics.h:686
 
MatrixCharacter & setActualNumRows(int m)
Definition: MatrixCharacteristics.h:647
 
MatrixOutline outline
Definition: MatrixCharacteristics.h:688
 
const MatrixStructure & getStructure() const
Definition: MatrixCharacteristics.h:628
 
MatrixOutline & updOutline()
Definition: MatrixCharacteristics.h:635
 
int nr
actual number of rows
Definition: MatrixCharacteristics.h:682
 
std::pair< int, int > getSize() const
Definition: MatrixCharacteristics.h:620
 
MatrixStorage & updStorage()
Definition: MatrixCharacteristics.h:634
 
int getUpperBandwidth() const
Definition: MatrixCharacteristics.h:624
 
MatrixCharacter & setStructure(const MatrixStructure &sa)
Definition: MatrixCharacteristics.h:638
 
std::pair< int, int > getBandwidth() const
Definition: MatrixCharacteristics.h:625
 
const MatrixStorage & getStorage() const
Definition: MatrixCharacteristics.h:629
 
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
 
MatrixCharacter::Mask::SizeMask getNumColsMask() const
Definition: MatrixCharacteristics.h:901
 
bool isOutlineOK(const MatrixOutline &o) const
Definition: MatrixCharacteristics.h:920
 
MatrixCondition condition
Definition: MatrixCharacteristics.h:972
 
MatrixCommitment()
Definition: MatrixCharacteristics.h:834
 
MatrixCommitment & commitStructure(const MatrixStructure &s)
Definition: MatrixCharacteristics.h:867
 
MatrixCommitment & commitNumCols(int n)
Definition: MatrixCharacteristics.h:854
 
const MatrixStorage::Mask & getStorageMask() const
Definition: MatrixCharacteristics.h:896
 
MatrixCharacter::Mask::SizeMask getNumRowsMask() const
Definition: MatrixCharacteristics.h:900
 
bool isNumColsLocked() const
Definition: MatrixCharacteristics.h:928
 
MatrixStorage storage
Definition: MatrixCharacteristics.h:970
 
bool isStructureCommitted() const
Definition: MatrixCharacteristics.h:930
 
const MatrixCondition::Mask & getConditionMask() const
Definition: MatrixCharacteristics.h:898
 
const MatrixStructure & getStructureCommitment() const
These report the commitment as it was specified.
Definition: MatrixCharacteristics.h:889
 
MatrixCommitment & commitBandwidth(int lb, int ub)
Definition: MatrixCharacteristics.h:858
 
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
 
bool isConditionCommitted() const
Definition: MatrixCharacteristics.h:936
 
bool isOutlineCommitted() const
Definition: MatrixCharacteristics.h:934
 
MatrixCommitment & commitCondition(const MatrixCondition &c)
Definition: MatrixCharacteristics.h:873
 
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
 
MatrixCommitment & commitUpperBandwidth(int ub)
Definition: MatrixCharacteristics.h:863
 
bool isResizeable() const
Definition: MatrixCharacteristics.h:925
 
bool isSizeOK(const std::pair< int, int > &mn) const
Definition: MatrixCharacteristics.h:909
 
MatrixOutline outline
Definition: MatrixCharacteristics.h:971
 
int getDefaultNumRows() const
Definition: MatrixCharacteristics.h:905
 
const MatrixOutline & getOutlineCommitment() const
Definition: MatrixCharacteristics.h:891
 
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
 
const MatrixStructure::Mask & getStructureMask() const
These report the masks of acceptable values generated from the commitment.
Definition: MatrixCharacteristics.h:895
 
MatrixCommitment & commitStorage(const MatrixStorage &s)
Definition: MatrixCharacteristics.h:869
 
bool isStorageOK(const MatrixStorage &s) const
Definition: MatrixCharacteristics.h:918
 
MatrixCharacter::Mask::SizeMask getLowerBandwidthMask() const
Definition: MatrixCharacteristics.h:902
 
bool isConditionOK(const MatrixCondition &c) const
Definition: MatrixCharacteristics.h:922
 
MatrixCommitment & commitSize(int m, int n)
Definition: MatrixCharacteristics.h:849
 
void clear()
Set commitment s to "none" and masks to "uncommitted" for all characteristics.
Definition: MatrixCharacteristics.h:940
 
MatrixStructure structure
These are the commitments as specified.
Definition: MatrixCharacteristics.h:969
 
MatrixCommitment & commitOutline(const MatrixOutline &o)
Definition: MatrixCharacteristics.h:871
 
bool isFullyResizeable() const
Definition: MatrixCharacteristics.h:926
 
bool isSatisfiedBy(const MatrixCharacter &actual) const
Definition: MatrixCharacteristics.h:914
 
bool isNumRowsLocked() const
Definition: MatrixCharacteristics.h:927
 
const MatrixStorage & getStorageCommitment() const
Definition: MatrixCharacteristics.h:890
 
MatrixCommitment & commitLowerBandwidth(int lb)
Definition: MatrixCharacteristics.h:860
 
const MatrixOutline::Mask & getOutlineMask() const
Definition: MatrixCharacteristics.h:897
 
MatrixCommitment(const MatrixStructure &structure, const MatrixStorage &storage, const MatrixOutline &outline, const MatrixCondition &condition)
Definition: MatrixCharacteristics.h:949
 
MatrixCommitment & commitNumRows(int m)
Definition: MatrixCharacteristics.h:851
 
const MatrixCondition & getConditionCommitment() const
Definition: MatrixCharacteristics.h:892
 
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
 
MatrixCondition & setDiagonal(Diagonal d)
Definition: MatrixCharacteristics.h:537
 
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
 
MatrixCondition & setToNone()
Restore to default-constructed state of "none".
Definition: MatrixCharacteristics.h:512
 
MatrixCondition & setCondition(Condition c)
Definition: MatrixCharacteristics.h:536
 
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()
The default constructor sets the condition to Unknown, which is typically where it remains.
Definition: MatrixCharacteristics.h:504
 
std::string name() const
Definition: MatrixCharacteristics.h:499
 
static const char * name(Condition)
 
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 const char * name(Diagonal)
 
unsigned short ConditionMask
Definition: MatrixCharacteristics.h:466
 
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.
 
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
 
@ Scalar
Definition: MatrixCharacteristics.h:380
 
@ Column
Definition: MatrixCharacteristics.h:381
 
@ Row
Definition: MatrixCharacteristics.h:382
 
std::string name() const
Definition: MatrixCharacteristics.h:405
 
MatrixOutline & setToNone()
Set the outline back to its default-constructed value of "none".
Definition: MatrixCharacteristics.h:415
 
static MatrixOutline calcFromSize(int m, int n)
Determine the outline from given actual dimensions.
 
static const char * name(Outline)
 
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.
 
unsigned short OutlineMask
Definition: MatrixCharacteristics.h:390
 
Matrix "storage" refers to the physical layout of data in the computer's memory.
Definition: MatrixCharacteristics.h:203
 
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
 
MatrixStorage & setToNone()
Restore this object to its default-constructed state of "none".
Definition: MatrixCharacteristics.h:332
 
static const char * name(Diagonal)
 
unsigned short OrderMask
Definition: MatrixCharacteristics.h:236
 
static const char * name(Placement)
 
Diagonal getDiagonal() const
Definition: MatrixCharacteristics.h:344
 
unsigned short DiagonalMask
Definition: MatrixCharacteristics.h:246
 
static MatrixStorage calcDefaultStorage(const MatrixStructure &, const MatrixOutline &)
 
MatrixStorage & setDiagonal(Diagonal d)
Definition: MatrixCharacteristics.h:339
 
static const char * name(Order)
 
std::string name() const
Definition: MatrixCharacteristics.h:282
 
Diagonal
Definition: MatrixCharacteristics.h:240
 
MatrixStorage & setPlacement(Placement p)
Definition: MatrixCharacteristics.h:337
 
MatrixStorage & setMissingAttributes()
Assuming this is an actual matrix description, set any unspecified attributes to appropriate defaults...
Definition: MatrixCharacteristics.h:319
 
Placement getPlacement() const
Definition: MatrixCharacteristics.h:342
 
Packing
Definition: MatrixCharacteristics.h:205
 
unsigned short PlacementMask
Definition: MatrixCharacteristics.h:226
 
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
 
unsigned short PackingMask
Definition: MatrixCharacteristics.h:216
 
MatrixStorage & setPacking(Packing p)
Definition: MatrixCharacteristics.h:336
 
static const char * name(Packing)
 
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
 
Packing getPacking() const
Definition: MatrixCharacteristics.h:341
 
Order
Definition: MatrixCharacteristics.h:230
 
MatrixStorage()
Default constructor leaves all fields unspecified.
Definition: MatrixCharacteristics.h:303
 
MatrixStorage & setOrder(Order o)
Definition: MatrixCharacteristics.h:338
 
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
 
static StructureMask calcStructureMask(Structure)
 
MatrixStructure & setStructure(Structure s)
Definition: MatrixCharacteristics.h:179
 
Structure
Definition: MatrixCharacteristics.h:60
 
MatrixStructure & setDiagValue(DiagValue d)
Definition: MatrixCharacteristics.h:181
 
Position
For triangular matrices, we have to know which triangle we're talking about.
Definition: MatrixCharacteristics.h:93
 
static const char * name(Position)
 
DiagValue getDiagValue() const
Definition: MatrixCharacteristics.h:177
 
Position getPosition() const
Definition: MatrixCharacteristics.h:176
 
MatrixStructure()
Definition: MatrixCharacteristics.h:162
 
MatrixStructure & setMissingAttributes()
Definition: MatrixCharacteristics.h:123
 
static DiagValueMask calcDiagValueMask(Structure)
 
std::string name() const
Definition: MatrixCharacteristics.h:133
 
static PositionMask calcPositionMask(Structure)
 
static const char * name(Structure)
 
DiagValue
For triangular, symmetric, and hermitian matrices the diagonal elements may have a single,...
Definition: MatrixCharacteristics.h:110
 
unsigned short DiagValueMask
Definition: MatrixCharacteristics.h:118
 
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
 
static const char * name(DiagValue)
 
MatrixStructure & setToNone()
Definition: MatrixCharacteristics.h:186
 
MatrixStructure & setPosition(Position p)
Definition: MatrixCharacteristics.h:180
 
unsigned short PositionMask
Definition: MatrixCharacteristics.h:100
 
Mask mask() const
Given a Structure commitment, which more-restrictive Structures will still satisfy this commitment?...
 
unsigned int StructureMask
Definition: MatrixCharacteristics.h:84
 
MatrixStructure & set(Structure s, Position p, DiagValue d)
Definition: MatrixCharacteristics.h:183
 
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
 
bool isUncommitted() const
Definition: MatrixCharacteristics.h:489
 
bool isSatisfiedBy(const MatrixCondition &actual) const
Definition: MatrixCharacteristics.h:491
 
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:487
 
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(OutlineMask mask)
Definition: MatrixCharacteristics.h:396
 
bool isSatisfiedBy(const MatrixOutline &actual) const
Definition: MatrixCharacteristics.h:399
 
OutlineMask outline
Definition: MatrixCharacteristics.h:402
 
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:397
 
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
 
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
 
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:258
 
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
 
Mask & setToUncommitted()
Definition: MatrixCharacteristics.h:143
 
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
 
DiagValueMask diagValue
Definition: MatrixCharacteristics.h:159