- [LinearSolverConstraintCorrection](../../../components/constraint/lagrangian/correction/linearsolverconstraintcorrection/): computes the compliance matrix $\mathbf{W}=\mathbf{H}\mathbf{A}^{-1}\mathbf{H}^T$ where $\mathbf{A}^{-1}$ comes from a direct solver associated to the object. Since the direct solvers in SOFA factorize the matrix $\mathbf{A}$ (for instance using a LDL factorization if you use the _LDLSolver_), the factorization is reused to compute the compliance matrix. The matrix-matrix multiplication $\mathbf{H}\mathbf{A}^{-1}\mathbf{H}^T$ is not possible in case of a matrix-free solver, since the assembled inverse matrix $\mathbf{A}^{-1}$ is not available. From the factorization of $\mathbf{A}$, the computation of $\mathbf{H}\mathbf{A}^{-1}\mathbf{H}^T$ done in the function _addJMInvJt()_ requires to call the _solve()_ function from the direct solver, computing a matrix-vector multiplication, for each line of the constraint matrix $\mathbf{H}$, i.e. for each constraint. This approach can therefore be very computationally-demanding if you have many constraints. Note that this ConstraintCorrection proposes an optimization for wire-like structures (boolean option)
0 commit comments