Simbody  3.5
Simbody™ API Reference Documentation

What is Simbody?

Simbody is a high-performance, industrial-grade open source C++ library providing sophisticated treatment of articulated multibody systems with special attention to the needs of biomedical simulation. It is useful for predictive dynamic simulations of diverse biological systems such as neuromuscular biomechanical models (OpenSim) and coarse-grained biomolecular modeling (MacroModelBuilder). It is also well suited to related simulation domains such as robot simulation and control (Gazebo), and "soft" real time applications like interactive scientific simulation, virtual worlds, and games.

isaac.png
Our hero, Sir Isaac Newton

Simbody uses an internal coordinate, recursive formulation of the equations of motion, providing computation of system dynamics to machine precision with O(n) computational complexity for n joint degrees of freedom (similar to a Featherstone formulation). Arbitrary adjoined constraints, contact modeling, and advanced numerical methods provide fast, robust simulation for any mechanical or biomechanical system from machines and vehicles to human skeletons and macromolecules.

Simbody is part of the SimTK biosimulation toolkit originating from Simbios, the NIH National Center for Physics-Based Simulation of Biological Structures at Stanford, initially funded under the NIH Roadmap for Medical Research, grant U54 GM072970. Related tools include

  • OpenSim (http://opensim.stanford.edu and https://simtk.org/home/opensim), a freely available software system for building, exchanging, and analyzing musuloskeletal models and dynamic simulations of movement. Includes both a graphical user interface and an API; automatically constructs Simbody models from high-level description.
  • OpenMM (https://simtk.org/home/openmm), a GPU-accelerated high-performance numerical library for efficient calculation of molecular force fields.

Simbody is hosted on the SimTK.org biosimulation community site, at https://simtk.org/home/simbody and is a community resource available for unrestricted academic, commercial, government, and personal use. The source code is maintained on GitHub, at https://github.com/simbody.

Simbody was conceived and initially implemented by Michael Sherman (Sherm), with substantial contributions from Peter Eastman, both of the Simbios Center at Stanford. Many others have contributed to the software, support, and documentation and we invite community contributions; please see CONTRIBUTING.md (also available in the doc subdirectory of your Simbody installation).

Getting started with Simbody

You are looking at the main page for the reference documentation of the Simbody API. This documentation was generated by Doxygen directly from the Simbody source code as annotated by the original programmers so it is both accurate and comprehensive. As you will quickly realize if you look around, this is a large system providing a great deal of functionality. It is, however, very easy to use if you know where to begin – and this reference documentation is most definitely not the place to start if you want to learn how to use Simbody. Instead, start with README.md and the tutorials in the Simbody User's Guide (in the doc subdirectory of your Simbody installation). There is also a collection of working example programs that come with the Simbody installation (in the Simbody/examples directory on Windows or share/doc/simbody/examples on Linux or OSX). Both source and ready-to-execute binaries of the examples are installed. If you have specific questions, or success stories to share, use the Simbody Forum on SimTK.org. You can file bug reports and make feature requests using the Simbody Issue Tracker on GitHub.

How to use this documentation

If you know the name of the class, method, or other symbol for which you want information, you can enter it into the search box above and click directly to the documentation for that symbol. You can also enter words or partial symbols and get a list of names that include your search key. Unfortunately Doxygen does not currently provide a full-text search capability. Another approach is to select the Classes tab to get an alphabetical listing of all the class names, and there is a tab below that providing a class hierarchy view. Here is an abbreviated list of important classes, all in the SimTK:: namespace:

For an overview of Simbody, read this paper: Michael A. Sherman, Ajay Seth, Scott L. Delp, "Simbody: multibody dynamics for biomedical research," Procedia IUTAM 2:241-261 (2011)

License

We encourage the broadest possible use of Simbody for any purpose by using the extremely permissive Apache 2.0 License. We would appreciate some acknowledgement if our work has been helpful in yours, but our license does not require that. For more information see our license page.