Coder Social home page Coder Social logo

ascent's Introduction

Ascent

An extremely fast and flexible C++ simulation engine and differential equation solver.

See the Ascent Wiki for more examples and help

Study the modular-spring-damper example to learn the basics of solving matrix free systems of ordinary differential equations in an object-oriented manner

Blazingly Fast

Ascent's integration algorithms are designed for speed, and outperform boost's odeint in both Debug and Release

Integration algorithms are automatically vectorized when using std::vector

Extremely Flexible

Ascent solvers conform to the odeint system syntax, letting you run odeint system without changes (and with faster results!)

odeint solvers can also be used to run Ascent simulations, providing all flexibility of the odeint engine with Ascent's simulation framework

Ascent can solve complex, dynamic systems of differential equations in a modular, object-oriented manner

Easily multi-thread systems and change integrators on the fly

Highlights

  • Header Only
  • Automatic Vectorization: Ascent conforms to vectorization standards (such as Intel's)
  • Free for open source and commercial applications (Apache License)
  • Modular (Optional): solve systems in an object-oriented manner
  • Variable Tracking: Optimized recording of variable time history
  • Asynchronous Sampling and Event Scheduling
  • Multiple Integration Algorithms (In Progress): adaptive steppers, predictor-correctors, etc.
  • Use boost's odeint library as the numerical integration engine

Requirements

  • C++17 compliant compiler

Applications

  • Aerospace, multi-body physics, chemical reactions, economics, circuits, and much more
  • As a game engine for synchronization and physics
  • Agent-based simulations
  • Complex systems of differential equations
  • State-space modeling
  • Control algorithms (e.g. robotics)

About odeint

odeint is a C++ ordinary differential equation solver that is part of the boost library.
Ascent 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.
odeint 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.

ascent's People

Contributors

stephenberry avatar mwalcott3 avatar cavalos-anyar avatar rxdu avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.