Skip to content

An open source C++ architecture for time-based simulations. Modular and dynamic, with discrete and continuous parameter mixing. Easily solve complex systems of differential equations.

License

Notifications You must be signed in to change notification settings

gitter-badger/ascent

 
 

Repository files navigation

ASCENT

An open source C++ architecture for time-based simulations.

Developed by Anyar, Inc.

Ascent is a module-based simulation architecture that can handle extremely complex and dynamic systems. The architecture is built around a powerful ordinary differential equation solver, but Ascent can do far more than solve differential equations.

Why build simulations with Ascent?

  • Modular: Share and reuse modules.
  • Object Oriented: Polymorphic module handling.
  • Automatic Simulation Ordering: Ascent automatically orders the flow of the simulation, which allows a simulation designer to develop and solve highly modular and complex systems.
  • Asynchronous Sampling and Event Scheduling
  • Run-Time Dynamic Systems: Allows dynamic module creation, deletion, linking, and ordering, all properly handled for correct numerical integration.
  • Fast Running: Insofar as to not sacrifice dynamic behavior.
  • Simulators Can Run On Separate Threads
  • Integrators: Runge Kutta, Dormand Prince, and multiple real-time predictor-correctors. Some integrators support adaptive stepping.
  • Built In Variable Tracking: Easily record and output time history of integers, doubles, vectors, and even custom data types.
  • ChaiScript Embedded Scripting Language: Easily connect, initialize and run your modules from a powerful scripting engine.
  • Eigen C++ Linear Algebra Library: Ascent utilizes the mature Eigen library, providing straightforward matrix and vector handling.
  • Easy To Begin!: Only two classes (asc::Module and asc::Link) are required to solve most differential equations or systems.

Building The Ascent Library

  • Clone Ascent
  • Install the CMake GUI and use it to generate a build directory within the Ascent directory
  • Or, if you're on Windows, just double click the build.bat file to build Visual Studio 14 2015 Win64 project and libraries. You can edit the batch file and change the generator to another compatable CMake generator.

Ascent requires a C++14 compliant compiler.

Ascent was designed to allow any modules built on Ascent to be easily shared and interfaced with other Ascent modules.
Share your open source modules and libraries built on Ascent in the Ascent-Community repositories.

Contributions are Welcome!

Please report bugs, offer fixes, contribute modules, ask questions and answer questions. The more the merrier!

For those interested in contributing to the core of Ascent, see For Architects of Ascent, which explains more details of architecture design/goals.

Projects using Ascent

  • Anyar, Inc. uses Ascent for high fidelity, six degree of freedom missile modeling.
  • Anyar, Inc. maintains viscoelastic human injury blunt and blast trauma software built on Ascent.
    Share your projects using Ascent.

About

An open source C++ architecture for time-based simulations. Modular and dynamic, with discrete and continuous parameter mixing. Easily solve complex systems of differential equations.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 99.3%
  • Other 0.7%