The SofaCaribou plugin implements a modularized approach to continuum mechanics models, as well as advanced numerical tools to SOFA (e.g. solvers).
Its modern C++ design is based on compile-time polymorphism using comprehensible template metaprogramming. It also mixes high performance with high generecity: most components are completely independent from the element type (triangle, quad, tetrahedron, hexahedron, etc.). It therefore allows the developer of a component to focus on the algorithm itself and delegate to the compiler the generation of any element specific implementation. Moreover, most components are accompanied by their respective python bindings. This plugin is therefore fully on pair with the SofaPython3 plugin.
- Quadratic triangle, quad, tet and hexa elements
- Element-generic mass with optional lumping
- Element-generic optimized hyperelastic forcefield
- Eigen wrappers for sparse linear solvers
- Non-linear Newton-Raphson solvers for static and bwd schemes
- Element-generic barycentric mapping
- Robust unittests for most components
- Validation against FEBio and FEniCS, replicable with docker
- Validation against manufactured solutions