New method in the GenericConstraintSolver
Implemented by ICube researchers, the Non-smooth Non-linear Conjugate Gradient (NNCG) is added as an alternative to the Projective Gauss Seidel (PGS) as NLCP solver in the GenericConstraintSolver.
The PR #3053 introduces a Data
resolutionMethod with the following options: “ProjectedGaussSeidel”, “UnbuiltGaussSeidel” or “NonsmoothNonlinearConjugateGradient” and 3 associated examples are provided for each option.
The documentation of the GenericConstraintSolver has also been added updated.
Topological change API
In collaboration with KIT, InfinyTech3D extensively worked on the API for topological changes in SOFA and the associated tests.
Change in Topology components
- PR #2993: [Topology.Container.Dynamic] Fix duplicate Data Points in PointSetTopologyContainer
- PR #3216: [Topology] Fix initTopology call chains for mesh without topology
- PR #3368: [Topology] Add fonction in BaseMeshTopology to compute all topology containers
- PR #3428: [core.topology] Add mechanism in mapping to check checkTopologyInputTypes
Change in Topology modifers
- PR #3271: [Topology] Improve TopologyHandler registration
- PR #3330: [Topology] Fix internal infinite update loop in TopologySubsetData remove process
- PR #3369: [Topology] Fix topologyHandler removal
Introduction of user-defined literals
So far, the definition of literals for SReal constants was either ugly or not possible. In the never-ending quest of eradicating implicit type conversion, the PR #3314 introduces a user-defined literal.
It is now possible to write:
Vector3(1_sreal, 1_sreal, 1_sreal)
Using the header-only difflib external library introduced in PR #3042, ObjectFactory now suggests component spelling when a component cannot be created. An nice assistance when designing a simulation!
In addition, PR #3404 converts the warning to an error in the code checking if the given template belongs to list of allowed templates. As failing template deduction is now an error, this PR may lead to so-far-undetected failures.
Proposed by InfinyTech3D, this plugin implements a tearing method which supports by default triangular surfaces. Volume tearing on tetrahedral mesh need a second plugin called MeshRefinement and is still work in progress. To contribute in the project or have access to the latest developments, do not hesitate to contact and collaborate with InfinyTech3D.
This recent C++ plugin couples SOFA with the ROS2 environment. SOFA could already connect to ROS2 via a python interpreter but this plugins allows to create a direct connection between your SOFA simulation and the ROS2 environment.