diff options
Diffstat (limited to 'src/BulletSoftBody/btDeformableBodySolver.h')
-rw-r--r-- | src/BulletSoftBody/btDeformableBodySolver.h | 74 |
1 files changed, 5 insertions, 69 deletions
diff --git a/src/BulletSoftBody/btDeformableBodySolver.h b/src/BulletSoftBody/btDeformableBodySolver.h index 68354f199..ae674d6e8 100644 --- a/src/BulletSoftBody/btDeformableBodySolver.h +++ b/src/BulletSoftBody/btDeformableBodySolver.h @@ -24,8 +24,8 @@ #include "btConjugateResidual.h" #include "btConjugateGradient.h" struct btCollisionObjectWrapper; -// class btDeformableBackwardEulerObjective; -// class btDeformableMultiBodyDynamicsWorld; +class btDeformableBackwardEulerObjective; +class btDeformableMultiBodyDynamicsWorld; class btDeformableBodySolver : public btSoftBodySolver { @@ -46,7 +46,6 @@ protected: int m_maxNewtonIterations; // max number of newton iterations btScalar m_newtonTolerance; // stop newton iterations if f(x) < m_newtonTolerance bool m_lineSearch; // If true, use newton's method with line search under implicit scheme - bool m_reducedSolver; // flag for reduced soft body solver public: // handles data related to objective function btDeformableBackwardEulerObjective* m_objective; @@ -69,18 +68,11 @@ public: // solve the momentum equation virtual void solveDeformableConstraints(btScalar solverdt); - // set gravity (get from deformable world) - virtual void setGravity(const btVector3& gravity) - { - // for full deformable object, we don't store gravity in the solver - // this function is overriden in the reduced deformable object - } - // resize/clear data structures - virtual void reinitialize(const btAlignedObjectArray<btSoftBody*>& softBodies, btScalar dt); + void reinitialize(const btAlignedObjectArray<btSoftBody*>& softBodies, btScalar dt); // set up contact constraints - virtual void setConstraints(const btContactSolverInfo& infoGlobal); + void setConstraints(const btContactSolverInfo& infoGlobal); // add in elastic forces and gravity to obtain v_{n+1}^* and calls predictDeformableMotion virtual void predictMotion(btScalar solverdt); @@ -93,7 +85,7 @@ public: void backupVelocity(); // set m_dv and m_backupVelocity to desired value to prepare for momentum solve - virtual void setupDeformableSolve(bool implicit); + void setupDeformableSolve(bool implicit); // set the current velocity to that backed up in m_backupVelocity void revertVelocity(); @@ -158,62 +150,6 @@ public: // used in line search btScalar kineticEnergy(); - // add explicit force to the velocity in the objective class - virtual void applyExplicitForce(); - - // execute position/velocity update and apply anchor constraints in the integrateTransforms from the Dynamics world - virtual void applyTransforms(btScalar timeStep); - - virtual void setStrainLimiting(bool opt) - { - m_objective->m_projection.m_useStrainLimiting = opt; - } - - virtual void setPreconditioner(int opt) - { - switch (opt) - { - case btDeformableBackwardEulerObjective::Mass_preconditioner: - m_objective->m_preconditioner = m_objective->m_massPreconditioner; - break; - - case btDeformableBackwardEulerObjective::KKT_preconditioner: - m_objective->m_preconditioner = m_objective->m_KKTPreconditioner; - break; - - default: - btAssert(false); - break; - } - } - - virtual btAlignedObjectArray<btDeformableLagrangianForce*>* getLagrangianForceArray() - { - return &(m_objective->m_lf); - } - - virtual const btAlignedObjectArray<btSoftBody::Node*>* getIndices() - { - return m_objective->getIndices(); - } - - virtual void setProjection() - { - m_objective->m_projection.setProjection(); - } - - virtual void setLagrangeMultiplier() - { - m_objective->m_projection.setLagrangeMultiplier(); - } - - virtual bool isReducedSolver() - { - return m_reducedSolver; - } - - virtual void deformableBodyInternalWriteBack() {} - // unused functions virtual void optimize(btAlignedObjectArray<btSoftBody*>& softBodies, bool forceUpdate = false) {} virtual void solveConstraints(btScalar dt) {} |