All Projects → AnyarInc → Ascent

AnyarInc / Ascent

Licence: apache-2.0
A fast and flexible C++ simulation engine and differential equation solver.

Projects that are alternatives of or similar to Ascent

Physics3d
A 3D physics engine
Stars: ✭ 101 (+80.36%)
Mutual labels:  engine, simulation
elasty
A research-oriented elastic body simulator
Stars: ✭ 173 (+208.93%)
Mutual labels:  simulation, engine
Sofa
Real-time multi-physics simulation with an emphasis on medical simulation.
Stars: ✭ 435 (+676.79%)
Mutual labels:  engine, simulation
Bullet3
Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.
Stars: ✭ 8,714 (+15460.71%)
Mutual labels:  simulation
Lammps
Public development project of the LAMMPS MD software package
Stars: ✭ 1,019 (+1719.64%)
Mutual labels:  simulation
Flowy
The minimal javascript library to create flowcharts ✨
Stars: ✭ 8,636 (+15321.43%)
Mutual labels:  engine
Gap
Gazebo plugins for applying domain randomization
Stars: ✭ 54 (-3.57%)
Mutual labels:  simulation
Fairroot
C++ simulation, reconstruction and analysis framework for particle physics experiments
Stars: ✭ 41 (-26.79%)
Mutual labels:  simulation
Cloudsimsdn
CloudSimSDN is an SDN extension of CloudSim project to simulate SDN and SFC features in the context of a cloud data center.
Stars: ✭ 51 (-8.93%)
Mutual labels:  simulation
Positionbaseddynamics
PositionBasedDynamics is a library for the physically-based simulation of rigid bodies, deformable solids and fluids.
Stars: ✭ 1,041 (+1758.93%)
Mutual labels:  simulation
Evolve
Artificial Life Simulator Originally Authored by Ken Stauffer
Stars: ✭ 47 (-16.07%)
Mutual labels:  simulation
Nipe
An engine to make Tor network your default gateway
Stars: ✭ 1,032 (+1742.86%)
Mutual labels:  engine
Sdformat
Simulation Description Format (SDFormat) parser and description files.
Stars: ✭ 51 (-8.93%)
Mutual labels:  simulation
Qtorch
qTorch (Quantum Tensor Contraction Handler) https://arxiv.org/abs/1709.03636 -> for quantum simulation using tensor networks
Stars: ✭ 43 (-23.21%)
Mutual labels:  simulation
Pcraster
Environmental modeling software
Stars: ✭ 52 (-7.14%)
Mutual labels:  simulation
Neo simulation
Package to simulate Neobotix robots
Stars: ✭ 41 (-26.79%)
Mutual labels:  simulation
Ros ship packages
USV simulator for ROS
Stars: ✭ 51 (-8.93%)
Mutual labels:  simulation
T Flows
Program for Simulation of Turbulent Flows
Stars: ✭ 47 (-16.07%)
Mutual labels:  simulation
Opentomb
An open-source Tomb Raider 1-5 engine remake
Stars: ✭ 1,035 (+1748.21%)
Mutual labels:  engine
Soloud
Free, easy, portable audio engine for games
Stars: ✭ 1,048 (+1771.43%)
Mutual labels:  engine

Ascent

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

Built from the ground up as a major advancement of Ascent-beta

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
  • Scripting Interface: Optional ChaiScript interface to easily script simulations

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)

Requirements

  • C++17 compliant compiler

Scripting Requirements


Why A New Version of Ascent?

Ascent-beta still remains a state of the art simulation engine, far surpassing the capabilities of many modern engines/ode solvers.

However, this new framework is...

  • Header only
  • Much, much faster. With a simple spring-mass-damper simulation, the current version is twelve-times faster than the beta version.
  • Cleaner code: Ascent doesn't require as many specialized containers, avoids pointers, and takes advantage of more core C++. This makes it faster to write simulations, the code is more comprehensible, and it is easier to debug.
  • State-space modeling: Ascent allows state space modeling and allows it to be integrated with modular design.
  • Module/Simulation abstraction: Modules are only simulation specific if they directly handle integration states. This means modules can easily be used across simulations even while running.
  • Easier, faster, and more powerful scripting: Simulation loops can now be scripted in Ascent. Scripts are also easier to move to C++ if the user wants to compile simulation designs.
  • More straightforward multi-threading
  • This new version completely separates concepts of simulators, integrators, systems, modules, recorders, and more.
  • Integration algorithms have reduced memory footprints (RK4 uses less than half the memory as before)

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].