add full preconditioner for KKT system

This commit is contained in:
Xuchen Han
2020-04-15 13:32:16 -07:00
parent 8783b4411c
commit 26ef0e093a
6 changed files with 119 additions and 22 deletions

View File

@@ -18,7 +18,7 @@
#include "btDeformableBodySolver.h"
#include "btSoftBodyInternals.h"
#include "LinearMath/btQuickprof.h"
static const int kMaxConjugateGradientIterations = 5;
static const int kMaxConjugateGradientIterations = 50;
btDeformableBodySolver::btDeformableBodySolver()
: m_numNodes(0)
, m_cg(kMaxConjugateGradientIterations)
@@ -52,7 +52,6 @@ void btDeformableBodySolver::solveDeformableConstraints(btScalar solverdt)
{
m_dv[i] = x[i];
}
// m_objective->m_projection.enforceConstraints(x);
updateVelocity();
}
else
@@ -211,7 +210,7 @@ void btDeformableBodySolver::updateDv(btScalar scale)
void btDeformableBodySolver::computeStep(TVStack& ddv, const TVStack& residual)
{
m_cr.solve(*m_objective, ddv, residual, true);
m_cr.solve(*m_objective, ddv, residual, false);
}
void btDeformableBodySolver::reinitialize(const btAlignedObjectArray<btSoftBody *>& softBodies, btScalar dt)