Ascent supports asychronous sampling and events with mixed discrete and continuous variables.
Modules can be dynamically added, deleted, frozen, and reconnected, all of which is handled for proper numerical integration.
No need to handle system wide ordering. Ascent eliminates the nightmare of handling the flow of massively dynamic simulations.
Ascent-Community | A GitHub organization for modules and libraries built on Ascent
Often times simulation software will separate differential equation solving from the rest of the system. Ascent provides more accurate results by collectively solving entire systems within its differential equation engine.
Simulations are run by implementing no more than six phases. These phases (init, update, postcalc, check, report, and reset) are the minimum number of phases for the design features allowed. Ascent supports pre, intermediate, and post integration computations, checking mechanisms for stopping the simulation, resetting of parameters to support driving modules, and more.
*Supports global or state specific tolerances
By default Ascent ensures that data is accessed from updated modules
Ascent mixes concepts of module level ordering with variable access ordering. Ordering is performed automatically based on how algorithms are written with minimal required user input. This allows simulation designers to focus on unique module associations and not have to be concerned with entire simulation flows. The mixture of module and variable level ordering offers a "best of both worlds" approach to simulation design that simplifies user effort while making it possible to design extremely complex and dynamic simulations.
The programmer doesn't define any of this ordering. The ordering is automatically generated from how module data is accesssed.
Ascent provides a built in engine for efficiently tracking variables.
Easily connect, initialize, and run your models in the embedded ChaiScript engine.
Ascent uses the fast and mature Eigen C++ linear algebra library, providing straightforward matrix and vector handling.
Built in JSON API for externally accessing and setting variable states. Powered by the jsoncons library.