Simbody
3.4 (development)
|
Every custom force requires implementation of a class that is derived from this abstract class. See Force::Custom for details. More...
#include <Force_Custom.h>
Public Member Functions | |
virtual | ~Implementation () |
virtual void | calcForce (const State &state, Vector_< SpatialVec > &bodyForces, Vector_< Vec3 > &particleForces, Vector &mobilityForces) const =0 |
Calculate the force for a given state. | |
virtual Real | calcPotentialEnergy (const State &state) const =0 |
Calculate this force's contribution to the potential energy of the System. | |
virtual bool | dependsOnlyOnPositions () const |
Get whether this force depends only on the position variables (q), not on the velocies (u) or auxiliary variables (z). | |
virtual void | calcDecorativeGeometryAndAppend (const State &state, Stage stage, Array_< DecorativeGeometry > &geometry) const |
Override this if you want to generate some geometry for the visualizer to display. | |
virtual void | realizeTopology (State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizeModel (State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizeInstance (const State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizeTime (const State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizePosition (const State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizeVelocity (const State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizeDynamics (const State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizeAcceleration (const State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. | |
virtual void | realizeReport (const State &state) const |
The following methods may optionally be overridden to do specialized realization for a Force. |
Every custom force requires implementation of a class that is derived from this abstract class. See Force::Custom for details.
virtual SimTK::Force::Custom::Implementation::~Implementation | ( | ) | [inline, virtual] |
virtual void SimTK::Force::Custom::Implementation::calcForce | ( | const State & | state, |
Vector_< SpatialVec > & | bodyForces, | ||
Vector_< Vec3 > & | particleForces, | ||
Vector & | mobilityForces | ||
) | const [pure virtual] |
Calculate the force for a given state.
state | the State for which to calculate the force |
bodyForces | spatial forces on MobilizedBodies are accumulated in this. To apply a force to a body, add it to the appropriate element of this vector. |
particleForces | forces on particles are accumulated in this. Since particles are not yet implemented, this is ignored. |
mobilityForces | forces on individual mobilities (elements of the state's u vector) are accumulated in this. To apply a force to a mobility, add it to the appropriate element of this vector. |
virtual Real SimTK::Force::Custom::Implementation::calcPotentialEnergy | ( | const State & | state | ) | const [pure virtual] |
virtual bool SimTK::Force::Custom::Implementation::dependsOnlyOnPositions | ( | ) | const [inline, virtual] |
Get whether this force depends only on the position variables (q), not on the velocies (u) or auxiliary variables (z).
The default implementation returns false. If the force depends only on positions, you should override this to return true. This allows force calculations to be optimized in some cases.
virtual void SimTK::Force::Custom::Implementation::realizeTopology | ( | State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizeModel | ( | State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizeInstance | ( | const State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizeTime | ( | const State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizePosition | ( | const State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizeVelocity | ( | const State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizeDynamics | ( | const State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizeAcceleration | ( | const State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::realizeReport | ( | const State & | state | ) | const [inline, virtual] |
The following methods may optionally be overridden to do specialized realization for a Force.
virtual void SimTK::Force::Custom::Implementation::calcDecorativeGeometryAndAppend | ( | const State & | state, |
Stage | stage, | ||
Array_< DecorativeGeometry > & | geometry | ||
) | const [inline, virtual] |
Override this if you want to generate some geometry for the visualizer to display.
Be sure to append the geometry to the list.