What’s new in SOFA v25.06
Introduction of a generic Newton-Raphson algorithm
Introduced in the PR #5173, a new component NewtonRaphsonSolver
implements the Newton-Raphson algorithm. It has been designed to be generic. For example, in the tests it is used on a nonlinear scalar function (read more about the Newton’s method and examples of use).
A generalization of the backward differentiation schemes (BDF schemes) is now available in the component BDFOdeSolver
which uses the NewtonRaphsonSolver. It implements a whole family of ODE solvers, including the backward Euler method. Finally, this work permits the refactoring of the StaticOdeSolver
, benefiting from the new NewtonRaphsonSolver. This has been done in a separate PR #5382.
New GUI based on ImGui
This new GUI now becomes the default GUI for runSofa, the SOFA executable. This allowed to #5176 remove Qt from the sources of SOFA and makes SofaImGUI as the default GUI. In #5324, a new default scene has also been made available.
All your feedback and contributions to improve it are most welcome!
Regularization term in Lagrangian constraints
The PR #5299 adds a way to add a regularization term (defined by a scalar) during the inversion of the compliance matrix W by the Gauss-Seidel.
This helps in configuration where the constraint set in unsolvable. It might also help for the convergence of the Gauss-Seidel. The only thing to keep in mind is that it relaxes the equality meaning that now the constraints are not necessary solved entirely. This will cause issues when using generic collision detection because 0 interpenetration is not guaranteed (requires more skinning). It is better to use volume-based collision definition such as LDI for instance.
regularizationTerm
to two types of objects:
- constraint solvers:
GenericConstraintSolver
,LCPConstraintSolver
- constraint correction:
GenericConstraintCorrection
,LinearSolverConstraintCorrection
,PrecomputedConstraintCorrection
Introduction of CMake Presets
CMake Presets allow users to specify common configure options and share them with others. This feature has been in the SOFA configuration to clarify the different SOFA configurations, corresponding to the different levels of SOFA granularity:
minimal
/ defaultGUI
/ allGUI
/ standard
/ supported-plugins
/ full
This new feature is already widely used on our continuous integration. See the introduced CMakePresets.json
Breaking changes
Main breaking changes are:
- [ODESolver.Backward] Refactor StaticSolver to use NewtonRaphsonSolver #5382
- Lifecycle
- [CMake] Fetch in build dir instead of source to avoid lots of cmake errors #5332
- [Visual] Replace string by SelectableItem in VisualGrid #5280
- [Type] Convert is_fixed_array trait to concept #5209
- [Type] Convert is_vector trait to concept #5201
- [Type] Simplification of the Rebind trait using concepts #5200
- [Type] A concept for isRigidType #5199
- [tests] Template method design pattern from BaseTest in derived classes #5162
- [Helper] Add Accessors for Array types #5114
Find all the breaking pull-requests introduced in this release.