1 #ifndef SimTK_SimTKCOMMON_SUBSYSTEM_GUTS_H_ 
    2 #define SimTK_SimTKCOMMON_SUBSYSTEM_GUTS_H_ 
   36 class DecorativeGeometry;
 
   84 {   
return s.
allocateQ(getMySubsystemIndex(), qInit); }
 
   86 {   
return s.
allocateU(getMySubsystemIndex(), uInit); }
 
   88 {   
return s.
allocateZ(getMySubsystemIndex(), zInit); }
 
   96                (getMySubsystemIndex(),invalidates,v,updateDependsOn); }
 
  101                (getMySubsystemIndex(), dependsOn, computedBy, v); }
 
  104 {   
return allocateCacheEntry(state, g, g, v); }
 
  110 {   
return s.
allocateQErr(getMySubsystemIndex(), nqerr); }
 
  112 {   
return s.
allocateUErr(getMySubsystemIndex(), nuerr); }
 
  120 {   
return s.
getQ(getMySubsystemIndex()); }
 
  122 {   
return s.
getU(getMySubsystemIndex()); }
 
  124 {   
return s.
getZ(getMySubsystemIndex()); }
 
  135 {   
return s.
getQDot(getMySubsystemIndex()); }
 
  137 {   
return s.
getUDot(getMySubsystemIndex()); }
 
  139 {   
return s.
getZDot(getMySubsystemIndex()); }
 
  141 {   
return s.
getQDotDot(getMySubsystemIndex()); }
 
  144 {   
return s.
updQDot(getMySubsystemIndex()); }
 
  146 {   
return s.
updUDot(getMySubsystemIndex()); }
 
  148 {   
return s.
updZDot(getMySubsystemIndex()); }
 
  150 {   
return s.
updQDotDot(getMySubsystemIndex()); }
 
  153 {   
return s.
getQErr(getMySubsystemIndex()); }
 
  155 {   
return s.
getUErr(getMySubsystemIndex()); }
 
  162 {   
return s.
getUDotErr(getMySubsystemIndex()); }
 
  169 {   
return s.
updQErr(getMySubsystemIndex()); }
 
  171 {   
return s.
updUErr(getMySubsystemIndex()); }
 
  173 {   
return s.
updUDotErr(getMySubsystemIndex()); }
 
  180 {   
return s.
getQStart(getMySubsystemIndex()); }
 
  182 {   
return s.
getNQ(getMySubsystemIndex()); }
 
  185 {   
return s.
getUStart(getMySubsystemIndex()); }
 
  187 {   
return s.
getNU(getMySubsystemIndex()); }
 
  190 {   
return s.
getZStart(getMySubsystemIndex()); }
 
  192 {   
return s.
getNZ(getMySubsystemIndex()); }
 
  197 {   
return s.
getNQErr(getMySubsystemIndex()); }
 
  202 {   
return s.
getNUErr(getMySubsystemIndex()); }
 
  295                  "Subsystem::Guts::getMeasure()");
 
  314     m_mySubsystemIndex = id;
 
  317     SimTK_ASSERT(isInSystem(), 
"Subsystem::getMySubsystemIndex()");
 
  318     return m_mySubsystemIndex;
 
  326 {   
return m_subsystemTopologyRealized; }
 
  382     bool includeCurrentTime) 
const;
 
  385     bool includeCurrentTime) 
const;
 
  429     bool includeCurrentTime)
 const {}
 
  432     bool includeCurrentTime)
 const {}
 
  445     SimTK_ASSERT(m_myHandle, 
"Subsystem::getOwnerSubsystemHandle()");
 
  451     SimTK_ASSERT(m_myHandle, 
"Subsystem::getOwnerSubsystemHandle()");
 
  474 String          m_subsystemVersion;
 
  486 mutable bool    m_subsystemTopologyRealized;
 
#define SimTK_ASSERT(cond, msg)
Definition: ExceptionMacros.h:373
 
#define SimTK_SimTKCOMMON_EXPORT
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:224
 
This is the header which should be included in user programs that would like to make use of all the S...
 
Declares the user-visible part of a SimTK::State, the implementation is done in a separate internal c...
 
Includes internal headers providing declarations for the basic SimTK Core classes.
 
This is the base class for all Measure handle classes.
Definition: Measure.h:151
 
Abstract base class representing an arbitrary value of unknown type.
Definition: Value.h:49
 
The Array_<T> container class is a plug-compatible replacement for the C++ standard template library ...
Definition: Array.h:1520
 
This unique integer type is for selecting non-shared cache entries.
 
This unique integer type is for selecting discrete variables.
 
This is a class to represent unique IDs for events in a type-safe way.
 
Unique integer type for Subsystem-local, per-stage event indexing.
 
These are all the possible causes for events.
Definition: Event.h:126
 
Options for the handleEvent() method.
Definition: Event.h:269
 
Results returned by the handleEvent() method.
Definition: Event.h:345
 
This is the base handle class for all Measures whose value type is known, including all the Simbody b...
Definition: Measure.h:263
 
Unique integer type for Subsystem-local qErr indexing.
 
Unique integer type for Subsystem-local q indexing.
 
This class is basically a glorified enumerated type, type-safe and range checked but permitting conve...
Definition: Stage.h:66
 
@ Infinity
Higher than any legitimate Stage.
Definition: Stage.h:79
 
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:280
 
SystemEventTriggerIndex getEventTriggerStartByStage(Stage) const
Return the index within the global event trigger array at which the first of the event triggers assoc...
 
int getNQErr() const
Return the total number nqerr=mp+nQuaternions of cache entries for position-level constraint errors.
 
Vector & updUDotErr(SubsystemIndex) const
 
int getNUDotErr() const
Return the total number nudotErr=mp+mv+ma of cache entries for acceleration-level constraint errors (...
 
const Vector & getU(SubsystemIndex) const
 
const Vector & getQDotDot(SubsystemIndex) const
 
SystemYErrIndex getUErrStart() const
Returns the yErr index at which the uErr's begin. Callable at Instance stage.
 
Vector & updZ(SubsystemIndex)
 
AbstractValue & updCacheEntry(SubsystemIndex, CacheEntryIndex) const
Retrieve a writable reference to the value contained in a particular cache entry.
 
Vector & updMultipliers(SubsystemIndex) const
 
void markCacheValueNotRealized(SubsystemIndex, CacheEntryIndex) const
(Advanced) Normally cache entries are invalidated automatically, however this method allows manual in...
 
QIndex allocateQ(SubsystemIndex, const Vector &qInit)
Allocate generalized coordinates q, which are second order continuous state variables.
 
int getNQ() const
Get total number of shared q's (generalized coordinates; second order state variables).
 
Vector & updZDot(SubsystemIndex) const
 
bool isDiscreteVarUpdateValueRealized(SubsystemIndex, DiscreteVariableIndex) const
Check whether the update value for this auto-update discrete variable has already been computed since...
 
QErrIndex allocateQErr(SubsystemIndex, int nqerr) const
Allocate nqerr cache slots to hold the current error for position-level (holonomic) constraint equati...
 
const Vector & getUErr(SubsystemIndex) const
 
const AbstractValue & getDiscreteVarUpdateValue(SubsystemIndex, DiscreteVariableIndex) const
For an auto-updating discrete variable, return the current value of its associated update cache entry...
 
Vector & updU(SubsystemIndex)
 
SystemYIndex getUStart() const
Returns the y index at which the u's begin. Callable at Model stage.
 
SystemYErrIndex getQErrStart() const
Returns the yErr index at which the qErr's begin. Callable at Instance stage.
 
AbstractValue & updDiscreteVarUpdateValue(SubsystemIndex, DiscreteVariableIndex) const
For an auto-updating discrete variable, return a writable reference to the value of its associated up...
 
const Vector & getUErrWeights(SubsystemIndex) const
 
int getNU() const
Get total number of shared u's (generalized speeds; mobilities).
 
SystemYIndex getQStart() const
Returns the y index at which the q's begin. Callable at Model stage.
 
Vector & updUErr(SubsystemIndex) const
 
const Vector & getZWeights(SubsystemIndex) const
 
AbstractValue & updDiscreteVariable(SubsystemIndex, DiscreteVariableIndex)
Get a writable reference to the value stored in the indicated discrete state variable dv,...
 
SystemMultiplierIndex getMultipliersStart(SubsystemIndex) const
 
Real getDiscreteVarLastUpdateTime(SubsystemIndex, DiscreteVariableIndex) const
Return the time of last update for this discrete variable.
 
Vector & updEventTriggersByStage(Stage) const
 
void advanceSubsystemToStage(SubsystemIndex, Stage) const
Advance a particular Subsystem's current stage by one to the indicated stage.
 
const Vector & getZDot(SubsystemIndex) const
 
void markCacheValueRealized(SubsystemIndex, CacheEntryIndex) const
Mark the value of a particular cache entry as up to date after it has been recalculated.
 
const Vector & getUWeights(SubsystemIndex) const
 
UDotErrIndex allocateUDotErr(SubsystemIndex, int nudoterr) const
Allocate nudoterr cache slots to hold the current error for acceleration-level (acceleration-only,...
 
Vector & updQ(SubsystemIndex)
 
Vector & updQDot(SubsystemIndex) const
 
SystemYIndex getZStart() const
Returns the y index at which the z's begin. Callable at Model stage.
 
const AbstractValue & getCacheEntry(SubsystemIndex, CacheEntryIndex) const
Retrieve a const reference to the value contained in a particular cache entry.
 
Vector & updQDotDot(SubsystemIndex) const
 
const Vector & getUDot(SubsystemIndex) const
 
CacheEntryIndex getDiscreteVarUpdateIndex(SubsystemIndex, DiscreteVariableIndex) const
For an auto-updating discrete variable, return the CacheEntryIndex for its associated update cache en...
 
const Vector & getMultipliers(SubsystemIndex) const
 
UErrIndex allocateUErr(SubsystemIndex, int nuerr) const
Allocate nuerr cache slots to hold the current error for velocity-level (nonholonomic and holonomic f...
 
int getNZ() const
Get total number of shared z's (auxiliary state variables).
 
DiscreteVariableIndex allocateAutoUpdateDiscreteVariable(SubsystemIndex, Stage invalidates, AbstractValue *, Stage updateDependsOn)
This method allocates a DiscreteVariable whose value should be updated automatically after each time ...
 
const Vector & getQDot(SubsystemIndex) const
Per-subsystem access to the shared cache entries.
 
int getNUErr() const
Return the total number nuerr=mp+mv of cache entries for velocity-level constraint errors (including ...
 
const Stage & getSubsystemStage(SubsystemIndex) const
 
int getNMultipliers() const
Return the total number of constraint multipliers; necessarily the same as the number of acceleration...
 
const Vector & getQ(SubsystemIndex) const
Per-subsystem access to the global shared variables.
 
const AbstractValue & getDiscreteVariable(SubsystemIndex, DiscreteVariableIndex) const
Get the current value of the indicated discrete variable.
 
const Vector & getUDotErr(SubsystemIndex) const
 
SystemUDotErrIndex getUDotErrStart(SubsystemIndex) const
 
const Vector & getQErr(SubsystemIndex) const
 
CacheEntryIndex allocateCacheEntry(SubsystemIndex, Stage earliest, Stage latest, AbstractValue *value) const
There are two Stages supplied explicitly as arguments to this method: earliest and latest.
 
const Vector & getEventTriggersByStage(Stage) const
 
void markDiscreteVarUpdateValueRealized(SubsystemIndex, DiscreteVariableIndex) const
Mark the update value for this auto-update discrete variable as up-to-date with respect to the state ...
 
UIndex allocateU(SubsystemIndex, const Vector &uInit)
Allocate generalized speeds u, which are first order continuous state variables related to the deriva...
 
int getNEventTriggersByStage(Stage) const
Return the size of the partition of event trigger functions which are evaluated at a given Stage.
 
DiscreteVariableIndex allocateDiscreteVariable(SubsystemIndex, Stage invalidates, AbstractValue *)
The Stage supplied here in the call is the earliest subsystem stage which is invalidated by a change ...
 
EventTriggerByStageIndex allocateEventTrigger(SubsystemIndex, Stage stage, int nevent) const
Allocate room for nevent witness function values that will be available at the indicated stage.
 
ZIndex allocateZ(SubsystemIndex, const Vector &zInit)
Allocate auxiliary first order continuous state variables z.
 
const Vector & getQErrWeights(SubsystemIndex) const
 
Vector & updUDot(SubsystemIndex) const
 
Vector & updQErr(SubsystemIndex) const
 
bool isCacheValueRealized(SubsystemIndex, CacheEntryIndex) const
Check whether the value in a particular cache entry has been recalculated since the last change to th...
 
const Vector & getZ(SubsystemIndex) const
 
SimTK::String is a plug-compatible std::string replacement (plus some additional functionality) inten...
Definition: String.h:65
 
Provide a unique integer type for identifying Subsystems.
 
The abstract parent of all Subsystem implementation classes.
Definition: SubsystemGuts.h:47
 
CacheEntryIndex allocateCacheEntry(const State &s, Stage dependsOn, Stage computedBy, AbstractValue *v) const
Definition: SubsystemGuts.h:99
 
const Vector & getEventTriggersByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:165
 
void advanceToStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:236
 
const Vector & getMultipliers(const State &s) const
Definition: SubsystemGuts.h:163
 
void setSystem(System &sys, SubsystemIndex id)
Definition: SubsystemGuts.h:310
 
void setU(State &s, const Vector &u) const
Definition: SubsystemGuts.h:225
 
const String & getName() const
Report back the name supplied on construction; this is not interpreted in any way by Simbody.
Definition: SubsystemGuts.h:65
 
Vector & updQDot(const State &s) const
Definition: SubsystemGuts.h:143
 
CacheEntryIndex getDiscreteVarUpdateIndex(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:251
 
const Vector & getUErr(const State &s) const
Definition: SubsystemGuts.h:154
 
AbstractValue & updCacheEntry(const State &s, CacheEntryIndex index) const
Definition: SubsystemGuts.h:246
 
virtual int realizeSubsystemTopologyImpl(State &s) const
Definition: SubsystemGuts.h:412
 
UDotErrIndex allocateUDotErr(const State &s, int nudoterr) const
Definition: SubsystemGuts.h:113
 
const Vector & getQErr(const State &s) const
Definition: SubsystemGuts.h:152
 
DiscreteVariableIndex allocateAutoUpdateDiscreteVariable(State &s, Stage invalidates, AbstractValue *v, Stage updateDependsOn) const
Definition: SubsystemGuts.h:94
 
const AbstractValue & getCacheEntry(const State &s, CacheEntryIndex index) const
Definition: SubsystemGuts.h:244
 
Vector & updZ(State &s) const
Definition: SubsystemGuts.h:132
 
void realizeSubsystemAcceleration(const State &) const
 
const Vector & getUDotErr(const State &s) const
Definition: SubsystemGuts.h:161
 
virtual int realizeSubsystemInstanceImpl(const State &s) const
Definition: SubsystemGuts.h:414
 
void markCacheValueRealized(const State &s, CacheEntryIndex cx) const
Definition: SubsystemGuts.h:269
 
void createScheduledEvent(const State &state, EventId &eventId) const
 
void realizeSubsystemInstance(const State &) const
 
Real getDiscreteVarLastUpdateTime(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:248
 
int getNUDotErr(const State &s) const
Definition: SubsystemGuts.h:206
 
bool isInSameSystem(const Subsystem &otherSubsystem) const
 
Vector & updZDot(const State &s) const
Definition: SubsystemGuts.h:147
 
AbstractMeasure getMeasure(MeasureIndex mx) const
Return the Measure whose index within this Subsystem is given, as an AbstractMeasure (that is,...
Definition: SubsystemGuts.h:293
 
int getNQErr(const State &s) const
Definition: SubsystemGuts.h:196
 
const Vector & getZWeights(const State &s) const
Definition: SubsystemGuts.h:127
 
SystemEventTriggerByStageIndex getEventTriggerStartByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:214
 
Subsystem & updOwnerSubsystemHandle()
Return a writable reference to the Subsystem handle object that is the unique owner of this Subsystem...
Definition: SubsystemGuts.h:450
 
bool isCacheValueRealized(const State &s, CacheEntryIndex cx) const
Definition: SubsystemGuts.h:266
 
virtual Subsystem::Guts * cloneImpl() const =0
 
int getNEventTriggersByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:216
 
SystemQErrIndex getQErrStart(const State &s) const
Definition: SubsystemGuts.h:194
 
UErrIndex allocateUErr(const State &s, int nuerr) const
Definition: SubsystemGuts.h:111
 
const AbstractValue & getDiscreteVarUpdateValue(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:254
 
SystemUErrIndex getUErrStart(const State &s) const
Definition: SubsystemGuts.h:199
 
Vector & updUErr(const State &s) const
Definition: SubsystemGuts.h:170
 
void calcDecorativeGeometryAndAppend(const State &, Stage, Array_< DecorativeGeometry > &) const
 
virtual int calcDecorativeGeometryAndAppendImpl(const State &, Stage, Array_< DecorativeGeometry > &) const
Definition: SubsystemGuts.h:423
 
const Vector & getQDotDot(const State &s) const
Definition: SubsystemGuts.h:140
 
bool hasOwnerSubsystemHandle() const
Check whether this Subsystem::Guts object is currently owned by some Subsystem handle object.
Definition: SubsystemGuts.h:463
 
EventTriggerByStageIndex allocateEventTriggersByStage(const State &s, Stage g, int ntriggers) const
Definition: SubsystemGuts.h:116
 
void reportEvents(const State &, Event::Cause, const Array_< EventId > &eventIds) const
 
bool isInSystem() const
Definition: SubsystemGuts.h:299
 
void setQ(State &s, const Vector &q) const
Definition: SubsystemGuts.h:221
 
const Vector & getUWeights(const State &s) const
Definition: SubsystemGuts.h:125
 
void realizeSubsystemPosition(const State &) const
 
AbstractValue & updDiscreteVarUpdateValue(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:257
 
void realizeSubsystemModel(State &) const
 
void realizeSubsystemTime(const State &) const
 
const AbstractValue & getDiscreteVariable(const State &s, DiscreteVariableIndex index) const
Definition: SubsystemGuts.h:240
 
void createTriggeredEvent(const State &state, EventId &eventId, EventTriggerByStageIndex &triggerFunctionIndex, Stage stage) const
 
SystemUDotErrIndex getUDotErrStart(const State &s) const
Definition: SubsystemGuts.h:204
 
int getNZ(const State &s) const
Definition: SubsystemGuts.h:191
 
int getNU(const State &s) const
Definition: SubsystemGuts.h:186
 
virtual void calcEventTriggerInfoImpl(const State &, Array_< EventTriggerInfo > &) const
Definition: SubsystemGuts.h:426
 
virtual void reportEventsImpl(const State &, Event::Cause, const Array_< EventId > &eventIds) const
Definition: SubsystemGuts.h:438
 
Vector & updU(State &s) const
Definition: SubsystemGuts.h:131
 
Vector & updQDotDot(const State &s) const
Definition: SubsystemGuts.h:149
 
int getNQ(const State &s) const
Definition: SubsystemGuts.h:181
 
int getNUErr(const State &s) const
Definition: SubsystemGuts.h:201
 
void calcTimeOfNextScheduledEvent(const State &, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const
 
Measure_< T > getMeasure_(MeasureIndex mx) const
Return the Measure whose index within this Subsystem is given.
Definition: SubsystemGuts.h:286
 
void realizeSubsystemTopology(State &) const
 
void invalidateSubsystemTopologyCache() const
Always call this method when a topological change is made to this Subsystem to indicate that any Stag...
 
virtual int realizeSubsystemPositionImpl(const State &s) const
Definition: SubsystemGuts.h:416
 
SystemUIndex getUStart(const State &s) const
Definition: SubsystemGuts.h:184
 
Subsystem::Guts * clone() const
 
void handleEvents(State &, Event::Cause, const Array_< EventId > &eventIds, const HandleEventsOptions &options, HandleEventsResults &results) const
 
void setOwnerSubsystemHandle(Subsystem &subsys)
Provide a reference to the Subsystem handle object that is the unique owner of this Subsystem::Guts o...
Definition: SubsystemGuts.h:459
 
void markDiscreteVarUpdateValueRealized(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:263
 
const String & getVersion() const
Report back the version string supplied on construction; this i not interpreted in any way by Simbody...
Definition: SubsystemGuts.h:68
 
SubsystemIndex getMySubsystemIndex() const
Definition: SubsystemGuts.h:316
 
const System & getSystem() const
Definition: SubsystemGuts.h:302
 
Vector & updUDot(const State &s) const
Definition: SubsystemGuts.h:145
 
const Subsystem & getOwnerSubsystemHandle() const
Return a const reference to the Subsystem handle object that is the unique owner of this Subsystem::G...
Definition: SubsystemGuts.h:444
 
const Vector & getU(const State &s) const
Definition: SubsystemGuts.h:121
 
const Vector & getUDot(const State &s) const
Definition: SubsystemGuts.h:136
 
void setZ(State &s, const Vector &z) const
Definition: SubsystemGuts.h:229
 
UIndex allocateU(State &s, const Vector &uInit) const
Definition: SubsystemGuts.h:85
 
const Vector & getQ(const State &s) const
Definition: SubsystemGuts.h:119
 
virtual void handleEventsImpl(State &, Event::Cause, const Array_< EventId > &eventIds, const HandleEventsOptions &options, HandleEventsResults &results) const
Definition: SubsystemGuts.h:434
 
virtual ~Guts()
Destructor is virtual to permit cleanup of derived classes.
 
virtual void calcTimeOfNextScheduledReportImpl(const State &, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const
Definition: SubsystemGuts.h:431
 
virtual int realizeSubsystemReportImpl(const State &s) const
Definition: SubsystemGuts.h:420
 
bool subsystemTopologyHasBeenRealized() const
Returns true if this subsystem's realizeTopology() method has been called since the last topological ...
Definition: SubsystemGuts.h:325
 
CacheEntryIndex allocateCacheEntry(const State &state, Stage g, AbstractValue *v) const
Definition: SubsystemGuts.h:103
 
const Vector & getQErrWeights(const State &s) const
Definition: SubsystemGuts.h:156
 
Vector & updEventTriggersByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:176
 
Vector & updQ(State &s) const
Definition: SubsystemGuts.h:130
 
virtual int realizeSubsystemDynamicsImpl(const State &s) const
Definition: SubsystemGuts.h:418
 
Stage getStage(const State &s) const
Definition: SubsystemGuts.h:234
 
SystemZIndex getZStart(const State &s) const
Definition: SubsystemGuts.h:189
 
AbstractValue & updDiscreteVariable(State &s, DiscreteVariableIndex index) const
Definition: SubsystemGuts.h:242
 
QErrIndex allocateQErr(const State &s, int nqerr) const
Definition: SubsystemGuts.h:109
 
SystemQIndex getQStart(const State &s) const
Definition: SubsystemGuts.h:179
 
virtual int realizeSubsystemTimeImpl(const State &s) const
Definition: SubsystemGuts.h:415
 
MeasureIndex adoptMeasure(AbstractMeasure &m)
Add a new Measure to this Subsystem.
 
void calcTimeOfNextScheduledReport(const State &, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const
 
ZIndex allocateZ(State &s, const Vector &zInit) const
Definition: SubsystemGuts.h:87
 
Vector & updQErr(const State &s) const
Definition: SubsystemGuts.h:168
 
Guts(const Guts &)
Copy constructor results in a default-constructed object though with the name and version string copi...
 
virtual void calcTimeOfNextScheduledEventImpl(const State &, Real &tNextEvent, Array_< EventId > &eventIds, bool includeCurrentTime) const
Definition: SubsystemGuts.h:428
 
void calcEventTriggerInfo(const State &, Array_< EventTriggerInfo > &) const
 
virtual int realizeSubsystemAccelerationImpl(const State &s) const
Definition: SubsystemGuts.h:419
 
System & updSystem()
Definition: SubsystemGuts.h:306
 
CacheEntryIndex allocateLazyCacheEntry(const State &state, Stage earliest, AbstractValue *v) const
Definition: SubsystemGuts.h:106
 
void realizeSubsystemDynamics(const State &) const
 
virtual int realizeSubsystemVelocityImpl(const State &s) const
Definition: SubsystemGuts.h:417
 
void realizeSubsystemVelocity(const State &) const
 
void markCacheValueNotRealized(const State &s, CacheEntryIndex cx) const
Definition: SubsystemGuts.h:272
 
const Vector & getZDot(const State &s) const
Definition: SubsystemGuts.h:138
 
const Vector & getUErrWeights(const State &s) const
Definition: SubsystemGuts.h:158
 
int getNMultipliers(const State &s) const
Definition: SubsystemGuts.h:211
 
SystemMultiplierIndex getMultipliersStart(const State &s) const
Definition: SubsystemGuts.h:209
 
const Vector & getQDot(const State &s) const
Definition: SubsystemGuts.h:134
 
virtual int realizeSubsystemModelImpl(State &s) const
Definition: SubsystemGuts.h:413
 
Vector & updUDotErr(const State &s) const
Definition: SubsystemGuts.h:172
 
Guts(const String &name="<NONAME>", const String &version="0.0.0")
This constructor is for use in the constructors of derived Subsystems.
 
bool isDiscreteVarUpdateValueRealized(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:260
 
QIndex allocateQ(State &s, const Vector &qInit) const
Definition: SubsystemGuts.h:83
 
void realizeSubsystemReport(const State &) const
 
Vector & updMultipliers(const State &s) const
Definition: SubsystemGuts.h:174
 
const Vector & getZ(const State &s) const
Definition: SubsystemGuts.h:123
 
DiscreteVariableIndex allocateDiscreteVariable(State &s, Stage g, AbstractValue *v) const
Definition: SubsystemGuts.h:91
 
A Subsystem is expected to be part of a larger System and to have interdependencies with other subsys...
Definition: Subsystem.h:55
 
SubsystemIndex getMySubsystemIndex() const
Return the SubsystemIndex within the containing System.
Definition: SubsystemGuts.h:495
 
MeasureIndex adoptMeasure(AbstractMeasure &)
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: SubsystemGuts.h:509
 
AbstractMeasure getMeasure(MeasureIndex) const
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: SubsystemGuts.h:511
 
const Subsystem::Guts & getSubsystemGuts() const
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: Subsystem.h:353
 
bool isOwnerHandle() const
Is this Subsystem handle the owner of the Subsystem::Guts object it points to? This is true if the ha...
Definition: SubsystemGuts.h:527
 
System & updSystem()
Return a writable reference to the System that contains this Subsystem.
Definition: SubsystemGuts.h:522
 
Subsystem::Guts & updSubsystemGuts()
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: Subsystem.h:354
 
void invalidateSubsystemTopologyCache() const
Always call this method when a topological change is made to this Subsystem to indicate that any Stag...
Definition: SubsystemGuts.h:505
 
bool isInSystem() const
Return true if this Subsystem is contained in a System.
Definition: SubsystemGuts.h:515
 
const System & getSystem() const
Return a const reference to the System that contains this Subsystem.
Definition: SubsystemGuts.h:520
 
bool isInSameSystem(const Subsystem &otherSubsystem) const
Return true if this Subsystem is contained in the same System as contains the given otherSubsystem.
Definition: SubsystemGuts.h:517
 
const String & getName() const
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: SubsystemGuts.h:498
 
bool subsystemTopologyHasBeenRealized() const
Returns true if this Subsystem's realizeTopology() method has been called since the last topological ...
Definition: SubsystemGuts.h:501
 
void setSystem(System &system, SubsystemIndex subx)
Inform this Subsystem of the System that contains it, as well as the SubsystemIndex which the System ...
Definition: SubsystemGuts.h:524
 
const String & getVersion() const
Obtain the Subsystem version string if one was given on construction.
Definition: SubsystemGuts.h:499
 
This unique integer type is for identifying a triggered event within a particular Stage of the full S...
 
This unique integer type is for indexing global "multiplier-like" arrays, that is,...
 
This unique integer type is for indexing global "qErr-like" arrays, that is, arrays that inherently h...
 
This unique integer type is for indexing global "q-like" arrays, that is, arrays that inherently have...
 
This unique integer type is for indexing global "uDotErr-like" arrays, that is, arrays that inherentl...
 
This unique integer type is for indexing global "uErr-like" arrays, that is, arrays that inherently h...
 
This unique integer type is for indexing global "u-like" arrays, that is, arrays that inherently have...
 
This unique integer type is for indexing global "z-like" arrays, that is, arrays that inherently have...
 
This is the base class that serves as the parent of all SimTK System objects; most commonly Simbody's...
Definition: System.h:97
 
Unique integer type for Subsystem-local uDotErr indexing.
 
Unique integer type for Subsystem-local uErr indexing.
 
Unique integer type for Subsystem-local u indexing.
 
int size() const
Definition: VectorBase.h:396
 
Unique integer type for Subsystem-local z indexing.
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:607