SurgSim::Physics::Fem1DRepresentation Class Reference

Finite Element Model 1D is a fem built with 1D FemElement. More...

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

Inheritance diagram for SurgSim::Physics::Fem1DRepresentation:

## Public Member Functions

| Fem1DRepresentation (const std::string &name)
| Constructor. More...
virtual | ~Fem1DRepresentation ()
| Destructor. More...
| SURGSIM_CLASSNAME (SurgSim::Physics::Fem1DRepresentation)
void | loadFem (const std::string &fileName) override
| Loads the FEM file into an Fem class data structure. More...
void | setFem (std::shared_ptr< SurgSim::Framework::Asset > mesh)
| Sets the fem mesh asset. More...
std::shared_ptr< Fem1D > | getFem () const
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()) override
| Add an external generalized force applied on a specific localization. More...
std::shared_ptr< Localization > | createLocalization (const SurgSim::DataStructures::Location &location) override
| Computes a localized coordinate w.r.t this representation, given a Location object. More...
Public Member Functions inherited from SurgSim::Physics::FemRepresentation
| FemRepresentation (const std::string &name)
| Constructor. More...
virtual | ~FemRepresentation ()
| Destructor. More...
virtual void | setFemElementType (const std::string &type)
| Sets the FemElement type pulled from the object factory. More...
const std::string & | getFemElementType () const
| Gets the FemElement type pulled from the object factory. More...
void | addFemElement (const std::shared_ptr< FemElement > element)
| Adds a FemElement. More...
size_t | getNumFemElements () const
| Gets the number of FemElement. More...
std::shared_ptr< FemElement > | getFemElement (size_t femElementId)
| Retrieves a given FemElement from its id. More...
double | getTotalMass () const
| Gets the total mass of the fem. More...
double | getRayleighDampingStiffness () const
| Gets the Rayleigh stiffness parameter. More...
double | getRayleighDampingMass () const
| Gets the Rayleigh mass parameter. More...
void | setRayleighDampingStiffness (double stiffnessCoef)
| Sets the Rayleigh stiffness parameter. More...
void | setRayleighDampingMass (double massCoef)
| Sets the Rayleigh mass parameter. More...
bool | isValidCoordinate (const SurgSim::DataStructures::IndexedLocalCoordinate &coordinate) const
| Determines whether the associated coordinate is valid. More...
void | beforeUpdate (double dt) override
| Preprocessing done before the update call. More...
void | update (double dt) override
| Update the representation state to the current time step. More...
void | setComplianceWarping (bool useComplianceWarping)
| Set the compliance warping flag. More...
bool | getComplianceWarping () const
| Get the compliance warping flag (default = false) More...
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. More...
const SurgSim::Math::Matrix & | getComplianceMatrix () const override
| Gets the compliance matrix associated with motion. More...
void | updateFMDK (const SurgSim::Math::OdeState &state, int options) override
| Update the OdeEquation (and support data) based on the given state. More...
Public Member Functions inherited from SurgSim::Physics::DeformableRepresentation
| 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...
const SurgSim::Math::Vector & | getExternalGeneralizedForce () const
const SurgSim::Math::SparseMatrix & | getExternalGeneralizedStiffness () const
const SurgSim::Math::SparseMatrix & | getExternalGeneralizedDamping () const
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...
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...
const Vector & | getF () const
const SparseMatrix & | getM () const
const SparseMatrix & | getD () const
const SparseMatrix & | getK () const

## Protected Member Functions

void | transformState (std::shared_ptr< SurgSim::Math::OdeState > state, const SurgSim::Math::RigidTransform3d &transform) override
| Transform a state using a given transformation. More...
bool | doInitialize () override
| Interface to be implemented by derived classes. More...
Protected Member Functions inherited from SurgSim::Physics::FemRepresentation
void | addRayleighDampingForce (SurgSim::Math::Vector *f, const SurgSim::Math::OdeState &state, bool useGlobalMassMatrix=false, bool useGlobalStiffnessMatrix=false, double scale=1.0)
| Adds the Rayleigh damping forces. More...
void | addFemElementsForce (SurgSim::Math::Vector *f, const SurgSim::Math::OdeState &state, double scale=1.0)
| Adds the FemElements forces to f (given a state) More...
void | addGravityForce (SurgSim::Math::Vector *f, const SurgSim::Math::OdeState &state, double scale=1.0)
| Adds the gravity force to f (given a state) More...
bool | doInitialize () override
| Interface to be implemented by derived classes. More...
void | updateComplianceMatrix (const SurgSim::Math::OdeState &state)
| Updates the compliance matrix using nodes transformation (useful for compliance warping) More...
virtual SurgSim::Math::Matrix | getNodeTransformation (const SurgSim::Math::OdeState &state, size_t nodeId)
| Retrieves a specific node transformation (useful for compliance warping) More...
bool | isInitialComplianceMatrixComputed () const
| Gets the flag keeping track of the initial compliance matrix calculation (compliance warping case) More...
void | setIsInitialComplianceMatrixComputed (bool flag)
| Sets the flag keeping track of the initial compliance matrix calculation (compliance warping case) More...
void | computeF (const SurgSim::Math::OdeState &state) override
| Evaluation of the RHS function \(f(x, v)\) for a given state. More...
void | computeM (const SurgSim::Math::OdeState &state) override
| Evaluation of the LHS matrix \(M(x,v)\) for a given state. More...
void | computeD (const SurgSim::Math::OdeState &state) override
| Evaluation of \(D = -\frac{\partial f}{\partial v}(x,v)\) for a given state. More...
void | computeK (const SurgSim::Math::OdeState &state) override
| Evaluation of \(K = -\frac{\partial f}{\partial x}(x,v)\) for a given state. More...
void | computeFMDK (const SurgSim::Math::OdeState &state) override
| 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 Member Functions inherited from SurgSim::Physics::DeformableRepresentation
bool | doWakeUp () override
| Interface to be implemented by derived classes. 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...

## Private Member Functions

std::shared_ptr< Localization > | createNodeLocalization (size_t nodeId)
| Helper method: create a localization for a node. More...
std::shared_ptr< Localization > | createElementLocalization (const SurgSim::DataStructures::IndexedLocalCoordinate &location)
| Helper method: create a localization for an element-based IndexedLocalCoordinate (beam) More...

## Private Attributes

std::shared_ptr< Fem1D > | m_fem
| The Fem1DRepresentation's asset as a Fem1D. 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 ()
Protected Attributes inherited from SurgSim::Physics::FemRepresentation
std::vector< double > | m_massPerNode
| Useful information per node. More...
std::vector< std::shared_ptr< FemElement > > | m_femElements
| FemElements. More...
std::string | m_femElementType
| The FemElement factory parameter invoked in doInitialize() when using a MeshAsset either with LoadFem(const std::stirng& filename) or setFem(std::shared_ptr<Asset> mesh) This ensures that when using a mesh Asset, a single FemElement type is used. More...
Protected Attributes inherited from SurgSim::Physics::DeformableRepresentation
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...

## Detailed Description

Finite Element Model 1D is a fem built with 1D FemElement.

The structure of a 1D model derives into a matrix structure of tri-diagonal block.

## Constructor & Destructor Documentation

## Fem1DRepresentation()

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

explicit

Constructor.

Parameters

  name | The name of the Fem1DRepresentation

## ~Fem1DRepresentation()

SurgSim::Physics::Fem1DRepresentation::~Fem1DRepresentation | ( |  | ) |

virtual

Destructor.

## Member Function Documentation

## addExternalGeneralizedForce()

void SurgSim::Physics::Fem1DRepresentation::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()`
| ) |  |

override 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)

Implements SurgSim::Physics::DeformableRepresentation.

## createElementLocalization()

std::shared_ptr< Localization > SurgSim::Physics::Fem1DRepresentation::createElementLocalization | ( | const SurgSim::DataStructures::IndexedLocalCoordinate & | location | ) |

private

Helper method: create a localization for an element-based IndexedLocalCoordinate (beam)

Parameters

  location | The IndexedLocalCoordinate defining a point on the element mesh

Returns
  Localization of the point for this representation

## createLocalization()

std::shared_ptr< Localization > SurgSim::Physics::Fem1DRepresentation::createLocalization | ( | const SurgSim::DataStructures::Location & | location | ) |

override virtual

Computes a localized coordinate w.r.t this representation, given a Location object.

Parameters

  location | A location in 3d space.

Returns
  A localization object for the given location.

Reimplemented from SurgSim::Physics::Representation.

## createNodeLocalization()

std::shared_ptr< Localization > SurgSim::Physics::Fem1DRepresentation::createNodeLocalization | ( | size_t | nodeId | ) |

private

Helper method: create a localization for a node.

Parameters

  nodeId | The node index

Returns
  Localization of the node for this representation

## doInitialize()

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

override protected virtual

Interface to be implemented by derived classes.

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

Reimplemented from SurgSim::Physics::DeformableRepresentation.

## getFem()

std::shared_ptr< Fem1D > SurgSim::Physics::Fem1DRepresentation::getFem | ( |  | ) | const

Returns
  The fem mesh asset as a Fem1D

## loadFem()

void SurgSim::Physics::Fem1DRepresentation::loadFem | ( | const std::string & | filename | ) |

override virtual

Loads the FEM file into an Fem class data structure.

Parameters

  filename | The file to load

Implements SurgSim::Physics::FemRepresentation.

## setFem()

void SurgSim::Physics::Fem1DRepresentation::setFem | ( | std::shared_ptr< SurgSim::Framework::Asset > | mesh | ) |

Sets the fem mesh asset.

Parameters

  mesh | The fem mesh to assign to this representation

Exceptions

  SurgSim::Framework::AssertionFailure | if mesh is nullptr or it's actual type is not Fem1D

## SURGSIM_CLASSNAME()

SurgSim::Physics::Fem1DRepresentation::SURGSIM_CLASSNAME | ( | SurgSim::Physics::Fem1DRepresentation |  | ) |

## transformState()

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

override protected virtual

Transform a state using a given transformation.

Parameters

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

Implements SurgSim::Physics::DeformableRepresentation.

## Member Data Documentation

## m_fem

std::shared_ptr<Fem1D> SurgSim::Physics::Fem1DRepresentation::m_fem

private

The Fem1DRepresentation's asset as a Fem1D.

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

- SurgSim/Physics/Fem1DRepresentation.h
- SurgSim/Physics/Fem1DRepresentation.cpp