1# Ascent 2 3An extremely fast and flexible C++ simulation engine and differential equation solver. 4 5See the [Ascent Wiki](https://github.com/AnyarInc/Ascent/wiki) for more examples and help 6 7Study the [modular-spring-damper](https://github.com/AnyarInc/Ascent/wiki/modular-spring-damper) example to learn the basics of solving matrix free systems of ordinary differential equations in an object-oriented manner 8 9## Blazingly Fast 10 11Ascent's integration algorithms are designed for speed, and outperform boost's [odeint](http://headmyshoulder.github.io/odeint-v2/index.html) in both Debug and Release 12 13<img src="https://github.com/AnyarInc/Ascent/wiki/graphics/speedup-ratio.PNG" width="400"><img src="https://github.com/AnyarInc/Ascent/wiki/graphics/Lorenz.PNG" width="300"> 14 15Integration algorithms are automatically vectorized when using std::vector 16 17## Extremely Flexible 18 19Ascent solvers conform to the odeint system syntax, letting you run odeint system without changes (and with faster results!) 20 21odeint solvers can also be used to run Ascent simulations, providing all flexibility of the odeint engine with Ascent's simulation framework 22 23Ascent can solve complex, dynamic systems of differential equations in a modular, object-oriented manner 24 25Easily multi-thread systems and change integrators on the fly 26 27## Highlights 28- Header Only 29- Automatic Vectorization: Ascent conforms to vectorization standards (such as Intel's) 30- Free for open source and commercial applications (Apache License) 31- Modular (Optional): solve systems in an object-oriented manner 32- Variable Tracking: Optimized recording of variable time history 33- Asynchronous Sampling and Event Scheduling 34- Multiple Integration Algorithms (In Progress): adaptive steppers, predictor-correctors, etc. 35- Use boost's odeint library as the numerical integration engine 36 37*** 38## Requirements 39- C++17 compliant compiler 40 41## Applications 42- Aerospace, multi-body physics, chemical reactions, economics, circuits, and much more 43- As a game engine for synchronization and physics 44- Agent-based simulations 45- Complex systems of differential equations 46- State-space modeling 47- Control algorithms (e.g. robotics) 48 49*** 50### About [odeint](https://github.com/boostorg/odeint) 51odeint is a C++ ordinary differential equation solver that is part of the boost library. 52Ascent was partly inspired by the design of odeint, but Ascent offers better performance where comparisons can be made, this is especially true for solving object-oriented systems. 53odeint offers various state types and solvers that Ascent integration algorithms currently do not support, so the odeint solvers are a viable option as the integration algorithm beneath an Ascent simulation. 54