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()
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.
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).
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