diff --git a/Sofa/Component/SolidMechanics/Spring/src/sofa/component/solidmechanics/spring/SpringForceField.inl b/Sofa/Component/SolidMechanics/Spring/src/sofa/component/solidmechanics/spring/SpringForceField.inl index 6c926549d4e..bd8f85938be 100644 --- a/Sofa/Component/SolidMechanics/Spring/src/sofa/component/solidmechanics/spring/SpringForceField.inl +++ b/Sofa/Component/SolidMechanics/Spring/src/sofa/component/solidmechanics/spring/SpringForceField.inl @@ -542,11 +542,18 @@ auto SpringForceField::computeSpringForce( // dF = k_s.U.U^T.dX + f/l.(I-U.U^T).dX = ((k_s-f/l).U.U^T + f/l.I).dX auto& m = springForce->dForce_dX; Real tgt = forceIntensity * inverseLength; + Real tol = 1e-8; + Real regParam = 1e-4; + bool isSingular = std::abs(elongation) < tol && std::abs(elongationVelocity) < tol; + if (isSingular) + msg_warning(this) << "!!! We detected a degenerated Spring configuration, we've to add a " + "regularization term to make the matrix invertible !!!"; for(sofa::Index j=0; j