Simbody  3.4 (development)
SimTK::Subsystem Class Reference

The abstract parent of all Subsystems. More...

#include <Subsystem.h>

+ Inheritance diagram for SimTK::Subsystem:

List of all members.

Classes

class  Guts
 The abstract parent of all Subsystem "Guts" implementation classes. More...

Public Member Functions

 Subsystem ()
 Subsystem (const Subsystem &)
Subsystem & operator= (const Subsystem &)
 ~Subsystem ()
const String & getName () const
const String & getVersion () const
QIndex allocateQ (State &, const Vector &qInit) const
UIndex allocateU (State &, const Vector &uInit) const
ZIndex allocateZ (State &, const Vector &zInit) const
DiscreteVariableIndex allocateDiscreteVariable (State &, Stage invalidates, AbstractValue *v) const
DiscreteVariableIndex allocateAutoUpdateDiscreteVariable (State &, Stage invalidates, AbstractValue *v, Stage updateDependsOn) const
CacheEntryIndex allocateCacheEntry (const State &, Stage dependsOn, Stage computedBy, AbstractValue *v) const
CacheEntryIndex allocateCacheEntry (const State &state, Stage g, AbstractValue *v) const
CacheEntryIndex allocateLazyCacheEntry (const State &state, Stage earliest, AbstractValue *v) const
QErrIndex allocateQErr (const State &, int nqerr) const
UErrIndex allocateUErr (const State &, int nuerr) const
UDotErrIndex allocateUDotErr (const State &, int nudoterr) const
EventTriggerByStageIndex allocateEventTriggersByStage (const State &, Stage, int ntriggers) const
const Vector & getQ (const State &) const
const Vector & getU (const State &) const
const Vector & getZ (const State &) const
const Vector & getQDot (const State &) const
const Vector & getUDot (const State &) const
const Vector & getZDot (const State &) const
const Vector & getQDotDot (const State &) const
const Vector & getQErr (const State &) const
const Vector & getUErr (const State &) const
const Vector & getUDotErr (const State &) const
const Vector & getMultipliers (const State &) const
const Vector & getEventTriggersByStage (const State &, Stage) const
Vector & updQ (State &) const
Vector & updU (State &) const
Vector & updZ (State &) const
void setQ (State &s, const Vector &q) const
void setU (State &s, const Vector &u) const
void setZ (State &s, const Vector &z) const
Vector & updQDot (const State &) const
Vector & updUDot (const State &) const
Vector & updZDot (const State &) const
Vector & updQDotDot (const State &) const
Vector & updQErr (const State &) const
Vector & updUErr (const State &) const
Vector & updUDotErr (const State &) const
Vector & updMultipliers (const State &) const
Vector & updEventTriggersByStage (const State &, Stage) const
Stage getStage (const State &) const
const AbstractValue & getDiscreteVariable (const State &s, DiscreteVariableIndex dx) const
Real getDiscreteVarLastUpdateTime (const State &s, DiscreteVariableIndex dx) const
CacheEntryIndex getDiscreteVarUpdateIndex (const State &s, DiscreteVariableIndex dx) const
const AbstractValue & getDiscreteVarUpdateValue (const State &s, DiscreteVariableIndex dx) const
AbstractValue & updDiscreteVarUpdateValue (const State &s, DiscreteVariableIndex dx) const
bool isDiscreteVarUpdateValueRealized (const State &s, DiscreteVariableIndex dx) const
void markDiscreteVarUpdateValueRealized (const State &s, DiscreteVariableIndex dx) const
AbstractValue & updDiscreteVariable (State &, DiscreteVariableIndex) const
const AbstractValue & getCacheEntry (const State &, CacheEntryIndex) const
AbstractValue & updCacheEntry (const State &, CacheEntryIndex) const
bool isCacheValueRealized (const State &, CacheEntryIndex) const
void markCacheValueRealized (const State &, CacheEntryIndex) const
void markCacheValueNotRealized (const State &, CacheEntryIndex) const
SystemQIndex getQStart (const State &) const
int getNQ (const State &) const
SystemUIndex getUStart (const State &) const
int getNU (const State &) const
SystemZIndex getZStart (const State &) const
int getNZ (const State &) const
SystemQErrIndex getQErrStart (const State &) const
int getNQErr (const State &) const
SystemUErrIndex getUErrStart (const State &) const
int getNUErr (const State &) const
SystemUDotErrIndex getUDotErrStart (const State &) const
int getNUDotErr (const State &) const
SystemMultiplierIndex getMultipliersStart (const State &) const
int getNMultipliers (const State &) const
SystemEventTriggerByStageIndex getEventTriggerStartByStage (const State &, Stage) const
int getNEventTriggersByStage (const State &, Stage) const
bool isInSystem () const
bool isInSameSystem (const Subsystem &otherSubsystem) const
const System & getSystem () const
System & updSystem ()
SubsystemIndex getMySubsystemIndex () const
bool isOwnerHandle () const
bool isEmptyHandle () const
bool isSameSubsystem (const Subsystem &otherSubsystem) const
bool subsystemTopologyHasBeenRealized () const
void invalidateSubsystemTopologyCache () const
MeasureIndex adoptMeasure (AbstractMeasure &)
AbstractMeasure getMeasure (MeasureIndex) const
template<class T >
Measure_< T > getMeasure_ (MeasureIndex mx) const
const Subsystem::Guts & getSubsystemGuts () const
Subsystem::Guts & updSubsystemGuts ()
void adoptSubsystemGuts (Subsystem::Guts *g)
void setSystem (System &, SubsystemIndex)
 Subsystem (Subsystem::Guts *g)
bool hasGuts () const

Friends

class Guts

Detailed Description

The abstract parent of all Subsystems.

A Subsystem is expected to be part of a larger System and to have interdependencies with other subsystems of that same system. It must NOT have dependencies on objects which are outside the System. Consequently construction of any concrete subsystem requires specification of a system at that time. Subsystems go through an extended construction phase in which their contents and interdependencies are created. Thus all of a System's Subsystems generally need to be available simultaneously during construction, so that they can reference each other.

There are three distinct users of this class:

  • the System class
  • the concrete Subsystems derived from this class
  • the end user of a concrete Subsystem Only end user methods are public here. Methods intended for use by the concrete Subsystem class can be found in the Subsystem::Guts class which is defined in a separate header file. End users need not look over there -- trust me, you'll find it disturbing if you do!

Constructor & Destructor Documentation

SimTK::Subsystem::Subsystem ( Subsystem::Guts *  g) [inline, explicit]

Member Function Documentation

Subsystem& SimTK::Subsystem::operator= ( const Subsystem &  )
QIndex SimTK::Subsystem::allocateQ ( State &  ,
const Vector &  qInit 
) const
UIndex SimTK::Subsystem::allocateU ( State &  ,
const Vector &  uInit 
) const
ZIndex SimTK::Subsystem::allocateZ ( State &  ,
const Vector &  zInit 
) const
CacheEntryIndex SimTK::Subsystem::allocateCacheEntry ( const State &  ,
Stage  dependsOn,
Stage  computedBy,
AbstractValue *  v 
) const
CacheEntryIndex SimTK::Subsystem::allocateCacheEntry ( const State &  state,
Stage  g,
AbstractValue *  v 
) const [inline]
CacheEntryIndex SimTK::Subsystem::allocateLazyCacheEntry ( const State &  state,
Stage  earliest,
AbstractValue *  v 
) const [inline]
QErrIndex SimTK::Subsystem::allocateQErr ( const State &  ,
int  nqerr 
) const
UErrIndex SimTK::Subsystem::allocateUErr ( const State &  ,
int  nuerr 
) const
UDotErrIndex SimTK::Subsystem::allocateUDotErr ( const State &  ,
int  nudoterr 
) const
const Vector& SimTK::Subsystem::getQ ( const State &  ) const
const Vector& SimTK::Subsystem::getU ( const State &  ) const
const Vector& SimTK::Subsystem::getZ ( const State &  ) const
const Vector& SimTK::Subsystem::getQDot ( const State &  ) const
const Vector& SimTK::Subsystem::getUDot ( const State &  ) const
const Vector& SimTK::Subsystem::getZDot ( const State &  ) const
const Vector& SimTK::Subsystem::getQDotDot ( const State &  ) const
const Vector& SimTK::Subsystem::getQErr ( const State &  ) const
const Vector& SimTK::Subsystem::getUErr ( const State &  ) const
const Vector& SimTK::Subsystem::getUDotErr ( const State &  ) const
const Vector& SimTK::Subsystem::getMultipliers ( const State &  ) const
const Vector& SimTK::Subsystem::getEventTriggersByStage ( const State &  ,
Stage   
) const
void SimTK::Subsystem::setQ ( State &  s,
const Vector &  q 
) const [inline]
void SimTK::Subsystem::setU ( State &  s,
const Vector &  u 
) const [inline]
void SimTK::Subsystem::setZ ( State &  s,
const Vector &  z 
) const [inline]
Vector& SimTK::Subsystem::updQDot ( const State &  ) const
Vector& SimTK::Subsystem::updUDot ( const State &  ) const
Vector& SimTK::Subsystem::updZDot ( const State &  ) const
Vector& SimTK::Subsystem::updQErr ( const State &  ) const
Vector& SimTK::Subsystem::updUErr ( const State &  ) const
Stage SimTK::Subsystem::getStage ( const State &  ) const
Real SimTK::Subsystem::getDiscreteVarLastUpdateTime ( const State &  s,
DiscreteVariableIndex  dx 
) const [inline]
int SimTK::Subsystem::getNQ ( const State &  ) const
int SimTK::Subsystem::getNU ( const State &  ) const
int SimTK::Subsystem::getNZ ( const State &  ) const
int SimTK::Subsystem::getNQErr ( const State &  ) const
int SimTK::Subsystem::getNUErr ( const State &  ) const
int SimTK::Subsystem::getNUDotErr ( const State &  ) const
int SimTK::Subsystem::getNMultipliers ( const State &  ) const
int SimTK::Subsystem::getNEventTriggersByStage ( const State &  ,
Stage   
) const
bool SimTK::Subsystem::isInSameSystem ( const Subsystem &  otherSubsystem) const
bool SimTK::Subsystem::isSameSubsystem ( const Subsystem &  otherSubsystem) const
template<class T >
Measure_<T> SimTK::Subsystem::getMeasure_ ( MeasureIndex  mx) const [inline]
bool SimTK::Subsystem::hasGuts ( ) const [inline]

Friends And Related Function Documentation

friend class Guts [friend]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines