http://anyarinc.github.io/ascent/
Replaces two aerospace architectures used by the US Air Force, Army, and NASA:
Developed under Phase 3 SBIR for Air Force Research Lab
➢ Automatic, dynamic ordering with mixed synchronicity
➢ Non-iterative, matrix free system solving
➢ Modern, memory managed, C++
➢ Distributed and multi-threaded simulations
➢ Highly generic and modular
➢ Built on powerful open source libraries
➢ Over 35 years of development by Dr. Peter H. Zipfel
➢ Used by the Air Force Research Lab for high fidelity 6 DoF missile modeling
Design/Feature | CADAC++ | Ascent |
---|---|---|
Proper Discrete and Continuous Signal Mixing | ✘ | ✔ |
Integration State Handling | ✘ | ✔ |
Various/Interchangeable Integration Methods | ✘ | ✔ |
Module Specific Sampling Rates | ✘ | ✔ |
Asynchronous Sampling and Event Scheduling | ✘ | ✔ |
Module Level Variables | ✘ | ✔ |
Guaranteed Use of Properly Initialized Variables | ✘ | ✔ |
Automatic Module Ordering | ✘ | ✔ |
Variable Accessing/Setting Errors Caught at Compile Time | ✘ | ✔ |
Module Interconnection Is Modifiable and Limitable | ✘ | ✔ |
Modules Can Be Frozen Yet Accessible For Testing | ✘ | ✔ |
Dynamic Module Interconnection/Deletion | ✘ | ✔ |
Modules as Drivers | ✘ | ✔ |
Inter-Phase Algorithmic Ordering | ✘ | ✔ |
Developing New Modules Does Not Affect Base Inherited Class | ✘ | ✔ |
Complex Stoppers | ✘ | ✔ |
➢ Improved upon NASA's MAVERIC architecture for multi-stage rocket simulation
Ascent began as an extension of the C++ Model Developer architecture.
Design/Feature | C++ Model Developer | Ascent |
---|---|---|
Predictor-Corrector and Adaptive Integration Algorithms | ✘ | ✔ |
Guaranteed Use of Properly Initialized Variables | ✘ | ✔ |
Automatic Module Ordering | ✘ | ✔ |
Module Interconnection Is Modifiable and Limitable | ✘ | ✔ |
Modules Can Be Frozen Yet Accessible For Testing | ✘ | ✔ |
Dynamic Module Interconnection/Deletion | ✘ | ✔ |
Queue-free Staging | ✘ | ✔ |
Modules as Drivers | ✘ | ✔ |
Inter-Phase Algorithmic Ordering | ✘ | ✔ |
Variable Tracking | ✘ | ✔ |
Complex Stoppers | ✘ | ✔ |
Supports Multi-Threading | ✘ | ✔ |
Embedded Scripting Engine | ✘ | ✔ |
Entire systems solved within ODE engine
Used by Anyar, Inc. to solve viscoelastic human injury models.
➢ Memory is internally managed with std::shared_ptr(s)
➢ A shared pointer is a race condition!
➢ Queue-free event handling
➢ Asynchronously assign events
➢ Events are exactly stepped to with proper numerical integration
➢ Specify sampling rates for discrete signals
void Control::postcalc()
{
error.push_back(x_target - x);
f = Kp*error.back() + Ki * error.integral() + Kd*error.derivative();
}
Ascent even allows scripting of Eigen matrix and vector math