|
iMSTK
Interactive Medical Simulation Toolkit
|


Public Member Functions | |
| void | initConstraint (const PbdState &state, const PbdParticleId &bodyId, const Vec3d contactPtOnBody, const PbdParticleId &x0, const double compliance=0.0) |
| Initialize the constraint. More... | |
| bool | computeValueAndGradient (PbdState &bodies, double &c, std::vector< Vec3d > &n) override |
| Compute value and gradient of the constraint. More... | |
| Vec3d | computeRelativeVelocity (PbdState &bodies) override |
Public Member Functions inherited from imstk::PbdContactConstraint | |
| void | projectConstraint (PbdState &bodies, const double dt, const SolverType &type) override |
| Update positions by projecting constraints. | |
| virtual Vec3d | computeRelativeVelocity (PbdState &imstkNotUsed(bodies)) |
| const Vec3d & | getR (const int i) const |
| Get the support point r/the difference to the contact point. | |
| void | correctVelocity (PbdState &bodies, const double dt) override |
| Solve the velocities given to the constraint. More... | |
| Vec3d | getVelocityOnRigidBody (PbdState &bodies, const int bodyId, const Vec3d &pt) |
| Returns the velocity at the given point on body Either body in collision could be rigid body. | |
| double | getTorque (const double dt, const int i) |
| Get torque magnitude after solve. | |
Public Member Functions inherited from imstk::PbdConstraint | |
| virtual const std::string | getTypeName () const =0 |
| std::vector< PbdParticleId > & | getParticles () |
| Get the vertex indices of the constraint. | |
| bool | getCorrectVelocity () const |
| Get/Set whether velocity should be corrected for this constraint. | |
| void | setCorrectVelocity (const bool correctVelocity) |
| const Vec3d & | getGradient (const int i) const |
| Get gradient given the particle index in constraint. | |
| double | getForce (const double dt) const |
| Get the force magnitude, valid after solving lambda Only valid with xpbd. | |
| double | getConstraintC () const |
| Get constraint value C (how much the constraint is violated) | |
| double | getLambda () const |
| Get constraint value C (how much the constraint is violated) | |
| virtual double | getRestValue () const |
| Get reference constraint value. This value will have different context depending on the constraint being used. | |
| void | zeroOutLambda () |
| Zero's out the lagrange multplier before integration only used for xpbd, must be called before solving. | |
| double | computeGeneralizedInvMass (const PbdState &bodies, const size_t particleIndex) const |
| Compute generalized inverse mass of the particle. Note perf sensitive function. It has been intentionally inlined. More... | |
| double | computeGeneralizedInvMass (const PbdState &bodies, const size_t particleIndex, const Vec3d &r) const |
| Compute generalized inverse mass of the particle. More... | |
| double | getRestitution () const |
| Get/Set restitution. | |
| void | setRestitution (const double restitution) |
| double | getFriction () const |
| Get/Set friction. | |
| void | setFriction (const double friction) |
| double | getStiffness () const |
| Get/Set the stiffness. | |
| void | setStiffness (const double stiffness) |
| double | getCompliance () const |
| Get/Set the compliance This function is also provided in case users need 0 compliance. | |
| void | setCompliance (const double compliance) |
Additional Inherited Members | |
Public Types inherited from imstk::PbdConstraint | |
| enum | SolverType { xPBD = 0, PBD } |
| Type of solvers. | |
Protected Member Functions inherited from imstk::PbdContactConstraint | |
| PbdContactConstraint (const int numParticles) | |
Protected Member Functions inherited from imstk::PbdConstraint | |
| PbdConstraint (const size_t numParticles) | |
Protected Attributes inherited from imstk::PbdContactConstraint | |
| std::vector< Vec3d > | m_r |
| std::vector< double > | m_weights |
Protected Attributes inherited from imstk::PbdConstraint | |
| std::vector< PbdParticleId > | m_particles |
| body, particle index | |
| std::vector< Vec3d > | m_dcdx |
| Normalized constraint gradients (per particle) | |
| double | m_stiffness = 1.0 |
| used in PBD, [0, 1] | |
| double | m_compliance = 1e-7 |
| used in xPBD, inverse of Stiffness | |
| double | m_lambda = 0.0 |
| Lagrange multiplier. | |
| double | m_C = 0.0 |
| Constraint Value. | |
| double | m_friction = 0.0 |
| double | m_restitution = 0.0 |
| bool | m_correctVelocity = false |
Definition at line 123 of file imstkPbdContactConstraint.h.
|
overridevirtual |
Compute value and gradient of the constraint.
| bodies | PbdState provides all the bodies |
| c | Constraint value |
| dcdx | Normalized constraint gradients (per vertex) |
Implements imstk::PbdConstraint.
Definition at line 295 of file imstkPbdContactConstraint.cpp.

| void imstk::PbdVertexToBodyConstraint::initConstraint | ( | const PbdState & | state, |
| const PbdParticleId & | bodyId, | ||
| const Vec3d | contactPtOnBody, | ||
| const PbdParticleId & | x0, | ||
| const double | compliance = 0.0 |
||
| ) |
Initialize the constraint.
| PbdState | of bodies |
| Body | particle id |
| Global | position on the particle body (local computed from it) |
| Point0 | of vertex |
Definition at line 278 of file imstkPbdContactConstraint.cpp.
1.8.13