SOFA v24.06


What’s new in SOFA v24.06

Stable Neo Hookean material in SOFA

Based on the eponymous paper, the Stable Neo Hookean material was added to the TetrahedronHyperelasticityFEMForceField in the PR #4603. In the same contribution,
both the St Venant-Kirchhoff and Neo Hookean materials were refactored to make their implementation clearer to read. Finally, tests on materials were robustified.

Improvement on linear systems

In the context of the “Matrix assembly API in SOFA” roadmap topic (see Roadmap page), several improvements on linear systems have been added in the v24.06 release.

New components to map matrices
In #4490, the component MatrixMapping is introduced, thus offering a way to define the computation strategy for mapping application: . This matrix product can be a computationally-intensive task. The mapping strategy can now be specified by adding the associated component (e.g. ModelOrderReductionMapping). If no MatrixMapping component is present in the scene, it will be created automatically with a generic-purpose strategy, i.e. the one already implemented. The PR highlights an example offering a x1.5 speed-up.

In #4552, a new projection method is introduced: the ConstantSparsityProjectionMethod. This matrix projection takes advantage of the constant pattern of the matrices in the computation of sparse matrix product. A boolean Data enables parallel computation. Combined with parallel strategies, this can bring an acceleration up to x1.8.

Cache mapped mass matrix
In #4625, a new feature is added to cache the full mass matrix in the case where the mass matrix and the mapping are both constant. In such cases, the product can be precomputed once and reused as each time step. In addition to the precomputation, a cache invalidation mechanism is added on masses to track when the mass matrix is subject to changes. This features demonstrate a speed-up of x2.2.

Fully LGPL-v2.1

Some last minor inconsistencies were remaining within the SOFA framework GitHub repository. These are now cleaned, allowing you to use and modify the software freely, even in proprietary applications, as long as you share any changes to the LGPL code under the same license.

Bot for Discussions

The SOFA GitHub Discussions area now has its bot applying the forum management policy. When the last answer given by a maintainer is more than 4 months old with no reply, a topic is closed. The purpose of the bot is to keep the forum up to date and to offer the best support experience.

Plugin: Visco-Elasticity

Developed by the BruRobotics team at VUB, this plugin implements the fundamental linear viscoelastic constitutive laws applied to tetrahedral meshes. Viscous materials were missing so far in SOFA to model materials sensitive to dynamic conditions.
Read more about the plugin.

Breaking changes

Main breaking changes are:

  • [Type] RGBAColor: remove inheritance from type::fixed_array and use std::array to store its components #4263
  • [All] ColorMap uses RGBAColor #4270
  • [Type] Refactor Vec #4296
  • [Topology.Container.Dynamic] GeometryAlgorithms: support generic State #4362
  • [LinearSolver.Direct] Introduce other ordering methods in SparseLDL through Eigen #4370
  • [Core][LinearSolver] Introduction of ordering method components #4477
  • [Simulation.Graph] Move SimpleApi into its own library #4495
  • [all] Add PenalityContact vector Data display #4637
  • [GUI.Qt] Some cleaning in qt RealGui #4641
  • [FEM.HyperElastic] Convert string Data to OptionsGroup #4651

Find all the breaking pull-requests introduced in this release.

SOFA v24.06 contributors

1043 posts on GitHub Discussions
183 merged pull-requests
2291 clones of the repository
9 contributors on GitHub


Back to Top