API  4.2
For MATLAB, Python, Java, and C++ users
OpenSim::Component Class Referenceabstract

The abstract Component class defines the interface used to add computational elements to the underlying SimTK::System (MultibodySystem). More...

+ Inheritance diagram for OpenSim::Component:

Static Public Member Functions

Auto-generated functions
static ComponentsafeDownCast (OpenSim::Object *obj)
 For use in MATLAB and Python to access the concrete class. More...
 
- Static Public Member Functions inherited from OpenSim::Object
static void registerType (const Object &defaultObject)
 Register an instance of a class; if the class is already registered it will be replaced. More...
 
static void renameType (const std::string &oldTypeName, const std::string &newTypeName)
 Support versioning by associating the current Object type with an old name. More...
 
static const ObjectgetDefaultInstanceOfType (const std::string &concreteClassName)
 Return a pointer to the default instance of the registered (concrete) Object whose class name is given, or NULL if the type is not registered. More...
 
template<class T >
static bool isObjectTypeDerivedFrom (const std::string &concreteClassName)
 Return true if the given concrete object type represents a subclass of the template object type T, and thus could be referenced with a T*. More...
 
static ObjectnewInstanceOfType (const std::string &concreteClassName)
 Create a new instance of the concrete Object type whose class name is given as concreteClassName. More...
 
static void getRegisteredTypenames (Array< std::string > &typeNames)
 Retrieve all the typenames registered so far. More...
 
template<class T >
static void getRegisteredObjectsOfGivenType (ArrayPtrs< T > &rArray)
 Return an array of pointers to the default instances of all registered (concrete) Object types that derive from a given Object-derived type that does not have to be concrete. More...
 
static bool PrintPropertyInfo (std::ostream &os, const std::string &classNameDotPropertyName, bool printFlagInfo=true)
 Dump formatted property information to a given output stream, useful for creating a "help" facility for registered objects. More...
 
static bool PrintPropertyInfo (std::ostream &os, const std::string &className, const std::string &propertyName, bool printFlagInfo=true)
 Same as the other signature but the class name and property name are provided as two separate strings. More...
 
static ObjectmakeObjectFromFile (const std::string &fileName)
 Create an OpenSim object whose type is based on the tag at the root node of the XML file passed in. More...
 
static const std::string & getClassName ()
 Return the name of this class as a string; i.e., "Object". More...
 
static void setSerializeAllDefaults (bool shouldSerializeDefaults)
 Static function to control whether all registered objects and their properties are written to the defaults section of output files rather than only those values for which the default was explicitly overwritten when read in from an input file or set programmatically. More...
 
static bool getSerializeAllDefaults ()
 Report the value of the "serialize all defaults" flag. More...
 
static bool isKindOf (const char *type)
 Returns true if the passed-in string is "Object"; each Object-derived class defines a method of this name for its own class name. More...
 
static void setDebugLevel (int newLevel)
 Set the amount of logging output. More...
 
static int getDebugLevel ()
 Get the current setting of debug level. More...
 
static ObjectSafeCopy (const Object *aObject)
 Use the clone() method to duplicate the given object unless the pointer is null in which case null is returned. More...
 
static void RegisterType (const Object &defaultObject)
 OBSOLETE alternate name for registerType(). More...
 
static void RenameType (const std::string &oldName, const std::string &newName)
 OBSOLETE alternate name for renameType(). More...
 

Auto-generated functions <br>

static const std::string & getClassName ()
 This returns "Component"
More...
 
Componentclone () const override=0
 Create a new heap-allocated copy of the concrete object to which this Object refers. More...
 
const std::string & getConcreteClassName () const override=0
 Returns the class name of the concrete Object-derived class of the actual object referenced by this Object, as a string. More...
 

Additional Inherited Members

- Public Member Functions inherited from OpenSim::Object
virtual ~Object ()
 Virtual destructor for cleanup. More...
 
bool isEqualTo (const Object &aObject) const
 Equality operator wrapper for use from languages not supporting operator overloading. More...
 
Objectoperator= (const Object &aObject)
 Copy assignment copies he base class fields, including the properties. More...
 
virtual bool operator== (const Object &aObject) const
 Determine if two objects are equal. More...
 
virtual bool operator< (const Object &aObject) const
 Provide an ordering for objects so they can be put in sorted containers. More...
 
void setName (const std::string &name)
 Set the name of the Object. More...
 
const std::string & getName () const
 Get the name of this Object. More...
 
void setDescription (const std::string &description)
 Set description, a one-liner summary. More...
 
const std::string & getDescription () const
 Get description, a one-liner summary. More...
 
const std::string & getAuthors () const
 Get Authors of this Object. More...
 
void setAuthors (const std::string &authors)
 Set Authors of this object. More...
 
const std::string & getReferences () const
 Get references or publications to cite if using this object. More...
 
void setReferences (const std::string &references)
 Set references or publications to cite if using this object. More...
 
int getNumProperties () const
 Determine how many properties are stored with this Object. More...
 
const AbstractPropertygetPropertyByIndex (int propertyIndex) const
 Get a const reference to a property by its index number, returned as an AbstractProperty. More...
 
AbstractPropertyupdPropertyByIndex (int propertyIndex)
 Get a writable reference to a property by its index number, returned as an AbstractProperty. More...
 
bool hasProperty (const std::string &name) const
 Return true if this Object has a property of any type with the given name, which must not be empty. More...
 
const AbstractPropertygetPropertyByName (const std::string &name) const
 Get a const reference to a property by its name, returned as an AbstractProperty. More...
 
AbstractPropertyupdPropertyByName (const std::string &name)
 Get a writable reference to a property by its name, returned as an AbstractProperty. More...
 
template<class T >
bool hasProperty () const
 Return true if this Object contains an unnamed, one-object property that contains objects of the given template type T. More...
 
template<class T >
const Property< T > & getProperty (const PropertyIndex &index) const
 Get property of known type Property<T> as a const reference; the property must be present and have the right type. More...
 
template<class T >
Property< T > & updProperty (const PropertyIndex &index)
 Get property of known type Property<T> as a writable reference; the property must be present and have the right type. More...
 
bool isObjectUpToDateWithProperties () const
 Returns true if no property's value has changed since the last time setObjectIsUpToDateWithProperties() was called. More...
 
void readObjectFromXMLNodeOrFile (SimTK::Xml::Element &objectElement, int versionNumber)
 We're given an XML element from which we are to populate this Object. More...
 
virtual void updateFromXMLNode (SimTK::Xml::Element &objectElement, int versionNumber)
 Use this method to deserialize an object from a SimTK::Xml::Element. More...
 
void updateXMLNode (SimTK::Xml::Element &parent, const AbstractProperty *prop=nullptr) const
 Serialize this object into the XML node that represents it. More...
 
bool getInlined () const
 Inlined means an in-memory Object that is not associated with an XMLDocument. More...
 
void setInlined (bool aInlined, const std::string &aFileName="")
 Mark this as inlined or not and optionally provide a file name to associate with the new XMLDocument for the non-inline case. More...
 
std::string getDocumentFileName () const
 If there is a document associated with this object then return the file name maintained by the document. More...
 
int getDocumentFileVersion () const
 If there is a document associated with this object then return its version number. More...
 
void setAllPropertiesUseDefault (bool aUseDefault)
 
bool print (const std::string &fileName) const
 Write this Object into an XML file of the given name; conventionally the suffix to use is ".osim". More...
 
std::string dump () const
 dump the XML representation of this Object into an std::string and return it. More...
 
virtual bool isA (const char *type) const
 The default implementation returns true only if the supplied string is "Object"; each Object-derived class overrides this to match its own class name. More...
 
const std::string & toString () const
 Wrapper to be used on Java side to display objects in tree; this returns just the object's name. More...
 
PropertySetgetPropertySet ()
 OBSOLETE: Get a reference to the PropertySet maintained by the Object. More...
 
const PropertySetgetPropertySet () const
 

Detailed Description

The abstract Component class defines the interface used to add computational elements to the underlying SimTK::System (MultibodySystem).

It specifies the interface that components must satisfy in order to be part of the system and provides a series of helper methods for adding variables (state, discrete, cache, ...) to the underlying system. As such, Component handles all of the bookkeeping of system indices and provides convenience access to variable values (incl. derivatives) via their names as strings.

System and State

The MultibodySystem and its State are defined by Simbody (ref ...). Briefly, a System represents the mathematical equations that specify the behavior of a computational model. The State is a collection of all the variables that uniquely define the unknowns in the system equations. Consider a single differential equation as a system, while a single set of variable values that satisfy the equation is a state of that system. These could be values for joint coordinates, their speeds, as well other variables that govern the system dynamics (e.g. muscle activation and fiber-length variables that dictate muscle force). These variables are called continuous state variables in Simbody, but are more simply referred to as StateVariables in OpenSim. Component provides services to define and access its StateVariables and specify their dynamics (derivatives with respect to time) that are automatically and simultaneously integrated with the MultibodySystem dynamics. Common operations to integrate, take the max or min, or to delay a signal, etc. require internal variables to perform their calculations and these are also held in the State. Simbody provides the infrastructure to ensure that calculations are kept up-to-date with the state variable values.

There are other types of "State" variables such as a flag (or options) that enables a component to be disabled or for a muscle force to be overridden and and these are identified as ModelingOptions since they may change the modeled dynamics of the component. Component provides services that enable developers of components to define additional ModelingOptions.

Discrete variables

Often a component requires input from an outside source (precomputed data from a file, another program, or interaction from a user) in which case these variables do not have dynamics (differential eqns.) known to the component, but are necessary to describe the dynamical "state" of the system. An example, is a throttle component (a "controller" that provides an actuator, e.g. a motor, with a control signal like a voltage or current) which it gets as direct input from the user (via a joystick, key press, etc..). The throttle controls the motor torque output and therefore the behavior of the model. The input by the user to the throttle the motor (the controls) is necessary to specify the model dynamics at any instant and therefore are considered part of the State. In OpenSim they are simply referred to as DiscreteVariables. The Component provides services to enable developers of components to define and access its DiscreteVariables.

Cache variables

Fast and efficient simulations also require computationally expensive calculations to be performed only when necessary. Often the result of an expensive calculation can be reused many times over, while the variables it is dependent on remain fixed. The concept of holding onto these values is called caching and the variables that hold these values are call CacheVariables. It is important to note, that cache variables are not state variables. Cache variables can always be recomputed exactly from the State. OpenSim uses the Simbody infrastructure to manage cache variables and their validity. Component provides a simplified interface to define and access CacheVariables.

Stages

Many modeling and simulation codes put the onus on users and component creators to manage the validity of cache variables, which is likely to lead to undetectable errors where cache values are stale (calculated based on past state variable values). Simbody, on the other hand, provides a more strict infrastructure to make it easy to exploit the efficiencies of caching while reducing the risks of validity errors. To do this, Simbody employs the concept of computational stages to "realize" (or compute) a model's system to a particular stage requires cached quantities up to and including the stage to to computed/specified. Simbody utilizes nine realization stages (SimTK::Stage::)

  1. Topology finalize System with "slots" for most variables (above)
  2. Model specify modeling choices
  3. Instance specify modifiable model parameters
  4. Time compute time dependent quantities
  5. Position compute position dependent quantities
  6. Velocity compute velocity dependent quantities
  7. Dynamics compute system applied forces and dependent quantities
  8. Acceleration compute system accelerations and all other derivatives
  9. Report compute quantities for reporting/output

The Component interface is automatically invoked by the System and its realizations. Component users and most developers need not concern themselves with Topology, Model or Instance stages. That interaction is managed by Component when component creators implement extendAddToSystem() and use the services provided by Component. Component creators do need to determine and specify stage dependencies for Discrete and CacheVariables that they add to their components. For example, the throttle controller reads its value from user input and it is valid for all calculations as long as time does not change. If the simulation (via numerical integration) steps forward (or backward for a trial step) and updates the state, the control from a previous state (time) should be invalid and an error generated for trying to access the DiscreteVariable for the control value. To do this one specifies the "invalidates" stage (e.g. SimTK::Stage::Time) for a DiscreteVariable when the variable is added to the Component. A subsequent change to that variable will invalidate all state cache entries at that stage or higher. For example, if a DiscreteVariable is declared to invalidate Stage::Position then changing it will invalidate cache entries that depend on positions, velocities, forces, and accelerations.

Similar principles apply to CacheVariables, which requires a "dependsOn" stage to be specified when a CacheVariable is added to the component. In this case, the cache variable "shadows" the State (unlike a DiscreteVariable, which is a part of the State) holding already-computed state-dependent values so that they do not need to be recomputed until the state changes. Accessing the CacheVariable in a State whose current stage is lower than that CacheVariable's specified dependsOn stage will trigger an exception. It is up to the component to update the value of the cache variable. Component provides methods to check if the cache is valid, update its value and then to mark it as valid.

The interface of this class

The primary responsibility of a Component is to add its computational representation(s) to the underlying SimTK::System by implementing extendAddToSystem().

Additional methods provide support for adding modeling options, state and cache variables.

Public methods enable access to component variables via their names.

Subcomponents

A Component can have any number of Components within it; we call these subcomponents. Subcomponents can also contain their own subcomponents as well. There are three categories of subcomponents, which vary in whether they are configurable and fixed in number:

  • property subcomponents Any Property in a Component that is of type Component is a subcomponent. This includes list properties and Sets. This is the most common category of subcomponent, and its distinguishing feature is that these subcomponents are configurable by the user of this component. These subcomponents appear in the XML for this component, and can be modified in XML or through the API. They are also not fixed in number; users can add more property subcomponents to an existing component (though it is possible to enforce a fixed number by using one-value properties or limiting the size of a list property). The bodies, joints, forces, etc. in a Model's BodySet, JointSet, ForceSet, etc. are all examples of property subcomponents. This category of subcomponent is the most similar to what was available pre-v4.0.
  • member subcomponents These are not configurable by the user of this Component, and can only be modified by this Component. You can still access member subcomponents through the API, but only the component containing the subcomponents can modify them. Any Component class can have any number of member subcomponents, but this number is fixed for every instance of the component.
  • adopted subcomponents These are not configurable (does not appear in XML) and not fixed in number. For example, a component can decide, based on other aspects of the model, that it needs to create a new subcomponent. This can be done using adopted subcomponents.

Also, any specific Component can end up in any of these three categories. That is, if you have a MySpecialForce Component, any other Component can have it as a property subcomponent, a member subcomponent, or as an adopted subcomponent.

Author
Ajay Seth, Michael Sherman, Chris Dembia

Member Function Documentation

◆ clone()

Component* OpenSim::Component::clone ( ) const
overridepure virtual

Create a new heap-allocated copy of the concrete object to which this Object refers.

It is up to the caller to delete the returned object when no longer needed. Every concrete object deriving from Object implements this pure virtual method automatically, via the declaration macro it invokes (e.g., OpenSim_DECLARE_CONCRETE_OBJECT()). Note that the concrete class overrides modify the return type to be a pointer to the concrete object; that still overrides the base class method because the return type is covariant with (that is, derives from) Object.

Implements OpenSim::Object.

Implemented in OpenSim::WrapObject, OpenSim::UnilateralConstraint, OpenSim::Joint, OpenSim::Constraint, OpenSim::TwoFrameLinker< C, F >, OpenSim::TwoFrameLinker< Force, PhysicalFrame >, OpenSim::TwoFrameLinker< Constraint, PhysicalFrame >, OpenSim::Probe, OpenSim::Point, OpenSim::PhysicalFrame, OpenSim::OffsetFrame< C >, OpenSim::OffsetFrame< PhysicalFrame >, OpenSim::Muscle, OpenSim::ModelComponent, OpenSim::AnalyticGeometry, OpenSim::Geometry, OpenSim::Frame, OpenSim::Force, OpenSim::ContactGeometry, OpenSim::ScalarActuator, OpenSim::Actuator, OpenSim::ActivationFiberLengthMuscle_Deprecated, OpenSim::ActivationFiberLengthMuscle, OpenSim::AbstractPathPoint, OpenSim::Controller, OpenSim::StationPlaneContactForce, OpenSim::Reporter< InputT >, OpenSim::Reporter< T >, OpenSim::Reporter< SimTK::Real >, OpenSim::AbstractReporter, OpenSim::MuscleActivationDynamics, OpenSim::CorrectionController, OpenSim::CMC, OpenSim::WrapTorus, OpenSim::WrapSphere, OpenSim::WrapEllipsoid, OpenSim::WrapCylinder, OpenSim::PathWrapPoint, OpenSim::StatesTrajectoryReporter, OpenSim::WeldJoint, OpenSim::WeldConstraint, OpenSim::UniversalJoint, OpenSim::SliderJoint, OpenSim::ScapulothoracicJoint, OpenSim::RollingOnSurfaceConstraint, OpenSim::PointOnLineConstraint, OpenSim::PointConstraint, OpenSim::PlanarJoint, OpenSim::PinJoint, OpenSim::GimbalJoint, OpenSim::FreeJoint, OpenSim::EllipsoidJoint, OpenSim::CustomJoint, OpenSim::CoordinateCouplerConstraint, OpenSim::Coordinate, OpenSim::ConstantDistanceConstraint, OpenSim::Body, OpenSim::BallJoint, OpenSim::ExperimentalMarker, OpenSim::ExperimentalFrame, OpenSim::Umberger2010MuscleMetabolicsProbe, OpenSim::SystemEnergyProbe, OpenSim::Station, OpenSim::SmoothSphereHalfSpaceForce, OpenSim::PrescribedForce, OpenSim::PointToPointSpring, OpenSim::PhysicalOffsetFrame, OpenSim::PathSpring, OpenSim::PathPoint, OpenSim::PathActuator, OpenSim::MuscleActiveFiberPowerProbe, OpenSim::MovingPathPoint, OpenSim::ModelComponentSet< T >, OpenSim::ModelComponentSet< ModelComponent >, OpenSim::Marker, OpenSim::Ligament, OpenSim::JointInternalPowerProbe, OpenSim::HuntCrossleyForce, OpenSim::HuntCrossleyForce, OpenSim::HuntCrossleyForce, OpenSim::Ground, OpenSim::GeometryPath, OpenSim::FrameGeometry, OpenSim::Mesh, OpenSim::Brick, OpenSim::Torus, OpenSim::Cone, OpenSim::Cylinder, OpenSim::Ellipsoid, OpenSim::Sphere, OpenSim::Arrow, OpenSim::LineGeometry, OpenSim::FunctionBasedBushingForce, OpenSim::ExternalForce, OpenSim::ExpressionBasedPointToPointForce, OpenSim::ExpressionBasedCoordinateForce, OpenSim::ExpressionBasedBushingForce, OpenSim::ElasticFoundationForce, OpenSim::ElasticFoundationForce, OpenSim::ElasticFoundationForce, OpenSim::CoordinateLimitForce, OpenSim::ContactSphere, OpenSim::ContactMesh, OpenSim::ContactHalfSpace, OpenSim::ConditionalPathPoint, OpenSim::ComponentSet, OpenSim::BushingForce, OpenSim::Blankevoort1991Ligament, OpenSim::Bhargava2004SmoothedMuscleMetabolics, OpenSim::Bhargava2004SmoothedMuscleMetabolics_MuscleParameters, OpenSim::Bhargava2004MuscleMetabolicsProbe, OpenSim::ActuatorPowerProbe, OpenSim::ActuatorForceProbe, OpenSim::PrescribedController, OpenSim::ControlSetController, OpenSim::EspositoMiller2018Force, OpenSim::MeyerFregly2016Force, OpenSim::AckermannVanDenBogert2010Force, OpenSim::PositionMotion, OpenSim::DiscreteForces, OpenSim::DiscreteController, OpenSim::AccelerationMotion, OpenSim::TableSource_< ET >, OpenSim::SignalGenerator, OpenSim::Set< ModelComponent, ModelComponent >, OpenSim::ConsoleReporter_< T >, OpenSim::TableReporter_< InputT, ValueT >, OpenSim::ZerothOrderMuscleActivationDynamics, OpenSim::TorqueActuator, OpenSim::Thelen2003Muscle_Deprecated, OpenSim::Thelen2003Muscle, OpenSim::SpringGeneralizedForce, OpenSim::Schutte1993Muscle_Deprecated, OpenSim::RigidTendonMuscle, OpenSim::PointToPointActuator, OpenSim::PointActuator, OpenSim::MuscleFixedWidthPennationModel, OpenSim::MuscleFirstOrderActivationDynamicModel, OpenSim::Millard2012EquilibriumMuscle, OpenSim::Millard2012AccelerationMuscle, OpenSim::McKibbenActuator, OpenSim::FirstOrderMuscleActivationDynamics, OpenSim::Delp1990Muscle_Deprecated, OpenSim::DeGrooteFregly2016Muscle, OpenSim::CoordinateActuator, OpenSim::ConstantMuscleActivation, OpenSim::ClutchedPathSpring, OpenSim::BodyActuator, and OpenSim::ActivationCoordinateActuator.

◆ getClassName()

static const std::string& OpenSim::Component::getClassName ( )
inlinestatic

This returns "Component"

See getConcreteClassName() if you want the class name of the underlying concrete object instead.

◆ getConcreteClassName()

const std::string& OpenSim::Component::getConcreteClassName ( ) const
overridepure virtual

Returns the class name of the concrete Object-derived class of the actual object referenced by this Object, as a string.

This is the string that is used as the tag for this concrete object in an XML file. Every concrete class derived from Object automatically overrides this method via the declaration macro it uses. See getClassName() to get the class name of the referencing (possibly abstract) class rather than the concrete object.

See also
getClassName()

Implements OpenSim::Object.

Implemented in OpenSim::WrapObject, OpenSim::UnilateralConstraint, OpenSim::Joint, OpenSim::Constraint, OpenSim::TwoFrameLinker< C, F >, OpenSim::TwoFrameLinker< Force, PhysicalFrame >, OpenSim::TwoFrameLinker< Constraint, PhysicalFrame >, OpenSim::Probe, OpenSim::Point, OpenSim::PhysicalFrame, OpenSim::OffsetFrame< C >, OpenSim::OffsetFrame< PhysicalFrame >, OpenSim::Muscle, OpenSim::ModelComponent, OpenSim::AnalyticGeometry, OpenSim::Geometry, OpenSim::Frame, OpenSim::Force, OpenSim::ContactGeometry, OpenSim::ScalarActuator, OpenSim::Actuator, OpenSim::ActivationFiberLengthMuscle_Deprecated, OpenSim::ActivationFiberLengthMuscle, OpenSim::AbstractPathPoint, OpenSim::Controller, OpenSim::StationPlaneContactForce, OpenSim::Reporter< InputT >, OpenSim::Reporter< T >, OpenSim::Reporter< SimTK::Real >, OpenSim::AbstractReporter, OpenSim::MuscleActivationDynamics, OpenSim::CorrectionController, OpenSim::CMC, OpenSim::WrapTorus, OpenSim::WrapSphere, OpenSim::WrapEllipsoid, OpenSim::WrapCylinder, OpenSim::PathWrapPoint, OpenSim::StatesTrajectoryReporter, OpenSim::WeldJoint, OpenSim::WeldConstraint, OpenSim::UniversalJoint, OpenSim::SliderJoint, OpenSim::ScapulothoracicJoint, OpenSim::RollingOnSurfaceConstraint, OpenSim::PointOnLineConstraint, OpenSim::PointConstraint, OpenSim::PlanarJoint, OpenSim::PinJoint, OpenSim::GimbalJoint, OpenSim::FreeJoint, OpenSim::EllipsoidJoint, OpenSim::CustomJoint, OpenSim::CoordinateCouplerConstraint, OpenSim::Coordinate, OpenSim::ConstantDistanceConstraint, OpenSim::Body, OpenSim::BallJoint, OpenSim::ExperimentalMarker, OpenSim::ExperimentalFrame, OpenSim::Umberger2010MuscleMetabolicsProbe, OpenSim::SystemEnergyProbe, OpenSim::Station, OpenSim::SmoothSphereHalfSpaceForce, OpenSim::PrescribedForce, OpenSim::PointToPointSpring, OpenSim::PhysicalOffsetFrame, OpenSim::PathSpring, OpenSim::PathPoint, OpenSim::PathActuator, OpenSim::MuscleActiveFiberPowerProbe, OpenSim::MovingPathPoint, OpenSim::ModelComponentSet< T >, OpenSim::ModelComponentSet< ModelComponent >, OpenSim::Marker, OpenSim::Ligament, OpenSim::JointInternalPowerProbe, OpenSim::HuntCrossleyForce, OpenSim::HuntCrossleyForce, OpenSim::HuntCrossleyForce, OpenSim::Ground, OpenSim::GeometryPath, OpenSim::FrameGeometry, OpenSim::Mesh, OpenSim::Brick, OpenSim::Torus, OpenSim::Cone, OpenSim::Cylinder, OpenSim::Ellipsoid, OpenSim::Sphere, OpenSim::Arrow, OpenSim::LineGeometry, OpenSim::FunctionBasedBushingForce, OpenSim::ExternalForce, OpenSim::ExpressionBasedPointToPointForce, OpenSim::ExpressionBasedCoordinateForce, OpenSim::ExpressionBasedBushingForce, OpenSim::ElasticFoundationForce, OpenSim::ElasticFoundationForce, OpenSim::ElasticFoundationForce, OpenSim::CoordinateLimitForce, OpenSim::ContactSphere, OpenSim::ContactMesh, OpenSim::ContactHalfSpace, OpenSim::ConditionalPathPoint, OpenSim::ComponentSet, OpenSim::BushingForce, OpenSim::Blankevoort1991Ligament, OpenSim::Bhargava2004SmoothedMuscleMetabolics, OpenSim::Bhargava2004SmoothedMuscleMetabolics_MuscleParameters, OpenSim::Bhargava2004MuscleMetabolicsProbe, OpenSim::ActuatorPowerProbe, OpenSim::ActuatorForceProbe, OpenSim::PrescribedController, OpenSim::ControlSetController, OpenSim::EspositoMiller2018Force, OpenSim::MeyerFregly2016Force, OpenSim::AckermannVanDenBogert2010Force, OpenSim::PositionMotion, OpenSim::DiscreteForces, OpenSim::DiscreteController, OpenSim::AccelerationMotion, OpenSim::TableSource_< ET >, OpenSim::SignalGenerator, OpenSim::Set< ModelComponent, ModelComponent >, OpenSim::ConsoleReporter_< T >, OpenSim::TableReporter_< InputT, ValueT >, OpenSim::ZerothOrderMuscleActivationDynamics, OpenSim::TorqueActuator, OpenSim::Thelen2003Muscle_Deprecated, OpenSim::Thelen2003Muscle, OpenSim::SpringGeneralizedForce, OpenSim::Schutte1993Muscle_Deprecated, OpenSim::RigidTendonMuscle, OpenSim::PointToPointActuator, OpenSim::PointActuator, OpenSim::MuscleFixedWidthPennationModel, OpenSim::MuscleFirstOrderActivationDynamicModel, OpenSim::Millard2012EquilibriumMuscle, OpenSim::Millard2012AccelerationMuscle, OpenSim::McKibbenActuator, OpenSim::FirstOrderMuscleActivationDynamics, OpenSim::Delp1990Muscle_Deprecated, OpenSim::DeGrooteFregly2016Muscle, OpenSim::CoordinateActuator, OpenSim::ConstantMuscleActivation, OpenSim::ClutchedPathSpring, OpenSim::BodyActuator, and OpenSim::ActivationCoordinateActuator.

Referenced by OpenSim::ConnecteeNotSpecified::ConnecteeNotSpecified().

◆ safeDownCast()

static Component* OpenSim::Component::safeDownCast ( OpenSim::Object obj)
inlinestatic

For use in MATLAB and Python to access the concrete class.

Example: cObj = Component.safeDownCast(obj). This is equivalent to dynamic_cast<Component*>(obj) in C++.


The documentation for this class was generated from the following file: