SOFA v25.06

download

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

More than a year ago, a new GUI based in DearImGui was introduced. Another plugin has been developed along side to render SOFA scene using GLFW, an open-source library for OpenGL, OpenGL ES and Vulkan development. Both plugins got merge as one and make a more modern and flexible GUI than our previous Qt-based GUI.

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.

This PR adds a data named 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
    • [all] Lifecycle : Disable SOFA_ATTRIBUTE_DEPRECATED #5360
    • [all] Lifecycle : Remove SOFA_ATTRIBUTE_DEPRECATED (part 2) #5347
    • [all] Lifecycle : Remove SOFA_ATTRIBUTE_DEPRECATED (part 1) #5346
  • [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.

SOFA v25.06 contributors

528 posts on GitHub Discussions
152 merged pull-requests
2327 unique clones of the repository
14 contributors on GitHub

 
 

Back to Top