Umbra is a flexible tactical hybrid simulation engine and framework developed by Sandia Labs, that is designed to model complex systems rapidly. Umbra can integrate physical, cyber, and behavioral elements at variable fidelity in a 3D environment. It regularly works the range of Live-Virtual-Constructive (LVC) environments, including faster than real-time simulation calculations for generative analysis and real-time interactions that incorporate live external data feeds or human interaction.
The Umbra framework is implemented in C++, and Umbra module libraries are usually written in C++. Umbra integrates Tcl for an interactive shell and scripting language. Modules are typically named upon creation and are addressable via these names in Tcl. Furthermore, data ports on named modules are automatically accessible in Tcl via their labels, as are designated member functions. Tk is optionally used for constructing GUIs. Umbra also includes mechanisms that support event-driven simulation, such as C++ and Tcl callback objects.
A start-up Tcl script is typically used to first load the Umbra libraries containing the desired module classes and then to call C++ code to create the desired modules and connect their ports as required.