mimesis-inria / caribou

Multi-physics computation library
GNU Lesser General Public License v3.0
29 stars 17 forks source link

EigenSolver is missing virtual methods used by the LinearSolverConstraintCorrection of SOFA #73

Open jnbrunet opened 2 years ago

jnbrunet commented 2 years ago

This issue was raised here by Jan.

When one of Caribou's linear solvers is used by a LinearSolverConstraintCorrection of SOFA, the constraints are simply not solved at all. This is because the latter is using some virtual methods that are not implemented in Caribou's EigenSolver (the base class of all Caribou's linear solvers):

  1. sofa::core::behavior::LinearSolver::addJMInvJt(R, J, f)
  2. sofa::core::behavior::LinearSolver::getSystemBaseMatrix()
  3. sofa::core::behavior::LinearSolver::getSystemRHBaseVector()
  4. sofa::core::behavior::LinearSolver::getSystemLHBaseVector()
  5. sofa::core::behavior::LinearSolver::rebuildSystem()
  6. sofa::core::behavior::LinearSolver::init_partial_solve() (optional?)
  7. sofa::core::behavior::LinearSolver::partial_solve(m_indices, f_indices) (optional?)

I've started a branch here with a scene example that does not work, but should. It can be used to validate that this issue is resolved.

cc @hugtalbot @Sidaty1