SOFA v18.12

What’s new in SOFA v18.12

Breaking: DataEngine, Data tracking, Data updates

Efforts have been made on making DataEngine and Data tracking easier to use.

  • A new implementation of DataEngine hides the code related to updating datafields and calling cleanDirty(). This replacement requires every Engine to:

    • replace its update() method with the new delegate doUpdate()
    • remove the calls to data.isDirty() and (smartly) replacing them with m_dataTracker.isDirty(data)
    • remove the cleanDirty() calls while making sure to not break the engine’s behavior
  • DataTrackerDDGNode::isDirty() method has been renamed to hasChanged() to reduce confusion with BaseData::isDirty()

See #760, #814, #822.

Breaking: Mass homogenization

Multiple breaking changes were made to mass components to make them more understandable:

  • unify the naming of datafields (vertexMass, massDensity and totalMass)
  • unify initialization processes
  • apply the coding rules (especially regarding the variable prefix d_ and m_) and use the msg API
  • add the feature of dataTracker on the data for mass information
  • add support for additional CUDA templates for the MeshMatrixMass (that should always be preferred as default mass)

See #637.

Fixed: misc

Collaborative work with InSimo
See #756.

Segfault with static analyzers on MacOS
See #642.

Bug in Quater::toEulerVector()
See #399.

SparseGridTopology initialization
See #670.

Improved: Doc

Documentation “Main Principles” category has been greatly improved with new pages about Integration schemes, solvers, collision, constraints and more.

See Main Principles documentation.

Improved: Multithreading

The Multithreading plugin has been cleaned and improved.

  • TaskScheduler API has been moved to SOFA core to allow different scheduling strategies.
  • Default implementation: DefaultTaskScheduler (C++11) using a stack of tasks (LIFO).
  • FreeMotionAnimationLoop is parallelized (not completely).

See Multithreading pull-requests.

Improved: SofaPython & PSDE

Concerning SofaPython, this release brings:

  • New bindings
  • Print Components methods, Datas and Links with dir(myComponent)
  • PSDE adaptation to new DataEngine API
  • PSDE inputs/outputs derivation
  • Cleans and fixes

See SofaPython pull-requests.

SOFA v18.12 contributors

105 new topics on forum
101 merged pull-requests
30 closed issues
21 contributors on GitHub

Back to Top