All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Attributes | List of all members
SurgSim::Physics::Spring Class Referenceabstract

Base class for all springs It handles the node ids to which it is connected and requires all derived classes to compute the force and its derivatives (the stiffness and damping matrices) A extra method also exist to compute all of them at once for performance purposes. More...

#include <SurgSim/Physics/Spring.h>

Inheritance diagram for SurgSim::Physics::Spring:
Inheritance graph
[legend]
Collaboration diagram for SurgSim::Physics::Spring:
Collaboration graph
[legend]

Public Member Functions

virtual ~Spring ()
 Virtual destructor. More...
 
size_t getNumNodes () const
 Gets the number of nodes the spring is connecting. More...
 
size_t getNodeId (size_t springNodeId) const
 Gets the springNodeId-th node id. More...
 
const std::vector< size_t > & getNodeIds () const
 Gets the node ids for this spring. More...
 
virtual void addForce (const SurgSim::Math::OdeState &state, SurgSim::Math::Vector *F, double scale=1.0)=0
 Adds the spring force (computed for a given state) to a complete system force vector F (assembly) More...
 
virtual void addDamping (const SurgSim::Math::OdeState &state, SurgSim::Math::Matrix *D, double scale=1.0)=0
 Adds the spring damping matrix D (= -df/dv) (computed for a given state) to a complete system damping matrix D (assembly) More...
 
virtual void addStiffness (const SurgSim::Math::OdeState &state, SurgSim::Math::Matrix *K, double scale=1.0)=0
 Adds the spring stiffness matrix K (= -df/dx) (computed for a given state) to a complete system stiffness matrix K (assembly) More...
 
virtual void addFDK (const SurgSim::Math::OdeState &state, SurgSim::Math::Vector *F, SurgSim::Math::Matrix *D, SurgSim::Math::Matrix *K)=0
 Adds the spring force vector, mass, stiffness and damping matrices (computed for a given state) into a complete system data structure F, D, K (assembly) More...
 
virtual void addMatVec (const SurgSim::Math::OdeState &state, double alphaD, double alphaK, const SurgSim::Math::Vector &x, SurgSim::Math::Vector *F)=0
 Adds the spring matrix-vector contribution F += (alphaD.D + alphaK.K).x (computed for a given state) into a complete system data structure F (assembly) More...
 

Protected Attributes

std::vector< size_t > m_nodeIds
 Node ids connected by this spring. More...
 

Detailed Description

Base class for all springs It handles the node ids to which it is connected and requires all derived classes to compute the force and its derivatives (the stiffness and damping matrices) A extra method also exist to compute all of them at once for performance purposes.

It holds on to the actual computed values (m_f, m_K, m_D) as its size is not predefined from outside and would requires intensive (de)allocation or a temporary variable anyway

Constructor & Destructor Documentation

virtual SurgSim::Physics::Spring::~Spring ( )
inlinevirtual

Virtual destructor.

Member Function Documentation

virtual void SurgSim::Physics::Spring::addDamping ( const SurgSim::Math::OdeState state,
SurgSim::Math::Matrix D,
double  scale = 1.0 
)
pure virtual

Adds the spring damping matrix D (= -df/dv) (computed for a given state) to a complete system damping matrix D (assembly)

Parameters
stateThe state to compute the damping matrix with
[in,out]DThe complete system damping matrix to add the spring damping matrix into
scaleA factor to scale the added damping matrix with

Implemented in SurgSim::Physics::LinearSpring.

virtual void SurgSim::Physics::Spring::addFDK ( const SurgSim::Math::OdeState state,
SurgSim::Math::Vector F,
SurgSim::Math::Matrix D,
SurgSim::Math::Matrix K 
)
pure virtual

Adds the spring force vector, mass, stiffness and damping matrices (computed for a given state) into a complete system data structure F, D, K (assembly)

Parameters
stateThe state to compute everything with
[in,out]FThe complete system force vector to add the spring force into
[in,out]DThe complete system damping matrix to add the spring damping matrix into
[in,out]KThe complete system stiffness matrix to add the spring stiffness matrix into

Implemented in SurgSim::Physics::LinearSpring.

virtual void SurgSim::Physics::Spring::addForce ( const SurgSim::Math::OdeState state,
SurgSim::Math::Vector F,
double  scale = 1.0 
)
pure virtual

Adds the spring force (computed for a given state) to a complete system force vector F (assembly)

Parameters
stateThe state to compute the force with
[in,out]FThe complete system force vector to add the spring force into
scaleA factor to scale the added force with

Implemented in SurgSim::Physics::LinearSpring.

virtual void SurgSim::Physics::Spring::addMatVec ( const SurgSim::Math::OdeState state,
double  alphaD,
double  alphaK,
const SurgSim::Math::Vector x,
SurgSim::Math::Vector F 
)
pure virtual

Adds the spring matrix-vector contribution F += (alphaD.D + alphaK.K).x (computed for a given state) into a complete system data structure F (assembly)

Parameters
stateThe state to compute everything with
alphaDThe scaling factor for the damping contribution
alphaKThe scaling factor for the stiffness contribution
xA complete system vector to use as the vector in the matrix-vector multiplication
[in,out]FThe complete system force vector to add the element matrix-vector contribution into

Implemented in SurgSim::Physics::LinearSpring.

virtual void SurgSim::Physics::Spring::addStiffness ( const SurgSim::Math::OdeState state,
SurgSim::Math::Matrix K,
double  scale = 1.0 
)
pure virtual

Adds the spring stiffness matrix K (= -df/dx) (computed for a given state) to a complete system stiffness matrix K (assembly)

Parameters
stateThe state to compute the stiffness matrix with
[in,out]KThe complete system stiffness matrix to add the spring stiffness matrix into
scaleA factor to scale the added stiffness matrix with

Implemented in SurgSim::Physics::LinearSpring.

size_t SurgSim::Physics::Spring::getNodeId ( size_t  springNodeId) const
inline

Gets the springNodeId-th node id.

Returns
The requested node id
const std::vector<size_t>& SurgSim::Physics::Spring::getNodeIds ( ) const
inline

Gets the node ids for this spring.

Returns
A vector containing the node ids on which the spring is attached
size_t SurgSim::Physics::Spring::getNumNodes ( ) const
inline

Gets the number of nodes the spring is connecting.

Returns
The number of nodes

Member Data Documentation

std::vector<size_t> SurgSim::Physics::Spring::m_nodeIds
protected

Node ids connected by this spring.


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