SOFA v21.06


What’s new in SOFA v21.06

Multithreading for collision detection and constraints

Recent developments led by Alexandre Bilger and Eulalie Coevoet introduced parallel version of several codes. Within SOFA and in its Multithreading plugin, you will now be able to:

  • detect collision in parallel during the brute force broad phase (see #2038) and during the BVH narrow phase (see #2053)
  • solve multiple objects concurrently (see #2135) and/or compute collision detection and the free motion concurrently (see #2040) in the FreeMotionAnimationLoop
  • compute compliances concurrently in the GenericConstraintSolver (see #1862)

See the Multithreading GitHub project and the associated pull-requests for technical details.

Speedup direct SAP

The “Sweep and Prune” algorithm, noted SAP, has been refactored and improved for The SAP method belongs to the topological methods for broad phase, based on the positions of objects in relation to others.

This work performed by Alexandre Bilger reduces the cost of data and make sure that constant operations are done on containers when possible. In addition, the documentation has been improved and a debug visualization has been added.

For more, please refer to the pull-request #1917.

Shell mechanical model

Proposed by JAIST in the pull-request #1745, a first version of Reissner-Mindlin Flat Shell Element (quad element, 5 degrees of freedom) is now available in SOFA with the QuadBendingFEMForceField. This implementation assumes for now that two degrees of freedom related to rotational displacements of a node in x and y-axis (z being the normal axis of the element) are ignored.

An example scene is also available in the examples/Components/forcefield/ folder. Further evolution of this model to come! We would like to thank especially Nhan Nguyen Huu and his team for this nice contribution!

Simple GUI based on GLFW

Annoyed by Qt when needing 3D rendering for your simulation? Interested in a simple GUI?

Frederick Roy implemented on his spare time a nice plugin: SofaGLFW. Note that this GUI can be launched with the standard runSofa executable(with the parameter “-g glfw“), or can be used with a (provided) stand-alone executable (which needs much less dependencies than runSofa). Since the pull-request #2062, this plugin can be automatically pulled when configuring SOFA.

Additional improvements

Renaming four modules

Four modules did not respect the new naming convention (following namespace), they have therefore been updated:

  • SofaHelper into Sofa.Helper
  • SofaDefaulttype into Sofa.Defaulttype
  • SofaCore into Sofa.Core
  • SofaSimulationCore into Sofa.SimulationCore

Make sure to update your plugins! More can be read in #2001.

Breaking changes

New features have also some consequences in the SOFA API:

  • Remove use of compatibility layer in #2179
  • Isolate OpenGL code into a single module in #1649 and remove SOFA_NO_OPENGL in #1888
  • Refactor the BruteForceDetection in #1999
  • Move ConstraintResolution in its own file in #1847
  • Many changes on TopologyModifiers and Topology containers in #1858, #1859, #1860 & #1947
  • Remove stream operator<< in accessor in #1808
  • Add forward declaration headers in #1764 and add an opaque API for the base types in #1765

Find all the breaking pull-requests introduced since the last release on GitHub.


Due to the numerous changes in the code base,
make sure to browse all the breaking ones!


SOFA v21.06 contributors

808 posts on forum
383 merged pull-requests
1457 clones of the repository
15 contributors on GitHub

Back to Top