SurgSim::Physics::DeformableRepresentation Class Referenceabstract

Base class for all deformable representations MassSprings, Finite Element Models,... More...

`#include <SurgSim/Physics/DeformableRepresentation.h>`

Inheritance diagram for SurgSim::Physics::DeformableRepresentation:

## Public Member Functions

| DeformableRepresentation (const std::string &name)
| Constructor. More...
virtual | ~DeformableRepresentation ()
| Destructor. More...
void | resetState () override
| Reset the representation to its initial/default state. More...
virtual void | setInitialState (std::shared_ptr< SurgSim::Math::OdeState > initialState)
| Initialize the state variables to initialState. More...
virtual const std::shared_ptr< SurgSim::Math::OdeState > | getCurrentState () const
| Return the current state of the deformable representation. More...
virtual const std::shared_ptr< SurgSim::Math::OdeState > | getPreviousState () const
| Return the previous state of the deformable representation. More...
virtual const std::shared_ptr< SurgSim::Math::OdeState > | getFinalState () const
| Return the final state of the deformable representation. More...
virtual void | interpolatePreviousState (double t)
| Declare a new previous state by interpolating between the old previous state and the current state using parametric time variable t. More...
size_t | getNumDofPerNode () const
| Gets the number of degrees of freedom per node. More...
void | setIntegrationScheme (SurgSim::Math::IntegrationScheme integrationScheme)
| Sets the numerical integration scheme. More...
SurgSim::Math::IntegrationScheme | getIntegrationScheme () const
| Gets the numerical integration scheme. More...
std::shared_ptr< SurgSim::Math::OdeSolver > | getOdeSolver () const
void | setLinearSolver (SurgSim::Math::LinearSolver linearSolver)
| Sets the linear algebraic solver. More...
SurgSim::Math::LinearSolver | getLinearSolver () const
| Gets the linear algebraic solver. More...
virtual void | addExternalGeneralizedForce (std::shared_ptr< Localization > localization, const SurgSim::Math::Vector &generalizedForce, const SurgSim::Math::Matrix &K=SurgSim::Math::Matrix(), const SurgSim::Math::Matrix &D=SurgSim::Math::Matrix())=0
| Add an external generalized force applied on a specific localization. More...
const SurgSim::Math::Vector & | getExternalGeneralizedForce () const
const SurgSim::Math::SparseMatrix & | getExternalGeneralizedStiffness () const
const SurgSim::Math::SparseMatrix & | getExternalGeneralizedDamping () const
Math::Matrix | applyCompliance (const Math::OdeState &state, const Math::Matrix &b) override
| Calculate the product C.b where C is the compliance matrix with boundary conditions applied. More...
virtual const SurgSim::Math::Matrix & | getComplianceMatrix () const
| Gets the compliance matrix associated with motion. More...
void | update (double dt) override
| Update the representation state to the current time step. More...
void | afterUpdate (double dt) override
| Postprocessing done after the update call This needs to be called from the outside usually from a Computation. More...
void | applyCorrection (double dt, const Eigen::VectorBlock< SurgSim::Math::Vector > &deltaVelocity) override
| Update the Representation's current position and velocity using a time interval, dt, and change in velocity, deltaVelocity. More...
void | deactivateAndReset ()
| Deactivate and call resetState. More...
void | setCollisionRepresentation (std::shared_ptr< SurgSim::Collision::Representation > representation) override
| Set the collision representation for this physics representation, when the collision object is involved in a collision, the collision should be resolved inside the dynamics calculation. More...
void | setLocalPose (const SurgSim::Math::RigidTransform3d &pose) override
| Set the pose of the representation with respect to the Scene Element. More...
Public Member Functions inherited from SurgSim::Physics::Representation
| Representation (const std::string &name)
| Constructor. More...
virtual | ~Representation ()
| Destructor. More...
size_t | getNumDof () const
| Query the object number of degrees of freedom. More...
void | setIsGravityEnabled (bool isGravityEnabled)
| Set the gravity enable flag. More...
bool | isGravityEnabled () const
| Get the gravity enable flag. More...
void | setIsDrivingSceneElementPose (bool isDrivingSceneElementPose)
| Set whether this Representation is controlling the pose of the SceneElement that it is part of. More...
bool | isDrivingSceneElementPose ()
| Query if this Representation is controlling the pose of the SceneElement that it is part of. More...
virtual void | beforeUpdate (double dt)
| Preprocessing done before the update call This needs to be called from the outside usually from a Computation. More...
virtual std::shared_ptr< Localization > | createLocalization (const SurgSim::DataStructures::Location &location)
| Computes a localized coordinate w.r.t this representation, given a Location object. More...
std::shared_ptr< SurgSim::Collision::Representation > | getCollisionRepresentation () const
std::shared_ptr< ConstraintImplementation > | getConstraintImplementation (SurgSim::Physics::ConstraintType type)
| Get a constraint implementation of the given type for this representation. More...
Public Member Functions inherited from SurgSim::Framework::Representation
| Representation (const std::string &name)
| Constructor. More...
virtual SurgSim::Math::RigidTransform3d | getLocalPose () const
| Get the pose of the representation with respect to the Scene Element. More...
virtual SurgSim::Math::RigidTransform3d | getPose () const
| Get the pose of the representation in world coordinates. More...
Public Member Functions inherited from SurgSim::Framework::Component
| Component (const std::string &name)
| Constructor. More...
virtual | ~Component ()
| Destructor. More...
std::string | getName () const
| Gets component name. More...
std::string | getFullName () const
| Gets a string containing the name of the Component and (if it has one) its SceneElement. More...
void | setName (const std::string &name)
| Sets the name of component. More...
boost::uuids::uuid | getUuid () const
| Gets the id of the component. More...
bool | isInitialized () const
bool | initialize (const std::weak_ptr< Runtime > &runtime)
| Initialize this component, this needs to be called before wakeUp() can be called. More...
bool | isAwake () const
bool | wakeUp ()
| Wakeup this component, this will be called when the component is inserted into the ComponentManager that is responsible for handling this component. More...
void | retire ()
| Retire this component, this will be called when the component is removed from the ComponentManager that is responsible for handling this component. More...
void | setScene (std::weak_ptr< Scene > scene)
| Sets the scene. More...
std::shared_ptr< Scene > | getScene ()
| Gets the scene. More...
void | setSceneElement (std::weak_ptr< SceneElement > sceneElement)
| Sets the scene element. More...
std::shared_ptr< SceneElement > | getSceneElement ()
| Gets the scene element. More...
std::shared_ptr< const SceneElement > | getSceneElement () const
| Gets the scene element, constant version. More...
std::shared_ptr< Runtime > | getRuntime () const
| Get the runtime which contains this component. More...
virtual std::string | getClassName () const
| The class name for this class, this being the base class it should return SurgSim::Framework::Component but this would make missing implemenentations of this hard to catch, therefore this calls SURGSIM_FAILURE. More...
std::shared_ptr< Component > | getSharedPtr ()
| Gets a shared pointer to this component. More...
virtual void | doRetire ()
| Interface to be implemented by derived classes Has a default implementation, does nothing. More...
bool | isActive () const
virtual void | setLocalActive (bool val)
| Set the component's active state. More...
bool | isLocalActive () const
Public Member Functions inherited from SurgSim::Framework::Accessible
| Accessible ()
| Default Constructor. More...
| ~Accessible ()
| Destructor. More...
template<class T >
T | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More...
boost::any | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found. More...
template<class T >
bool | getValue (const std::string &name, T *value) const
| Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More...
void | setValue (const std::string &name, const boost::any &value)
| Sets a value of a property that has setter. More...
bool | isReadable (const std::string &name) const
| Check whether a property is readable. More...
bool | isWriteable (const std::string &name) const
| Check whether a property is writable. More...
void | setGetter (const std::string &name, GetterType func)
| Sets a getter for a given property. More...
void | setSetter (const std::string &name, SetterType func)
| Sets a setter for a given property. More...
void | setAccessors (const std::string &name, GetterType getter, SetterType setter)
| Sets the accessors getter and setter in one function. More...
void | removeAccessors (const std::string &name)
| Removes all the accessors (getter and setter) for a given property. More...
void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty)
| Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More...
void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder)
| Sets the functions used to convert data from and to a YAML::Node. More...
void | setDecoder (const std::string &name, DecoderType decoder)
| Sets the functions used to convert data from a YAML::Node. More...
YAML::Node | encode () const
| Encode this Accessible to a YAML::Node. More...
void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >())
| Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More...
template<>
boost::any | getValue (const std::string &name) const
Public Member Functions inherited from SurgSim::Math::OdeEquation
virtual | ~OdeEquation ()
| Virtual destructor. More...
const std::shared_ptr< OdeState > | getInitialState () const
| Retrieves the ode initial conditions \((x0, v0)\) (i.e the initial state) More...
virtual void | updateFMDK (const OdeState &state, int options)
| Update the OdeEquation (and support data) based on the given state. More...
const Vector & | getF () const
const SparseMatrix & | getM () const
const SparseMatrix & | getD () const
const SparseMatrix & | getK () const

## Protected Member Functions

bool | doInitialize () override
| Interface to be implemented by derived classes. More...
bool | doWakeUp () override
| Interface to be implemented by derived classes. More...
virtual void | transformState (std::shared_ptr< SurgSim::Math::OdeState > state, const SurgSim::Math::RigidTransform3d &transform)=0
| Transform a state using a given transformation. More...
Protected Member Functions inherited from SurgSim::Physics::Representation
void | setNumDof (size_t numDof)
| Set the number of degrees of freedom. More...
const SurgSim::Math::Vector3d & | getGravity () const
| Get the gravity used by this Representation. More...
void | driveSceneElementPose (const SurgSim::Math::RigidTransform3d &pose)
| This conditionally updates that pose for the scenelement to the given pose The update gets exectuded if the representation actually has sceneelement and isDrivingScenElement() is true. More...
Protected Member Functions inherited from SurgSim::Framework::Component
virtual std::shared_ptr< PoseComponent > | getPoseComponent ()
| Get the PoseComponent for this component. More...
virtual std::shared_ptr< const PoseComponent > | getPoseComponent () const
| Get the PoseComponent for this component, constant access. More...
Protected Member Functions inherited from SurgSim::Math::OdeEquation
virtual void | computeF (const OdeState &state)=0
| Evaluation of the RHS function \(f(x, v)\) for a given state. More...
virtual void | computeM (const OdeState &state)=0
| Evaluation of the LHS matrix \(M(x,v)\) for a given state. More...
virtual void | computeD (const OdeState &state)=0
| Evaluation of \(D = -\frac{\partial f}{\partial v}(x,v)\) for a given state. More...
virtual void | computeK (const OdeState &state)=0
| Evaluation of \(K = -\frac{\partial f}{\partial x}(x,v)\) for a given state. More...
virtual void | computeFMDK (const OdeState &state)=0
| Evaluation of \(f(x,v)\), \(M(x,v)\), \(D = -\frac{\partial f}{\partial v}(x,v)\) and \(K = -\frac{\partial f}{\partial x}(x,v)\). More...

## Protected Attributes

std::shared_ptr< SurgSim::Math::OdeState > | m_previousState
| The previous state inside the calculation loop, this has no meaning outside of the loop. More...
std::shared_ptr< SurgSim::Math::OdeState > | m_currentState
| The currently calculated state inside the physics loop, after the whole calculation is done this will become m_finalState. More...
std::shared_ptr< SurgSim::Math::OdeState > | m_newState
| New state is a temporary variable to store the newly computed state. More...
std::shared_ptr< SurgSim::Math::OdeState > | m_finalState
| Last valid state (a.k.a final state) More...
size_t | m_numDofPerNode
| Number of degrees of freedom per node (varies per deformable model) More...
SurgSim::Math::IntegrationScheme | m_integrationScheme
| Numerical Integration scheme (dynamic explicit/implicit solver) More...
SurgSim::Math::LinearSolver | m_linearSolver
| Linear algebraic solver used. More...
std::shared_ptr< SurgSim::Math::OdeSolver > | m_odeSolver
| Ode solver (its type depends on the numerical integration scheme) More...
bool | m_hasExternalGeneralizedForce
| External generalized force, stiffness and damping applied on the deformable representation. More...
SurgSim::Math::Vector | m_externalGeneralizedForce
| External generalized force, stiffness and damping applied on the deformable representation. More...
SurgSim::Math::SparseMatrix | m_externalGeneralizedStiffness
| External generalized force, stiffness and damping applied on the deformable representation. More...
SurgSim::Math::SparseMatrix | m_externalGeneralizedDamping
| External generalized force, stiffness and damping applied on the deformable representation. More...
bool | m_previousHasExternalGeneralizedForce
| External generalized force, stiffness and damping applied on the deformable representation. More...
SurgSim::Math::SparseMatrix | m_previousExternalGeneralizedStiffness
| External generalized force, stiffness and damping applied on the deformable representation. More...
SurgSim::Math::SparseMatrix | m_previousExternalGeneralizedDamping
| External generalized force, stiffness and damping applied on the deformable representation. More...
Protected Attributes inherited from SurgSim::Physics::Representation
std::shared_ptr< SurgSim::Collision::Representation > | m_collisionRepresentation
| This entity's collision representation, these are usually very specific to the physics representation. More...
Protected Attributes inherited from SurgSim::Math::OdeEquation
std::shared_ptr< OdeState > | m_initialState
| The initial state (which defines the ODE initial conditions \((x0, v0)\)) More...
Vector | m_f
| The vector containing \(f(x, v)\). More...
SparseMatrix | m_M
| The matrix \(M(x,v)\). More...
SparseMatrix | m_D
| The The matrix \(D = -\frac{\partial f}{\partial v}(x,v)\). More...
SparseMatrix | m_K
| The The matrix \(K = -\frac{\partial f}{\partial x}(x,v)\). More...

## Private Member Functions

| DeformableRepresentation (const DeformableRepresentation &)
| NO copy constructor. More...
DeformableRepresentation & | operator= (const DeformableRepresentation &)
| NO assignment operator. More...

## Additional Inherited Members

Public Types inherited from SurgSim::Framework::Accessible
typedef std::function< boost::any(void)> | GetterType
typedef std::function< void(boost::any)> | SetterType
typedef std::function< YAML::Node(void)> | EncoderType
typedef std::function< void(const YAML::Node *)> | DecoderType
Public Types inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
typedef ObjectFactory1< Component, std::string > | FactoryType
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< Component, std::string >
static FactoryType & | getFactory ()

## Detailed Description

Base class for all deformable representations MassSprings, Finite Element Models,...

Note
  It is both a Physics::Representation and a Math::OdeEquation
  It holds the representation states (common to all deformable) except the initial state,
  which is being held by the OdeEquation (initial condition of the ode problem).
  It holds the initial pose, which should be set before setting the initial state so the states
  can be properly transformed.
  The current pose is always identity and therefore cannot be set. Calling setPose will raise an exception.
  It holds the force vector; the mass, damping and stiffness matrices
  Derived classes must implement the Representation API and the OdeEquation API, also set
  m_numDofPerNode and call Representation::setNumDof()

## Constructor & Destructor Documentation

## DeformableRepresentation() [1/2]

SurgSim::Physics::DeformableRepresentation::DeformableRepresentation | ( | const std::string & | name | ) |

explicit

Constructor.

Parameters

  name | The deformable representation's name

## ~DeformableRepresentation()

SurgSim::Physics::DeformableRepresentation::~DeformableRepresentation | ( |  | ) |

virtual

Destructor.

## DeformableRepresentation() [2/2]

SurgSim::Physics::DeformableRepresentation::DeformableRepresentation | ( | const DeformableRepresentation & |  | ) |

private

NO copy constructor.

## Member Function Documentation

## addExternalGeneralizedForce()

virtual void SurgSim::Physics::DeformableRepresentation::addExternalGeneralizedForce | ( | std::shared_ptr< Localization > | localization,
|  | const SurgSim::Math::Vector & | generalizedForce,
|  | const SurgSim::Math::Matrix & | K = `SurgSim::Math::Matrix()`,
|  | const SurgSim::Math::Matrix & | D = `SurgSim::Math::Matrix()`
| ) |  |

pure virtual

Add an external generalized force applied on a specific localization.

Parameters

  localization | where the generalized force is applied
  generalizedForce | The force to apply (of dimension getNumDofPerNode())
  K | The stiffness matrix associated with the generalized force (Jacobian of the force w.r.t dof's position)
  D | The damping matrix associated with the generalized force (Jacobian of the force w.r.t dof's velocity)

Implemented in SurgSim::Physics::MassSpringRepresentation, SurgSim::Physics::Fem1DRepresentation, SurgSim::Physics::Fem3DRepresentation, and SurgSim::Physics::Fem2DRepresentation.

## afterUpdate()

void SurgSim::Physics::DeformableRepresentation::afterUpdate | ( | double | dt | ) |

override virtual

Postprocessing done after the update call This needs to be called from the outside usually from a Computation.

Parameters

  dt | The time step (in seconds)

Reimplemented from SurgSim::Physics::Representation.

## applyCompliance()

Math::Matrix SurgSim::Physics::DeformableRepresentation::applyCompliance | ( | const Math::OdeState & | state,
|  | const Math::Matrix & | b
| ) |  |

override virtual

Calculate the product C.b where C is the compliance matrix with boundary conditions applied.

Note that this can be rewritten as (Bt)(M^-1)(B.b) = (Bt)((M^-1)(B.b)) = x, where (M^-1)(B.b) = y is simply the solution to M.y = B.b and Bt.y = x.

Parameters

  state | \((x, v)\) the current position and velocity to evaluate the various terms with
  b | The input matrix

Returns
  The matrix \(C.b\)

Implements SurgSim::Math::OdeEquation.

Reimplemented in SurgSim::Physics::FemRepresentation.

## applyCorrection()

void SurgSim::Physics::DeformableRepresentation::applyCorrection | ( | double | dt,
|  | const Eigen::VectorBlock< SurgSim::Math::Vector > & | deltaVelocity
| ) |  |

override virtual

Update the Representation's current position and velocity using a time interval, dt, and change in velocity, deltaVelocity.

This function typically is called in the physics pipeline (PhysicsManager::doUpdate) after solving the equations that enforce constraints when collisions occur. Specifically it is called in the PushResults::doUpdate step.

Parameters

  dt | The time step
  deltaVelocity | The block of a vector containing the correction to be applied to the velocity

Reimplemented from SurgSim::Physics::Representation.

## deactivateAndReset()

void SurgSim::Physics::DeformableRepresentation::deactivateAndReset | ( |  | ) |

Deactivate and call resetState.

## doInitialize()

bool SurgSim::Physics::DeformableRepresentation::doInitialize | ( |  | ) |

override protected virtual

Interface to be implemented by derived classes.

Returns
  True if component is initialized successfully; otherwise, false.

Reimplemented from SurgSim::Framework::Representation.

Reimplemented in SurgSim::Physics::FemRepresentation, SurgSim::Physics::MassSpringRepresentation, SurgSim::Physics::Fem3DRepresentation, SurgSim::Physics::Fem1DRepresentation, and SurgSim::Physics::Fem2DRepresentation.

## doWakeUp()

bool SurgSim::Physics::DeformableRepresentation::doWakeUp | ( |  | ) |

override protected virtual

Interface to be implemented by derived classes.

Returns
  True if component is woken up successfully; otherwise, false.

Reimplemented from SurgSim::Framework::Representation.

Reimplemented in SurgSim::Physics::Fem3DRepresentation.

## getComplianceMatrix()

const SurgSim::Math::Matrix & SurgSim::Physics::DeformableRepresentation::getComplianceMatrix | ( |  | ) | const

virtual

Gets the compliance matrix associated with motion.

Reimplemented in SurgSim::Physics::FemRepresentation.

## getCurrentState()

const std::shared_ptr< SurgSim::Math::OdeState > SurgSim::Physics::DeformableRepresentation::getCurrentState | ( |  | ) | const

virtual

Return the current state of the deformable representation.

Returns
  the current state

## getExternalGeneralizedDamping()

const SurgSim::Math::SparseMatrix & SurgSim::Physics::DeformableRepresentation::getExternalGeneralizedDamping | ( |  | ) | const

Returns
  the external generalized damping matrix

## getExternalGeneralizedForce()

const SurgSim::Math::Vector & SurgSim::Physics::DeformableRepresentation::getExternalGeneralizedForce | ( |  | ) | const

Returns
  the external generalized force vector

## getExternalGeneralizedStiffness()

const SurgSim::Math::SparseMatrix & SurgSim::Physics::DeformableRepresentation::getExternalGeneralizedStiffness | ( |  | ) | const

Returns
  the external generalized stiffness matrix

## getFinalState()

const std::shared_ptr< SurgSim::Math::OdeState > SurgSim::Physics::DeformableRepresentation::getFinalState | ( |  | ) | const

virtual

Return the final state of the deformable representation.

Returns
  the final state

## getIntegrationScheme()

SurgSim::Math::IntegrationScheme SurgSim::Physics::DeformableRepresentation::getIntegrationScheme | ( |  | ) | const

Gets the numerical integration scheme.

Returns
  The integration scheme currently in use

Note
  Default is SurgSim::Math::INTEGRATIONSCHEME_EULER_EXPLICIT

## getLinearSolver()

SurgSim::Math::LinearSolver SurgSim::Physics::DeformableRepresentation::getLinearSolver | ( |  | ) | const

Gets the linear algebraic solver.

Returns
  The linear solver currently in use

Note
  Default is SurgSim::Math::LINEARSOLVER_LU

## getNumDofPerNode()

size_t SurgSim::Physics::DeformableRepresentation::getNumDofPerNode | ( |  | ) | const

Gets the number of degrees of freedom per node.

Returns
  The number of degrees of freedom per node for this Deformable Representation

## getOdeSolver()

std::shared_ptr< SurgSim::Math::OdeSolver > SurgSim::Physics::DeformableRepresentation::getOdeSolver | ( |  | ) | const

Returns
  The ode solver (dependent on the integration scheme)

Note
  Will return nullptr if called before initialization.

## getPreviousState()

const std::shared_ptr< SurgSim::Math::OdeState > SurgSim::Physics::DeformableRepresentation::getPreviousState | ( |  | ) | const

virtual

Return the previous state of the deformable representation.

Returns
  the previous state

## interpolatePreviousState()

void SurgSim::Physics::DeformableRepresentation::interpolatePreviousState | ( | double | t | ) |

virtual

Declare a new previous state by interpolating between the old previous state and the current state using parametric time variable t.

Parameters

  t | parametric time at which to calculate the new state

## operator=()

DeformableRepresentation& SurgSim::Physics::DeformableRepresentation::operator= | ( | const DeformableRepresentation & |  | ) |

private

NO assignment operator.

## resetState()

void SurgSim::Physics::DeformableRepresentation::resetState | ( |  | ) |

override virtual

Reset the representation to its initial/default state.

Reimplemented from SurgSim::Physics::Representation.

## setCollisionRepresentation()

void SurgSim::Physics::DeformableRepresentation::setCollisionRepresentation | ( | std::shared_ptr< SurgSim::Collision::Representation > | representation | ) |

override virtual

Set the collision representation for this physics representation, when the collision object is involved in a collision, the collision should be resolved inside the dynamics calculation.

Specializes for discarding anything besides a rigid collision representation.

Parameters

  representation | The collision representation to be used.

Reimplemented from SurgSim::Physics::Representation.

## setInitialState()

void SurgSim::Physics::DeformableRepresentation::setInitialState | ( | std::shared_ptr< SurgSim::Math::OdeState > | initialState | ) |

virtual

Initialize the state variables to initialState.

Parameters

  initialState | is the state to be set as the starting state

## setIntegrationScheme()

void SurgSim::Physics::DeformableRepresentation::setIntegrationScheme | ( | SurgSim::Math::IntegrationScheme | integrationScheme | ) |

Sets the numerical integration scheme.

Parameters

  integrationScheme | The integration scheme to use

Exceptions

  SurgSim::Framework::AssertionFailure | raised if called after the component has been initialized.

## setLinearSolver()

void SurgSim::Physics::DeformableRepresentation::setLinearSolver | ( | SurgSim::Math::LinearSolver | linearSolver | ) |

Sets the linear algebraic solver.

Parameters

  linearSolver | The linear algebraic solver to use

Exceptions

  SurgSim::Framework::AssertionFailure | raised if called after the component has been initialized.

## setLocalPose()

void SurgSim::Physics::DeformableRepresentation::setLocalPose | ( | const SurgSim::Math::RigidTransform3d & | pose | ) |

override virtual

Set the pose of the representation with respect to the Scene Element.

Parameters

  pose | The pose to set the representation to

Reimplemented from SurgSim::Framework::Representation.

## transformState()

virtual void SurgSim::Physics::DeformableRepresentation::transformState | ( | std::shared_ptr< SurgSim::Math::OdeState > | state,
|  | const SurgSim::Math::RigidTransform3d & | transform
| ) |  |

protected pure virtual

Transform a state using a given transformation.

Parameters

  [in,out] | state | The state to be transformed
  | transform | The transformation to apply

Implemented in SurgSim::Physics::MassSpringRepresentation, SurgSim::Physics::Fem3DRepresentation, SurgSim::Physics::Fem1DRepresentation, and SurgSim::Physics::Fem2DRepresentation.

## update()

void SurgSim::Physics::DeformableRepresentation::update | ( | double | dt | ) |

override virtual

Update the representation state to the current time step.

Parameters

  dt | The time step (in seconds)

Reimplemented from SurgSim::Physics::Representation.

Reimplemented in SurgSim::Physics::FemRepresentation.

## Member Data Documentation

## m_currentState

std::shared_ptr<SurgSim::Math::OdeState> SurgSim::Physics::DeformableRepresentation::m_currentState

protected

The currently calculated state inside the physics loop, after the whole calculation is done this will become m_finalState.

## m_externalGeneralizedDamping

SurgSim::Math::SparseMatrix SurgSim::Physics::DeformableRepresentation::m_externalGeneralizedDamping

protected

External generalized force, stiffness and damping applied on the deformable representation.

## m_externalGeneralizedForce

SurgSim::Math::Vector SurgSim::Physics::DeformableRepresentation::m_externalGeneralizedForce

protected

External generalized force, stiffness and damping applied on the deformable representation.

## m_externalGeneralizedStiffness

SurgSim::Math::SparseMatrix SurgSim::Physics::DeformableRepresentation::m_externalGeneralizedStiffness

protected

External generalized force, stiffness and damping applied on the deformable representation.

## m_finalState

std::shared_ptr<SurgSim::Math::OdeState> SurgSim::Physics::DeformableRepresentation::m_finalState

protected

Last valid state (a.k.a final state)

Note
  Backup of the current state for thread-safety access while the current state is being recomputed.

## m_hasExternalGeneralizedForce

bool SurgSim::Physics::DeformableRepresentation::m_hasExternalGeneralizedForce

protected

External generalized force, stiffness and damping applied on the deformable representation.

## m_integrationScheme

SurgSim::Math::IntegrationScheme SurgSim::Physics::DeformableRepresentation::m_integrationScheme

protected

Numerical Integration scheme (dynamic explicit/implicit solver)

## m_linearSolver

SurgSim::Math::LinearSolver SurgSim::Physics::DeformableRepresentation::m_linearSolver

protected

Linear algebraic solver used.

## m_newState

std::shared_ptr<SurgSim::Math::OdeState> SurgSim::Physics::DeformableRepresentation::m_newState

protected

New state is a temporary variable to store the newly computed state.

## m_numDofPerNode

size_t SurgSim::Physics::DeformableRepresentation::m_numDofPerNode

protected

Number of degrees of freedom per node (varies per deformable model)

Note
  MUST be set by the derived classes

## m_odeSolver

std::shared_ptr<SurgSim::Math::OdeSolver> SurgSim::Physics::DeformableRepresentation::m_odeSolver

protected

Ode solver (its type depends on the numerical integration scheme)

## m_previousExternalGeneralizedDamping

SurgSim::Math::SparseMatrix SurgSim::Physics::DeformableRepresentation::m_previousExternalGeneralizedDamping

protected

External generalized force, stiffness and damping applied on the deformable representation.

## m_previousExternalGeneralizedStiffness

SurgSim::Math::SparseMatrix SurgSim::Physics::DeformableRepresentation::m_previousExternalGeneralizedStiffness

protected

External generalized force, stiffness and damping applied on the deformable representation.

## m_previousHasExternalGeneralizedForce

bool SurgSim::Physics::DeformableRepresentation::m_previousHasExternalGeneralizedForce

protected

External generalized force, stiffness and damping applied on the deformable representation.

## m_previousState

std::shared_ptr<SurgSim::Math::OdeState> SurgSim::Physics::DeformableRepresentation::m_previousState

protected

The previous state inside the calculation loop, this has no meaning outside of the loop.

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

- SurgSim/Physics/DeformableRepresentation.h
- SurgSim/Physics/DeformableRepresentation.cpp