solve CG with more accuracy

This commit is contained in:
Xuchen Han
2019-08-15 17:18:24 -07:00
parent 23cf657a1a
commit 10cb0c368d

View File

@@ -18,7 +18,7 @@
btDeformableBodySolver::btDeformableBodySolver() btDeformableBodySolver::btDeformableBodySolver()
: m_numNodes(0) : m_numNodes(0)
, m_cg(10) , m_cg(50)
, m_contact_iterations(5) , m_contact_iterations(5)
{ {
m_objective = new btDeformableBackwardEulerObjective(m_softBodySet, m_backupVelocity); m_objective = new btDeformableBackwardEulerObjective(m_softBodySet, m_backupVelocity);
@@ -47,7 +47,7 @@ void btDeformableBodySolver::solveConstraints(float solverdt)
void btDeformableBodySolver::computeStep(TVStack& dv, const TVStack& residual) void btDeformableBodySolver::computeStep(TVStack& dv, const TVStack& residual)
{ {
btScalar tolerance = std::numeric_limits<float>::epsilon() * 1024 * m_objective->computeNorm(residual); btScalar tolerance = std::numeric_limits<float>::epsilon() * 16 * m_objective->computeNorm(residual);
m_cg.solve(*m_objective, dv, residual, tolerance); m_cg.solve(*m_objective, dv, residual, tolerance);
} }