What’s new in SOFA v22.06
Breaking changes
SOFA is currently changing a lot (for the good!). Architecture refactoring and introduction of new features have consequences in the API. Major breaking contributions are detailed below:
Work within the SOFA-NG project implied to refactor all SOFA architecture:
- Old modules are now deprecated, new modules were created, components were moved to the new modules following a better dispatch.
- Deprecated modules are still usable for now but will be permanently removed at v23.06.
A documentation on transition is available to help you understand the changes and update your code.
Cleaning and simplifying the code base implied to:
- Update data name in SparseLDLSolver #2904
- Add a helper class for consistent component naming #2631
- Move TriangleOctree utility class to Helper #2805
- BoxStiffSpringForceField is now a pack of components #2621
- Some cleaning in TriangularFEMForceFieldOptim #2567
- Create a TriangleFEMUtils class to factorise [Triangle,Triangular]FEMForceField code #2287
- Remove unused _assembling data #2901
- Fix duplicate Data Points in PointSetTopologyContainer #2993
Find all the breaking pull-requests introduced in this release.
Matrix access with SofaMatrix
Since #2782, it is possible to export the compliance matrix of a constraint solver as well.
See the Matrix Assembly GitHub project and the associated pull-requests for more information.
New features for linear solvers
This namely includes the following contributions:
- A new asynchronous LDL solver called AsyncSparseLDLSolver, to be used with a preconditioned CG (ShewchukPCGLinearSolver) and a WarpPreconditioner. See #2661
- SparseLDLSolver, SparseLUSolver and SparseCholeskySolver now support fill reducing permutation. See and #2788
- Eigen-based version of DirectSparseSolver, SimplicialLDLT, SimplicialLLT, SparseLU and SparseQT have been implmemented. See #2926
Improvement of the SofaCUDA plugin
Among those changes, the CUDA implementation of HexahedronFEMForceField has been restored. Thanks to this component, a simulation of a beam with 3645 Hexahedra goes from 42 fps on CPU to 180 fps with CUDA.
More changes related to SofaCUDA:
- Added support for ConstantForceField, MultiMapping, SubsetMultiMapping, TetrahedronTLEDForceField, and NearestPointROI.
- Added benchmark scenes.
- Usual bugfixes and cleaning.
See all SofaCUDA-related pull-requests for more details.
Load images without CImgPlugin
Thanks to the integration of STB library in the core of SOFA, it is now possible to load images without having to use the plugin CImgPlugin. STB is open source, very light and header-only.
See pull-request #2551 for all details.
Reduce AdvancedTimer overhead
A simple but pretty useful change in the code of AdvancedTimer allowed to greatly improve its performances.
See pull-request #2645 for all details.
Plugin: Caribou
The Caribou project is aimed at multiphysics computation. It brings a plugin that complements SOFA multiphysics framework. It also provides generic C++ utilities, and SOFA components such as solvers and forcefields.
Read more about the Caribou plugin!
Plugin: BeamAdapter
The plugin implements the Kirchhoff rod theory modeling any 1D flexible structure, like catheters or guidewires. Moreover, an adaptive formulation is proposed to model the insertion of such medical devices.
Discover more about the BeamAdapter plugin which is finally open-source!