|
iMSTK
Interactive Medical Simulation Toolkit
|
This class implements a constraint based rigid body linear system with pgs solver. More...
#include <imstkRigidBodyModel2.h>


Public Types | |
| using | StorageIndex = Eigen::SparseMatrix< double >::StorageIndex |
Public Types inherited from imstk::AbstractDynamicalModel | |
| enum | StateUpdateType { Displacement, Velocity, DeltaDisplacement, DeltaVelocity, None } |
| Type of the update of the state of the body. | |
Public Member Functions | |
| virtual void | setTimeStep (const double timeStep) override |
| Set the time step size. | |
| virtual double | getTimeStep () const override |
| Returns the time step size. | |
| std::shared_ptr< RigidBodyModel2Config > | getConfig () const |
| const std::list< std::shared_ptr< RbdConstraint > > & | getConstraints () const |
| std::shared_ptr< ProjectedGaussSeidelSolver< double > > | getSolver () const |
| std::shared_ptr< RigidBody > | addRigidBody () |
| Adds a body to the system, must call initialize for changes to effect returns its reference. | |
| void | addConstraint (std::shared_ptr< RbdConstraint > constraint) |
| Adds a constraint to be solved. | |
| void | removeRigidBody (std::shared_ptr< RigidBody > body) |
| Removes a body from the system, must call initialize for changes to effect. | |
| bool | initialize () override |
| Initialize the RigidBody model to the initial state. | |
| void | updateMass () |
| Updates mass and inertia matrices to those provided by the bodies. Not often needed unless mass/inertia is changing at runtime. | |
| void | configure (std::shared_ptr< RigidBodyModel2Config > config) |
| Configure the model. | |
| void | computeTentativeVelocities () |
| Computes the velocities. | |
| void | solveConstraints () |
| Solve the current constraints of the model, then discards. | |
| void | integrate () |
| Integrate the model state. | |
| std::shared_ptr< TaskNode > | getComputeTentativeVelocitiesNode () const |
| std::shared_ptr< TaskNode > | getSolveNode () const |
| std::shared_ptr< TaskNode > | getIntegrateNode () const |
Public Member Functions inherited from imstk::DynamicalModel< RigidBodyState2 > | |
| DynamicalModel (DynamicalModelType type=DynamicalModelType::None) | |
| std::shared_ptr< RigidBodyState2 > | getInitialState () const |
| Return the initial state of the problem. | |
| std::shared_ptr< RigidBodyState2 > | getCurrentState () const |
| Return the current state of the problem. | |
| std::shared_ptr< RigidBodyState2 > | getPreviousState () const |
| Return the previous state of the problem. | |
| void | resetToInitialState () override |
| Reset the current state to the initial state. | |
Public Member Functions inherited from imstk::AbstractDynamicalModel | |
| std::shared_ptr< TaskGraph > | getTaskGraph () const |
| const DynamicalModelType & | getType () const |
| Get the type of the object. | |
| virtual void | updatePhysicsGeometry () |
| Update the geometry of the model. | |
| void | setModelGeometry (std::shared_ptr< Geometry > geometry) |
| Sets the model geometry. | |
| bool | isGeometryValid (const std::shared_ptr< Geometry > geometry) |
| Checks if the given geometry is a valid geometry type for the model. | |
| std::shared_ptr< Geometry > | getModelGeometry () const |
| Gets the model geometry. | |
| void | initGraphEdges () |
| Initializes the edges of the graph. | |
| std::size_t | getNumDegreeOfFreedom () const |
| Get/Set the number of degrees of freedom. | |
| void | setNumDegreeOfFreedom (const size_t nDof) |
| virtual void | setTimeStepSizeType (const TimeSteppingType type) |
| Get/Set the type of approach used to update the time step size after every frame. | |
| TimeSteppingType | getTimeStepSizeType () const |
Protected Member Functions | |
| void | initGraphEdges (std::shared_ptr< TaskNode > source, std::shared_ptr< TaskNode > sink) override |
| Setup the task graph of the RigidBodyModel. | |
Protected Member Functions inherited from imstk::AbstractDynamicalModel | |
| AbstractDynamicalModel (DynamicalModelType type=DynamicalModelType::None) | |
Protected Attributes | |
| std::shared_ptr< RigidBodyModel2Config > | m_config |
| std::shared_ptr< TaskNode > | m_computeTentativeVelocities |
| std::shared_ptr< TaskNode > | m_solveNode |
| std::shared_ptr< TaskNode > | m_integrateNode |
| std::shared_ptr< ProjectedGaussSeidelSolver< double > > | m_pgsSolver |
| Eigen::SparseMatrix< double > | m_Minv |
| std::list< std::shared_ptr< RbdConstraint > > | m_constraints |
| std::vector< std::shared_ptr< RigidBody > > | m_bodies |
| std::unordered_map< RigidBody *, StorageIndex > | m_locations |
| bool | m_modified = true |
| size_t | m_maxBodiesParallel = 10 |
| Eigen::VectorXd | F |
Protected Attributes inherited from imstk::DynamicalModel< RigidBodyState2 > | |
| std::shared_ptr< RigidBodyState2 > | m_initialState |
| Initial state. | |
| std::shared_ptr< RigidBodyState2 > | m_currentState |
| Current state. | |
| std::shared_ptr< RigidBodyState2 > | m_previousState |
| Previous state. | |
Protected Attributes inherited from imstk::AbstractDynamicalModel | |
| DynamicalModelType | m_type |
| Mathematical model type. | |
| std::size_t | m_numDof |
| Total number of degree of freedom. | |
| std::shared_ptr< Geometry > | m_geometry = nullptr |
| Physics geometry of the model. | |
| std::set< std::string > | m_validGeometryTypes |
| Valid geometry types of this model. | |
| TimeSteppingType | m_timeStepSizeType = TimeSteppingType::Fixed |
| std::shared_ptr< TaskGraph > | m_taskGraph = nullptr |
This class implements a constraint based rigid body linear system with pgs solver.
References: David Baraff. 1997. An Introduction to Physically Based Modeling: Rigid Body Simulation II - Nonpenetration Constraints Marijn Tamis and Giuseppe Maggiore. 2015. Constraint based physics solver. David Baraff. 1989. Analyltical Methods for Dynamic Simulation of Non-Penetrating Rigid Bodies. In Computer Graphics (Proc. SIGGRAPH), volume 23, pages 223-232. ACM.
Definition at line 44 of file imstkRigidBodyModel2.h.
1.8.13