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); }
100 (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()); }
259 bool isDiscreteVarUpdateValueRealized
262 void markDiscreteVarUpdateValueRealized
293 "Subsystem::Guts::getMeasure()");
298 bool isInSameSystem(
const Subsystem& otherSubsystem)
const;
312 m_mySubsystemIndex = id;
315 SimTK_ASSERT(isInSystem(),
"Subsystem::getMySubsystemIndex()");
316 return m_mySubsystemIndex;
324 {
return m_subsystemTopologyRealized; }
334 void invalidateSubsystemTopologyCache()
const;
349 void realizeSubsystemTopology (
State&)
const;
350 void realizeSubsystemModel (
State&)
const;
351 void realizeSubsystemInstance (
const State&)
const;
352 void realizeSubsystemTime (
const State&)
const;
353 void realizeSubsystemPosition (
const State&)
const;
354 void realizeSubsystemVelocity (
const State&)
const;
355 void realizeSubsystemDynamics (
const State&)
const;
356 void realizeSubsystemAcceleration(
const State&)
const;
357 void realizeSubsystemReport (
const State&)
const;
364 void calcDecorativeGeometryAndAppend
367 void createScheduledEvent(
const State& state,
EventId& eventId)
const;
368 void createTriggeredEvent(
const State& state,
EventId& eventId,
376 void calcEventTriggerInfo
378 void calcTimeOfNextScheduledEvent
380 bool includeCurrentTime)
const;
381 void calcTimeOfNextScheduledReport
383 bool includeCurrentTime)
const;
420 virtual int calcDecorativeGeometryAndAppendImpl
423 virtual void calcEventTriggerInfoImpl
425 virtual void calcTimeOfNextScheduledEventImpl
427 bool includeCurrentTime)
const {}
428 virtual void calcTimeOfNextScheduledReportImpl
430 bool includeCurrentTime)
const {}
431 virtual void handleEventsImpl
435 virtual void reportEventsImpl
443 SimTK_ASSERT(m_myHandle,
"Subsystem::getOwnerSubsystemHandle()");
449 SimTK_ASSERT(m_myHandle,
"Subsystem::getOwnerSubsystemHandle()");
472 String m_subsystemVersion;
484 mutable bool m_subsystemTopologyRealized;
494 {
return getSubsystemGuts().getMySubsystemIndex(); }
500 return getSubsystemGuts().subsystemTopologyHasBeenRealized();
504 getSubsystemGuts().invalidateSubsystemTopologyCache();
508 {
return updSubsystemGuts().adoptMeasure(m); }
510 {
return getSubsystemGuts().getMeasure(mx); }
514 {
return getSubsystemGuts().isInSystem(); }
516 {
return getSubsystemGuts().isInSameSystem(otherSubsystem); }
519 {
return getSubsystemGuts().getSystem(); }
521 {
return updSubsystemGuts().updSystem(); }
523 { updSubsystemGuts().setSystem(sys,
id); }
526 {
return guts==0 || &guts->getOwnerSubsystemHandle()==
this; }
530 #endif // SimTK_SimTKCOMMON_SUBSYSTEM_GUTS_H_ const Vector & getZWeights(SubsystemIndex) const
AbstractValue & updDiscreteVarUpdateValue(SubsystemIndex, DiscreteVariableIndex) const
For an auto-updating discrete variable, return a writable reference to the value of its associated up...
Vector & updUErr(SubsystemIndex) const
bool isInSystem() const
Return true if this Subsystem is contained in a System.
Definition: SubsystemGuts.h:513
A Subsystem is expected to be part of a larger System and to have interdependencies with other subsys...
Definition: Subsystem.h:55
const Vector & getQDotDot(SubsystemIndex) const
Vector & updQ(SubsystemIndex)
Vector & updQDot(const State &s) const
Definition: SubsystemGuts.h:143
AbstractMeasure getMeasure(MeasureIndex) const
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: SubsystemGuts.h:509
const String & getVersion() const
Obtain the Subsystem version string if one was given on construction.
Definition: SubsystemGuts.h:497
SystemYErrIndex getUErrStart() const
Returns the yErr index at which the uErr's begin. Callable at Instance stage.
#define SimTK_SimTKCOMMON_EXPORT
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:218
const Vector & getZDot(SubsystemIndex) const
void invalidateSubsystemTopologyCache() const
Always call this method when a topological change is made to this Subsystem to indicate that any Stag...
Definition: SubsystemGuts.h:503
const Vector & getQErr(SubsystemIndex) const
const Vector & getZ(SubsystemIndex) const
const Vector & getUDot(const State &s) const
Definition: SubsystemGuts.h:136
Unique integer type for Subsystem-local uDotErr indexing.
SubsystemIndex getMySubsystemIndex() const
Return the SubsystemIndex within the containing System.
Definition: SubsystemGuts.h:493
Vector & updMultipliers(SubsystemIndex) const
Vector & updQErr(SubsystemIndex) const
bool isDiscreteVarUpdateValueRealized(SubsystemIndex, DiscreteVariableIndex) const
Check whether the update value for this auto-update discrete variable has already been computed since...
const Stage & getSubsystemStage(SubsystemIndex) const
int getNU() const
Get total number of shared u's (generalized speeds; mobilities).
int getNUErr(const State &s) const
Definition: SubsystemGuts.h:201
MeasureIndex adoptMeasure(AbstractMeasure &)
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: SubsystemGuts.h:507
AbstractValue & updCacheEntry(const State &s, CacheEntryIndex index) const
Definition: SubsystemGuts.h:246
AbstractValue & updCacheEntry(SubsystemIndex, CacheEntryIndex) const
Retrieve a writable reference to the value contained in a particular cache entry. ...
void markCacheValueNotRealized(SubsystemIndex, CacheEntryIndex) const
Normally cache entries are invalidated automatically, however this method allows manual invalidation ...
void advanceSubsystemToStage(SubsystemIndex, Stage) const
Advance a particular Subsystem's current stage by one to the indicated stage.
QErrIndex allocateQErr(SubsystemIndex, int nqerr) const
Allocate nqerr cache slots to hold the current error for position-level (holonomic) constraint equati...
Unique integer type for Subsystem-local u indexing.
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
CacheEntryIndex allocateCacheEntry(SubsystemIndex, Stage earliest, Stage latest, AbstractValue *) const
There are two Stages supplied explicitly as arguments to this method: earliest and latest...
virtual int realizeSubsystemModelImpl(State &s) const
Definition: SubsystemGuts.h:411
Measure_< T > getMeasure_(MeasureIndex mx) const
Return the Measure whose index within this Subsystem is given.
Definition: SubsystemGuts.h:284
Unique integer type for Subsystem-local uErr indexing.
Real getDiscreteVarLastUpdateTime(SubsystemIndex, DiscreteVariableIndex) const
Return the time of last update for this discrete variable.
DiscreteVariableIndex allocateDiscreteVariable(State &s, Stage g, AbstractValue *v) const
Definition: SubsystemGuts.h:91
Unique integer type for Subsystem-local qErr indexing.
This class is basically a glorified enumerated type, type-safe and range checked but permitting conve...
Definition: Stage.h:50
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 & updUErr(const State &s) const
Definition: SubsystemGuts.h:170
int size() const
Definition: VectorBase.h:396
SystemMultiplierIndex getMultipliersStart(const State &s) const
Definition: SubsystemGuts.h:209
const AbstractValue & getDiscreteVariable(SubsystemIndex, DiscreteVariableIndex) const
Get the current value of the indicated discrete variable.
UDotErrIndex allocateUDotErr(SubsystemIndex, int nudoterr) const
Allocate nudoterr cache slots to hold the current error for acceleration-level (acceleration-only, nonholonomic first derivative, and holonomic second derivative) constraint equations.
SystemYIndex getUStart() const
Returns the y index at which the u's begin. Callable at Model stage.
CacheEntryIndex getDiscreteVarUpdateIndex(SubsystemIndex, DiscreteVariableIndex) const
For an auto-updating discrete variable, return the CacheEntryIndex for its associated update cache en...
#define SimTK_ASSERT(cond, msg)
Definition: ExceptionMacros.h:374
SystemUDotErrIndex getUDotErrStart(SubsystemIndex) const
UDotErrIndex allocateUDotErr(const State &s, int nudoterr) const
Definition: SubsystemGuts.h:113
Vector & updUDot(const State &s) const
Definition: SubsystemGuts.h:145
bool isCacheValueRealized(SubsystemIndex, CacheEntryIndex) const
Check whether the value in a particular cache entry has been recalculated since the last change to th...
virtual int realizeSubsystemPositionImpl(const State &s) const
Definition: SubsystemGuts.h:414
void advanceToStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:236
int getNMultipliers() const
Return the total number of constraint multipliers; necessarily the same as the number of acceleration...
bool subsystemTopologyHasBeenRealized() const
Returns true if this subsystem's realizeTopology() method has been called since the last topological ...
Definition: SubsystemGuts.h:323
This is the base class for all Measure handle classes.
Definition: Measure.h:151
const Vector & getZDot(const State &s) const
Definition: SubsystemGuts.h:138
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:593
EventTriggerByStageIndex allocateEventTriggersByStage(const State &s, Stage g, int ntriggers) const
Definition: SubsystemGuts.h:116
int getNUErr() const
Return the total number nuerr=mp+mv of cache entries for velocity-level constraint errors (including ...
Vector & updUDotErr(SubsystemIndex) const
This unique integer type is for indexing global "multiplier-like" arrays, that is, arrays that inherently have the same dimension as the total number of Lagrange multipliers in the full System-level view of the State.
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:442
QIndex allocateQ(State &s, const Vector &qInit) const
Definition: SubsystemGuts.h:83
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:276
const Vector & getQDotDot(const State &s) const
Definition: SubsystemGuts.h:140
const Vector & getUWeights(const State &s) const
Definition: SubsystemGuts.h:125
int getNQ() const
Get total number of shared q's (generalized coordinates; second order state variables).
void setU(State &s, const Vector &u) const
Definition: SubsystemGuts.h:225
const Vector & getUErr(const State &s) const
Definition: SubsystemGuts.h:154
const Vector & getQErrWeights(SubsystemIndex) const
const AbstractValue & getDiscreteVariable(const State &s, DiscreteVariableIndex index) const
Definition: SubsystemGuts.h:240
AbstractValue & updDiscreteVariable(State &s, DiscreteVariableIndex index) const
Definition: SubsystemGuts.h:242
void setSystem(System &sys, SubsystemIndex id)
Definition: SubsystemGuts.h:308
const Vector & getUDotErr(const State &s) const
Definition: SubsystemGuts.h:161
const Vector & getUWeights(SubsystemIndex) const
AbstractValue & updDiscreteVariable(SubsystemIndex, DiscreteVariableIndex)
Get a writable reference to the value stored in the indicated discrete state variable dv...
Vector & updQ(State &s) const
Definition: SubsystemGuts.h:130
UIndex allocateU(State &s, const Vector &uInit) const
Definition: SubsystemGuts.h:85
Vector & updU(SubsystemIndex)
These are all the possible causes for events.
Definition: Event.h:123
const AbstractValue & getDiscreteVarUpdateValue(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:254
const Vector & getMultipliers(const State &s) const
Definition: SubsystemGuts.h:163
DiscreteVariableIndex allocateAutoUpdateDiscreteVariable(SubsystemIndex, Stage invalidates, AbstractValue *, Stage updateDependsOn)
This method allocates a DiscreteVariable whose value should be updated automatically after each time ...
SystemQErrIndex getQErrStart(const State &s) const
Definition: SubsystemGuts.h:194
SystemQIndex getQStart(const State &s) const
Definition: SubsystemGuts.h:179
bool isCacheValueRealized(const State &s, CacheEntryIndex cx) const
Definition: SubsystemGuts.h:266
Vector & updEventTriggersByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:176
virtual int realizeSubsystemDynamicsImpl(const State &s) const
Definition: SubsystemGuts.h:416
Vector & updZ(State &s) const
Definition: SubsystemGuts.h:132
Vector & updQErr(const State &s) const
Definition: SubsystemGuts.h:168
const Vector & getUDotErr(SubsystemIndex) const
The SimTK::Array_<T> container class is a plug-compatible replacement for the C++ standard template l...
Definition: Array.h:50
ZIndex allocateZ(State &s, const Vector &zInit) const
Definition: SubsystemGuts.h:87
QErrIndex allocateQErr(const State &s, int nqerr) const
Definition: SubsystemGuts.h:109
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 "qErr-like" arrays, that is, arrays that inherently h...
Unique integer type for Subsystem-local z indexing.
Subsystem & updOwnerSubsystemHandle()
Return a writable reference to the Subsystem handle object that is the unique owner of this Subsystem...
Definition: SubsystemGuts.h:448
int getNQ(const State &s) const
Definition: SubsystemGuts.h:181
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:515
This unique integer type is for indexing global "uErr-like" arrays, that is, arrays that inherently h...
const Vector & getZWeights(const State &s) const
Definition: SubsystemGuts.h:127
AbstractValue & updDiscreteVarUpdateValue(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:257
void setZ(State &s, const Vector &z) const
Definition: SubsystemGuts.h:229
System & updSystem()
Return a writable reference to the System that contains this Subsystem.
Definition: SubsystemGuts.h:520
SystemUDotErrIndex getUDotErrStart(const State &s) const
Definition: SubsystemGuts.h:204
const Vector & getEventTriggersByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:165
Vector & updU(State &s) const
Definition: SubsystemGuts.h:131
SystemYIndex getQStart() const
Returns the y index at which the q's begin. Callable at Model 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 ...
Unique integer type for Subsystem-local q indexing.
int getNUDotErr(const State &s) const
Definition: SubsystemGuts.h:206
The abstract parent of all Subsystem implementation classes.
Definition: SubsystemGuts.h:47
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:457
virtual int realizeSubsystemTimeImpl(const State &s) const
Definition: SubsystemGuts.h:413
Higher than any legitimate Stage.
Definition: Stage.h:63
virtual int realizeSubsystemReportImpl(const State &s) const
Definition: SubsystemGuts.h:418
int getNMultipliers(const State &s) const
Definition: SubsystemGuts.h:211
void markCacheValueRealized(const State &s, CacheEntryIndex cx) const
Definition: SubsystemGuts.h:268
const System & getSystem() const
Return a const reference to the System that contains this Subsystem.
Definition: SubsystemGuts.h:518
This unique integer type is for identifying a triggered event within a particular Stage of the full S...
int getNZ(const State &s) const
Definition: SubsystemGuts.h:191
const String & getName() const
Report back the name supplied on construction; this is not interpreted in any way by Simbody...
Definition: SubsystemGuts.h:65
Stage getStage(const State &s) const
Definition: SubsystemGuts.h:234
void markCacheValueNotRealized(const State &s, CacheEntryIndex cx) const
Definition: SubsystemGuts.h:270
const Vector & getEventTriggersByStage(Stage) const
int getNQErr(const State &s) const
Definition: SubsystemGuts.h:196
virtual int realizeSubsystemTopologyImpl(State &s) const
Definition: SubsystemGuts.h:410
int getNUDotErr() const
Return the total number nudotErr=mp+mv+ma of cache entries for acceleration-level constraint errors (...
virtual int realizeSubsystemVelocityImpl(const State &s) const
Definition: SubsystemGuts.h:415
Vector & updQDot(SubsystemIndex) const
const Vector & getQDot(const State &s) const
Definition: SubsystemGuts.h:134
SimTK::String is a plug-compatible std::string replacement (plus some additional functionality) inten...
Definition: String.h:62
virtual int realizeSubsystemInstanceImpl(const State &s) const
Definition: SubsystemGuts.h:412
SystemUErrIndex getUErrStart(const State &s) const
Definition: SubsystemGuts.h:199
Vector & updZDot(const State &s) const
Definition: SubsystemGuts.h:147
Declares the user-visible part of a SimTK::State, the implementation is done in a separate internal c...
const AbstractValue & getCacheEntry(SubsystemIndex, CacheEntryIndex) const
Retrieve a const reference to the value contained in a particular cache entry.
void setQ(State &s, const Vector &q) const
Definition: SubsystemGuts.h:221
Abstract base class representing an arbitrary value of self-describing type.
Definition: Value.h:41
This unique integer type is for indexing global "uDotErr-like" arrays, that is, arrays that inherentl...
UErrIndex allocateUErr(SubsystemIndex, int nuerr) const
Allocate nuerr cache slots to hold the current error for velocity-level (nonholonomic and holonomic f...
Vector & updQDotDot(SubsystemIndex) const
SystemYIndex getZStart() const
Returns the y index at which the z's begin. Callable at Model stage.
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:522
This unique integer type is for selecting discrete variables.
const Vector & getQErrWeights(const State &s) const
Definition: SubsystemGuts.h:156
This unique integer type is for indexing global "z-like" arrays, that is, arrays that inherently have...
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
Vector & updQDotDot(const State &s) const
Definition: SubsystemGuts.h:149
const Vector & getZ(const State &s) const
Definition: SubsystemGuts.h:123
const AbstractValue & getCacheEntry(const State &s, CacheEntryIndex index) const
Definition: SubsystemGuts.h:244
QIndex allocateQ(SubsystemIndex, const Vector &qInit)
Allocate generalized coordinates q, which are second order continuous state variables.
const AbstractValue & getDiscreteVarUpdateValue(SubsystemIndex, DiscreteVariableIndex) const
For an auto-updating discrete variable, return the current value of its associated update cache entry...
SystemMultiplierIndex getMultipliersStart(SubsystemIndex) const
const Vector & getQ(SubsystemIndex) const
Per-subsystem access to the global shared variables.
bool subsystemTopologyHasBeenRealized() const
Returns true if this Subsystem's realizeTopology() method has been called since the last topological ...
Definition: SubsystemGuts.h:499
bool isInSystem() const
Definition: SubsystemGuts.h:297
This is the base class that serves as the parent of all SimTK System objects; most commonly Simbody's...
Definition: System.h:97
bool hasOwnerSubsystemHandle() const
Check whether this Subsystem::Guts object is currently owned by some Subsystem handle object...
Definition: SubsystemGuts.h:461
const Vector & getMultipliers(SubsystemIndex) const
UIndex allocateU(SubsystemIndex, const Vector &uInit)
Allocate generalized speeds u, which are first order continuous state variables related to the deriva...
const Vector & getUErrWeights(SubsystemIndex) const
int getNU(const State &s) const
Definition: SubsystemGuts.h:186
CacheEntryIndex getDiscreteVarUpdateIndex(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:251
SystemZIndex getZStart(const State &s) const
Definition: SubsystemGuts.h:189
Provide a unique integer type for identifying Subsystems.
UErrIndex allocateUErr(const State &s, int nuerr) const
Definition: SubsystemGuts.h:111
const Vector & getUDot(SubsystemIndex) const
ZIndex allocateZ(SubsystemIndex, const Vector &zInit)
Allocate auxiliary first order continuous state variables z.
SystemEventTriggerByStageIndex getEventTriggerStartByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:214
This unique integer type is for selecting non-shared cache entries.
Real getDiscreteVarLastUpdateTime(const State &s, DiscreteVariableIndex dx) const
Definition: SubsystemGuts.h:248
Vector & updZ(SubsystemIndex)
Results returned by the handleEvent() method.
Definition: Event.h:342
const Vector & getUErr(SubsystemIndex) const
This is the header which should be included in user programs that would like to make use of all the S...
virtual int realizeSubsystemAccelerationImpl(const State &s) const
Definition: SubsystemGuts.h:417
const Vector & getU(const State &s) const
Definition: SubsystemGuts.h:121
Unique integer type for Subsystem-local, per-stage event indexing.
const Vector & getU(SubsystemIndex) const
const Vector & getQ(const State &s) const
Definition: SubsystemGuts.h:119
This unique integer type is for indexing global "u-like" arrays, that is, arrays that inherently have...
void markDiscreteVarUpdateValueRealized(SubsystemIndex, DiscreteVariableIndex) const
Mark the update value for this auto-update discrete variable as up-to-date with respect to the state ...
Vector & updMultipliers(const State &s) const
Definition: SubsystemGuts.h:174
Includes internal headers providing declarations for the basic SimTK Core classes.
Vector & updUDot(SubsystemIndex) const
SystemYErrIndex getQErrStart() const
Returns the yErr index at which the qErr's begin. Callable at Instance stage.
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:525
EventTriggerByStageIndex allocateEventTrigger(SubsystemIndex, Stage stage, int nevent) const
Allocate room for nevent witness function values that will be available at the indicated stage...
const System & getSystem() const
Definition: SubsystemGuts.h:300
Vector & updUDotErr(const State &s) const
Definition: SubsystemGuts.h:172
const Vector & getQDot(SubsystemIndex) const
Per-subsystem access to the shared cache entries.
SystemUIndex getUStart(const State &s) const
Definition: SubsystemGuts.h:184
Vector & updZDot(SubsystemIndex) const
const Vector & getUErrWeights(const State &s) const
Definition: SubsystemGuts.h:158
AbstractMeasure getMeasure(MeasureIndex mx) const
Return the Measure whose index within this Subsystem is given, as an AbstractMeasure (that is...
Definition: SubsystemGuts.h:291
Vector & updEventTriggersByStage(Stage) const
SubsystemIndex getMySubsystemIndex() const
Definition: SubsystemGuts.h:314
int getNEventTriggersByStage(const State &s, Stage g) const
Definition: SubsystemGuts.h:216
Options for the handleEvent() method.
Definition: Event.h:266
const String & getName() const
Obtain the Subsystem name if one was given on construction of the concrete Subsystem.
Definition: SubsystemGuts.h:496
This is the base handle class for all Measures whose value type is known, including all the Simbody b...
Definition: Measure.h:261
int getNZ() const
Get total number of shared z's (auxiliary state variables).
System & updSystem()
Definition: SubsystemGuts.h:304
int getNEventTriggersByStage(Stage) const
Return the size of the partition of event trigger functions which are evaluated at a given Stage...
void markCacheValueRealized(SubsystemIndex, CacheEntryIndex) const
Mark the value of a particular cache entry as up to date after it has been recalculated.
const Vector & getQErr(const State &s) const
Definition: SubsystemGuts.h:152
This is a class to represent unique IDs for events in a type-safe way.