Simbody  3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Simbody™ API Reference Documentation

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 the tutorials in the Simbody User's Guide that you can find at the Simbody project site https://simtk.org/home/simbody "Documents" tab. There is also a collection of working example programs that come with the Simbody installation (in the examples directory). Both source and ready-to-execute binaries of the examples are installed. If you have specific questions, use the Simbody help forum under the "Public Forums" tab. You can also file bug reports and make feature requests using the tools provided there.

isaac.png
Our hero, Sir Isaac Newton

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 (https://simtk.org/home/opensim) and coarse-grained biomolecular modeling (https://simtk.org/home/rnatoolbox). It is also well suited to related simulation domains such as robotic and avatar simulation and control, and provides real time capabilities that make it useful for interactive scientific simulations as well as virtual worlds and games.

Simbody uses a minimal coordinate recursive formulation of the equations of motion, providing computation of system dynamics to machine precision with O(N) computational complexity for N interconnected bodies. 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, 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.
  • Molmodel (https://simtk.org/home/molmodel), a C++ API for constructing coarse-grained, Simbody-based internal coordinate models of macromolecules like proteins and RNA, and
  • OpenMM (https://simtk.org/home/openmm), a GPU-accelerated high-performance numerical library for efficient calculation of molecular force fields. OpenMM may be used standalone or through Molmodel.

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 well-engineered community contributions.

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.