1 #ifndef SimTK_SimTKCOMMON_SYSTEM_GUTS_H_
2 #define SimTK_SimTKCOMMON_SYSTEM_GUTS_H_
35 class DecorativeGeometry;
80 const String& version=
"0.0.0");
83 const String& getName()
const;
84 const String& getVersion()
const;
86 void setHasTimeAdvancedEvents(
bool hasEm);
87 bool hasTimeAdvancedEvents()
const;
95 const State& getDefaultState()
const;
96 State& updDefaultState();
102 int getNumSubsystems()
const;
107 const System& getSystem()
const;
110 void setOwnerHandle(
System&);
111 bool hasOwnerHandle()
const;
113 explicit Guts(
class GutsRep* r) : rep(r) { }
115 const GutsRep&
getRep()
const {assert(rep);
return *rep;}
116 GutsRep&
updRep()
const {assert(rep);
return *rep;}
118 bool systemTopologyHasBeenRealized()
const;
120 void setSystemTopologyCacheVersion(
StageVersion topoVersion)
const;
121 void invalidateSystemTopologyCache()
const;
131 const State& realizeTopology()
const;
132 void realizeModel(
State&)
const;
133 void realizeInstance (
const State& s)
const;
134 void realizeTime (
const State& s)
const;
135 void realizePosition (
const State& s)
const;
136 void realizeVelocity (
const State& s)
const;
137 void realizeDynamics (
const State& s)
const;
138 void realizeAcceleration(
const State& s)
const;
139 void realizeReport (
const State& s)
const;
142 void multiplyByN(
const State& state,
const Vector& u,
144 void multiplyByNTranspose(
const State& state,
const Vector& fq,
146 void multiplyByNPInv(
const State& state,
const Vector& dq,
148 void multiplyByNPInvTranspose(
const State& state,
const Vector& fu,
151 bool prescribeQ(
State&)
const;
152 bool prescribeU(
State&)
const;
167 void calcTimeOfNextScheduledEvent(
const State&,
Real& tNextEvent,
Array_<EventId>& eventIds,
bool includeCurrentTime)
const;
168 void calcTimeOfNextScheduledReport(
const State&,
Real& tNextEvent,
Array_<EventId>& eventIds,
bool includeCurrentTime)
const;
170 void calcDecorativeGeometryAndAppend(
const State&,
Stage,
200 virtual void multiplyByNImpl(
const State& state,
const Vector& u,
202 virtual void multiplyByNTransposeImpl(
const State& state,
const Vector& fq,
204 virtual void multiplyByNPInvImpl(
const State& state,
const Vector& dq,
206 virtual void multiplyByNPInvTransposeImpl(
const State& state,
const Vector& fu,
223 virtual void handleEventsImpl
230 virtual int calcEventTriggerInfoImpl(
const State& state,
233 virtual int calcTimeOfNextScheduledEventImpl
235 bool includeCurrentTime)
const;
236 virtual int calcTimeOfNextScheduledReportImpl
238 bool includeCurrentTime)
const;
242 virtual void getFreeQIndexImpl
244 const unsigned nq = (unsigned)s.
getNQ();
246 for (
unsigned i=0; i<nq; ++i)
249 virtual void getFreeUIndexImpl
251 const unsigned nu = (unsigned)s.
getNU();
253 for (
unsigned i=0; i<nu; ++i)
260 class EventTriggerInfoRep;
267 #endif // SimTK_SimTKCOMMON_SYSTEM_GUTS_H_