Loading...

The SOFA architecture

The SOFA architecture relies on several innovative concepts, in particular the notion of multi-model representation. In SOFA, most simulation components (deformable models, collision models, instruments, ...) can have several representations, connected together through a mechanism called mapping. Each representation can then be optimized for a particular task (e.g. collision detection, visualization) while at the same time improving interoperability by creating a clear separation be tween the functional aspects of the simulation components. As a consequence, it is possible to have models of very different nature interact together, for instance rigid bodies, deformable objects, and fluids. At a finer level of granularity, we also propose a decomposition of physical models (i.e. any model that behaves according to the laws of physics) into a set of basic components. This decomposition leads for instance to a representation of mechanical models as a set of degrees of freedom and force fields acting on these degrees of freedom. Another key aspect of SOFA is the use of a scene-graph to organize and process the elements of a simulation while clearly separating the computation tasks from their possibly parallel scheduling.
In a nutshell, SOFA allows to:
  • Create complex and evolving simulations by combining new algorithms with existing algorithms
  • Modify most parameters of the simulation (deformable behavior, surface representation, solver, constraints, collision algorithm, ...) by simply editing a XML file
  • Build complex models from simpler ones using a scene-graph description
  • Efficiently simulate the dynamics of interacting objects using abstract equation solvers
  • Reuse and easily compare a variety of available methods
  • Transparently parallelize complex computations using semantics based on data dependencies
  • Use new generations of GPUs through the CUDA API to greatly improve computation times
Several results obtained using SOFA can be seen here. Most of these results are generic and only aim at validating the different aspects of the SOFA framework. Actual developments of complex medical simulations has already begun, results will be posted as they become available.

Current status

Currently, SOFA contains:
  • Deformable models: mass-springs, linear and co-rotationnal FEM
  • Rigid models: articulated bodies based on penalities or reduced coordinates
  • Fluid models: SPH, Eulerian (preliminary)
  • Collision models: spheres, triangular meshes, distance fields (preliminary); with AABB-tree or octree bounding volume hierarchies
  • Collision detection methods: proximity, continuous (preliminary)
  • Collision response methods: (implicit) penalities, LCP-based constraints
  • Mechanical integration schemes: Euler explicit, RK2, RK4, static, implicit euler using PCG (Projected Conjugate Gradient)
  • About 250.000 lines of C++ code
  • Contributions from 20 developers.
It has been downloaded more than 20.000 times.