Discrete and Continuous Parameter Mixing

Ascent supports asychronous sampling and events with mixed discrete and continuous variables.

Solve Highly Dynamic Simulations

Modules can be dynamically added, deleted, frozen, and reconnected, all of which is handled for proper numerical integration.

Automatic Simulation Ordering

No need to handle system wide ordering. Ascent eliminates the nightmare of handling the flow of massively dynamic simulations.

Open Source

Ascent and its dependencies are free to use in both open and closed source commerical projects.

Portable

Ascent is tested for 32bit and 64bit on Windows (MSVC2015), Mac (Xcode) LLVM, and Linux GNU GCC 5.x

Share Modules

Any module built on Ascent can run in any other Ascent simulation. Incorporate other open source Ascent modules and combine libraries for large scale simulations.

Ascent-Community | A GitHub organization for modules and libraries built on Ascent


Ascent was designed to replace two aerospace simulation architectures used by the US Air Force, Army, and NASA. It was further developed to replace viscoelastic human injury modeling and internal gas dynamics engines.

Ascent is versaitle, and applicable to a wide range of simulation needs.


Easily Simulate Highly Connected Systems

Spring-Mass-Damper system that can easily be reconfigured.
Example Code

Powerful Differential Equation Solver

Entire Systems As ODEs

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.


Minimum Phase-Based Integration

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.


Lorenz Example

Integrators

  • 4th Order Runge Kutta and RK-Merson
  • Real-Time Predictor Correctors (Advanced Adams-Moulton)
  • Dormand Prince (45 & 87, with adaptive stepping*)

    *Supports global or state specific tolerances


    Asynchronous Sampling and Event Scheduling

  • Dynamically assign events that are exactly stepped to with proper numerical integration.
  • Mix discrete and continuous signals to simulate hardware in the loop.
  • Automatic Ordering

    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.

    More On Automatic Ordering

    Variable Tracking

    Ascent provides a built in engine for efficiently tracking variables.

    • Save to .csv file
    • Stream via std::stringstream
    • Output as csv or JSON formatted std::string

    Example Code

    Scripting Engine

    Easily connect, initialize, and run your models in the embedded ChaiScript engine.

    • Handles Eigen linear algebra matrix operations

    Eigen Linear Algebra

    Ascent uses the fast and mature Eigen C++ linear algebra library, providing straightforward matrix and vector handling.

    • Solve differential equations with Eigen vectors and matrices
    • Track Eigen vectors and output history to csv files
    • Compute time history derivatives and integrals of vectors

    JSON Construction/Parsing

    Built in JSON API for externally accessing and setting variable states. Powered by the jsoncons library.

    • Automatically interpolates data at requested simulation time
    • Interchangeable input/output: output from JsonAPI can be directly used as input to a distributed Ascent instance