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