Scene graph: a simulation in SOFA is described as a Direct Acyclic Graph (DAG), i.e. a generalized hierarchy. The simulation is therefore composed of nodes containing the components used for the computation (solvers, models, visualization, etc.). The properties of a specific component are called “Data” and these “Data” can be linked each other.
State vectors: originally designed for soft mechanics, the degrees of freedom and all other state vectors (velocity, forces, etc.) are store in a key component: the MechanicalObject. This component stores everything about the simulated object. Depending on its template, the degrees of freedom can be 1D, 2D, 3D, 6D or rigid (3D + orientation).
Algorithms & models: the SOFA engine provides many algorithms and physiological models. Here is a short list of the available codes in SOFA. First, SOFA includes different integration schemes and linear system solvers:
- Integration schemes: Euler explicit, Euler implicit, RK2, RK4, static solver,
- Linear system solvers: iterative solver (Conjugate Gradient), direct solvers.
Different physical models are also available in SOFA:
- Rigid models: articulated bodies based on penalties or reduced coordinates,
- Deformable models: mass spring, FEM (triangles, tetrahedra, hexahedra) with many different constitutive laws,
- Fluid models: SPH, Eulerian formulation.
Multi-model representation: the SOFA architecture relies on a multi-model representation which allows to have several representations (e.g. mechanical, thermal and visual) of the same object. Those different representations are connected together through a mechanism called the “Mappings”. With this features, it is also possible to have models of very different nature interacting together, for instance rigid bodies, deformable objects, and fluids.
Topology: all types of topology are available in SOFA (points, edges, triangles, quads, tetrahedra, hexahedra). Loaders implemented in the public version of SOFA allow to load various type of formats (obj, msh, vtk, etc.). Using these loaders, your mesh is directly uploaded in the simulation. Finally, SOFA proposes algorithms handling topological changes.
Collision: different methods are at your disposal in SOFA to build a simulation involving collision:
- Collision models: spheres, triangular meshes, distance fields; with AABB-tree or octree bounding volume hierarchies,
- Collision detection methods: BVH, discrete intersection (proximity method), LDI (Layer Depth Image), Distance maps,
- Collision response methods: penalty method, LCP-based constraints.