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!
The Mass modules don't need to know anything about the Spring and Damper modules.
The programmer only defines the driving links.
➢ 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