Simulation Open Framework Architecture

Last updated
SOFA
SOFA snapshot.png
Developer(s) Inria, CNRS, USTL, UJF, MGH
Initial releaseFebruary 2007;15 years ago (2007-02)
Stable release
19.06.01 / 26 July 2019;2 years ago (2019-07-26)
Repository github.com/sofa-framework/sofa
Written in C++, Python
Operating system Linux, Microsoft Windows, OS X
Type Physics engine, Medical simulation, Framework
License GPL, LGPL
Website www.sofa-framework.org

Simulation Open Framework Architecture (SOFA) [1] is an open source framework primarily targeted at real-time physical simulation, with an emphasis on medical simulation.
It is mostly intended for the research community to help develop newer algorithms, but can also be used as an efficient prototyping tool or as a physics engine.

Contents

Features

Based on an advanced software architecture, SOFA allows users to: [2]

Scene graph

A 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. The description of a SOFA simulation can easily be done in an XML file. For even more flexibility, a Python plugin allows scripting simulations using the Python language.
Basically, a SOFA scene-graph is composed with:

Plugins

To extend its capacities and provide more features, SOFA is bundled with a lot of plugins:

Community

SOFA Day

Organized each year, the SOFA Day is a one-day event dedicated to SOFA. This event is open to everyone interested in SOFA, from beginner to advanced users. It contains an introduction to SOFA, several tutorials (adapted to the audience) and a large time to experience SOFA with the help of the instructors.

SOFA Consortium

Exactly ten years after the first commit in SOFA, Inria founded the SOFA Consortium [3] in December 2015.
The Consortium missions are to:

See also

Related Research Articles

Wolfram Mathematica Computational software program

Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allow machine learning, statistics, symbolic computation, manipulating matrices, plotting functions and various types of data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other programming languages. It was conceived by Stephen Wolfram, and is developed by Wolfram Research of Champaign, Illinois. The Wolfram Language is the programming language used in Mathematica.

Autodesk 3ds Max, formerly 3D Studio and 3D Studio Max, is a professional 3D computer graphics program for making 3D animations, models, games and images. It is developed and produced by Autodesk Media and Entertainment. It has modeling capabilities and a flexible plugin architecture and must be used on the Microsoft Windows platform. It is frequently used by video game developers, many TV commercial studios, and architectural visualization studios. It is also used for movie effects and movie pre-visualization. For its modeling and animation tools, the latest version of 3ds Max also features shaders, dynamic simulation, particle systems, radiosity, normal map creation and rendering, global illumination, a customizable user interface, new icons, and its own scripting language.

Irrlicht is an open-source game engine written in C++. It is cross-platform, officially running on Windows, macOS, Linux and Windows CE and due to its open nature ports to other systems are available, including FreeBSD, Xbox, PlayStation Portable, Symbian, iPhone, AmigaOS 4, Sailfish OS via a QT/Qml wrapper, and Google Native Client.

Computational science, also known as scientific computing or scientific computation (SC), is a field in mathematics that uses advanced computing capabilities to understand and solve complex problems. It is an area of science that spans many disciplines, but at its core, it involves the development of models and simulations to understand natural systems.

General-purpose computing on graphics processing units is the use of a graphics processing unit (GPU), which typically handles computation only for computer graphics, to perform computation in applications traditionally handled by the central processing unit (CPU). The use of multiple video cards in one computer, or large numbers of graphics chips, further parallelizes the already parallel nature of graphics processing.

OpenSceneGraph

OpenSceneGraph is an open-source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.

Physics engine Software for approximate simulation of physical systems

A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics, soft body dynamics, and fluid dynamics, of use in the domains of computer graphics, video games and film (CGI). Their main uses are in video games, in which case the simulations are in real-time. The term is sometimes used more generally to describe any software system for simulating physical phenomena, such as high-performance scientific simulation.

Windows Presentation Foundation (WPF) is a free and open-source graphical subsystem originally developed by Microsoft for rendering user interfaces in Windows-based applications. WPF, previously known as "Avalon", was initially released as part of .NET Framework 3.0 in 2006. WPF uses DirectX and attempts to provide a consistent programming model for building applications. It separates the user interface from business logic, and resembles similar XML-oriented object models, such as those implemented in XUL and SVG.

Blender Game Engine

The Blender Game Engine is a discontinued component of Blender, a free and open-source 3D production suite, used for making real-time interactive content. The game engine was written from scratch in C++ as a mostly independent component, and includes support for features such as Python scripting and OpenAL 3D sound.

CUDA Parallel computing platform and programming model

CUDA is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing unit (GPU) for general purpose processing, an approach called general-purpose computing on GPUs (GPGPU). CUDA is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements, for the execution of compute kernels.

VSim

VSim is a cross-platform computational framework for multiphysics, including electrodynamics in the presence of metallic and dielectric shapes as well as with or without self-consistent charged particles and fluids. VSim comes with VSimComposer, a full-featured graphical user interface for visual setup of any simulation, including CAD geometry import and/or direct geometry construction. With VSimComposer, the user can execute data analysis scripts and visualize results in one, two, or three dimensions. VSim computes using the powerful Vorpal computational engine, which has been used to simulate the dynamics of electromagnetic systems, plasmas, and rarefied as well as dense gases. VSim is used for modeling basic electromagnetics and plasma physics, complex metallic and dielectric shapes, photonics, vacuum electronics including multipactor effects, laser wake-field acceleration, plasma thrusters, and fusion plasmas.

OptiX Nvidia ray tracing API using CUDA to compute on GPUs

Nvidia OptiX is a ray tracing API that was first developed around 2009. The computations are offloaded to the GPUs through either the low-level or the high-level API introduced with CUDA. CUDA is only available for Nvidia's graphics products. Nvidia OptiX is part of Nvidia GameWorks. OptiX is a high-level, or "to-the-algorithm" API, meaning that it is designed to encapsulate the entire algorithm of which ray tracing is a part, not just the ray tracing itself. This is meant to allow the OptiX engine to execute the larger algorithm with great flexibility without application-side changes.

GPULib is discontinued and unsupported software library developed by Tech-X Corporation for accelerating general-purpose scientific computations from within the Interactive Data Language (IDL) using Nvidia's CUDA platform for programming its graphics processing units (GPUs). GPULib provides basic arithmetic, array indexing, special functions, Fast Fourier Transforms (FFT), interpolation, BLAS matrix operations as well as LAPACK routines provided by MAGMA, and some image processing operations. All numeric data types provided by IDL are supported. GPULib is used in medical imaging, optics, astronomy, earth science, remote sensing, and other scientific areas.

Deeplearning4j

Eclipse Deeplearning4j is a programming library written in Java for the Java virtual machine (JVM). It is a framework with wide support for deep learning algorithms. Deeplearning4j includes implementations of the restricted Boltzmann machine, deep belief net, deep autoencoder, stacked denoising autoencoder and recursive neural tensor network, word2vec, doc2vec, and GloVe. These algorithms all include distributed parallel versions that integrate with Apache Hadoop and Spark.

CudaText Open source text editor

CudaText, from Bosnian-Croatian-Montenegrin-Serbian čuda, is a free open source cross-platform native GUI text and source code editor. CudaText supersedes its predecessor SynWrite, no longer under development.

Dask (software)

Dask is an open source library for parallel computing written in Python. Originally developed by Matthew Rocklin, Dask is a community project maintained and sponsored by developers and organizations.

References

  1. Allard, Jérémie; Cotin, Stéphane; Faure, François; Bensoussan, Pierre-Jean; Poyer, François; Duriez, Christian; Delingette, Hervé; Grisoni, Laurent (2007). "SOFA - an Open Source Framework for Medical Simulation". Medicine Meets Virtual Reality (MMVR'15). Retrieved 24 January 2017.
  2. "SOFA Features".
  3. "SOFA Consortium".