SOFA v24.12

download

What’s new in SOFA v24.12

Introduction of new mappings

New mappings were introduced namely:

The mapping API was also modernized and associated tests were added. This work is done within the roadmap “Constraint Modernization” since it falls within the objective to simplify constraints by decoupling the constraints into combination of one simple constraint and a mapping projecting the problem in the constraint space. The VolumeMapping could for instance be used to implement a volume preservation constraint.

Augmented lagrangian algorithm for large deformation frictional contact

The pull-request #5003 introduces an initial implementation of the Augmented Lagrangian method for collision handling, inspired by the approach detailed in the paper entitled A Surface-to-Surface Finite Element Algorithm for Large Deformation Frictional Contact. The integration of this method involved refactoring the code to include a virtualization layer for constraints and their corresponding contact responses, encapsulated in the newly added classes BaseContactLagrangianConstraint and BaseUnilateralContactResponse.

This design utilizes a contact parameter template to manage the primary differences in data and the type of constraint resolution applied. Additionally, a demo scene has been added to the repository, which adapts the existing falling beam example to showcase the Augmented Lagrangian response. While this implementation is functional, a future enhancement has been identified: incorporating per-contact-point penalty modulation. Achieving this will require revisiting the collision element through the DetectionOutput.elem attribute to access the topology and compute element volumes, particularly when the colliding topology is mapped to the simulated one.

New explicit components registration (ObjectFactory)

With the objective to later remove the ObjectFactory singleton, the pull-request #4429 and all folowing ones in the “Refactor Object Registration” project aimed at replacing the implicit registration of objects while loading dynamic libraries. The proposed implementation is an explicit registration which has been applied on all core modules. The legacy RegisterObject mechanism is preserved and will warn the user at the compilation and at run-time.

Update your plugins following the instructions detailed on the documentation page “How to update plugins“.

Nix packaging

Following an Inria technical event, we had the pleasure to wwelcome Guilhem Saurel’s contribution introducing a Nix package for SOFA. The pull-request #5059 also includes a flake (and its lock), which is not mandatory, but ease the use of the package. All the Nix packaging and commands are now available on the SOFA documentation. Guilhem extended this contribution by adding a Nix package to SofaPython3.

Breaking changes

Main breaking changes are:

  • [Helper] Add Accessors for Array types #5114
  • [Core] Constexprification of VecId #5082
  • [all] Various changes relative to the constraint matrix #5017
  • [Mapping.NonLinear] A base class for (almost) all non linear mappings #5006
  • [Mapping.Linear] Use links instead of raw pointers #4996
  • [FEM] Components override the template API instead of the generic one #4982
  • [Collision.Detection.Intersection] Delete compat layer for intersection #4916
  • [FEM.Elastic] Some FEM inherits from BaseLinearElasticityFEMForceField #4852
  • [All] VisualModel: implement NVI for init/updateVisual() #4827
  • [Sofa.GL] OglModel: Deprecate/Remove isEnabled Data #4822
  • [Core] Proposition to reduce the number of alias declarations #4788
  • Core] Factorize two variables with the same meaning (constraint id) #4786
  • [FEM.Elastic] Start unification of tetra FF and division of tests #4778
  • [Spring] Merging StiffSpringForceField and its parent #4649
  • [All] ObjectFactory: Explicit components registration #4429

Find all the breaking pull-requests introduced in this release.

SOFA v24.12 contributors

1043 posts on GitHub Discussions
204 merged pull-requests
2291 clones of the repository
10 contributors on GitHub

 
 

Back to Top