DiffEq - Modern C++ ODE Integration Library 1.0.0
High-performance C++ library for solving ODEs with async signal processing
|
General interface for ODE integration with real-time signal processing. More...
#include <integration_interface.hpp>
Classes | |
struct | OutputStream |
Output stream descriptor. More... | |
struct | SignalInfluence |
Signal influence descriptor. More... | |
Public Types | |
enum class | InfluenceMode { DISCRETE_EVENT , CONTINUOUS_SHIFT , PARAMETER_UPDATE , OUTPUT_TRIGGER } |
Signal influence modes. More... | |
using | state_type = StateType |
using | time_type = TimeType |
using | signal_processor_type = signal::SignalProcessor< StateType > |
Public Member Functions | |
IntegrationInterface (std::shared_ptr< signal_processor_type > processor=nullptr) | |
template<typename SignalDataType > | |
void | register_signal_influence (std::string_view signal_type, InfluenceMode mode, std::function< void(const SignalDataType &, state_type &, time_type)> handler, double priority=1.0) |
Register a signal influence on the ODE system. | |
void | register_output_stream (std::string_view stream_id, std::function< void(const state_type &, time_type)> output_func, std::chrono::microseconds interval=std::chrono::microseconds{1000}) |
Register an output stream for real-time data export. | |
void | add_trajectory_modifier (std::function< void(time_type, state_type &, state_type &)> modifier) |
Add a continuous trajectory modifier. | |
template<typename OriginalODE > | |
auto | make_signal_aware_ode (OriginalODE &&original_ode) |
ODE system wrapper that incorporates signal influences. | |
void | apply_discrete_event (const std::string &signal_type, const std::any &signal_data) |
Process discrete events (instantaneous state modifications) | |
std::optional< state_type > | get_current_state () const |
Get current integration state. | |
time_type | get_current_time () const |
Get current time. | |
void | set_signal_influence_active (const std::string &signal_type, bool active) |
Enable/disable signal influence. | |
void | set_output_stream_active (const std::string &stream_id, bool active) |
Enable/disable output stream. | |
std::shared_ptr< signal_processor_type > | get_signal_processor () |
Get signal processor for direct access. | |
General interface for ODE integration with real-time signal processing.
This unified interface handles all integration scenarios:
Definition at line 24 of file integration_interface.hpp.
using diffeq::interfaces::IntegrationInterface< StateType, TimeType >::signal_processor_type = signal::SignalProcessor<StateType> |
Definition at line 28 of file integration_interface.hpp.
using diffeq::interfaces::IntegrationInterface< StateType, TimeType >::state_type = StateType |
Definition at line 26 of file integration_interface.hpp.
using diffeq::interfaces::IntegrationInterface< StateType, TimeType >::time_type = TimeType |
Definition at line 27 of file integration_interface.hpp.
|
strong |
Signal influence modes.
Definition at line 33 of file integration_interface.hpp.
|
inlineexplicit |
Definition at line 75 of file integration_interface.hpp.
|
inline |
Add a continuous trajectory modifier.
These functions are called during ODE evaluation to modify the dynamics based on accumulated signal influences.
Definition at line 139 of file integration_interface.hpp.
|
inline |
Process discrete events (instantaneous state modifications)
Definition at line 176 of file integration_interface.hpp.
|
inline |
Get current integration state.
Definition at line 192 of file integration_interface.hpp.
|
inline |
Get current time.
Definition at line 199 of file integration_interface.hpp.
|
inline |
Get signal processor for direct access.
Definition at line 228 of file integration_interface.hpp.
|
inline |
ODE system wrapper that incorporates signal influences.
This function should be passed to your integrator. It wraps your original ODE system and adds signal-based modifications.
Definition at line 151 of file integration_interface.hpp.
|
inline |
Register an output stream for real-time data export.
Definition at line 117 of file integration_interface.hpp.
|
inline |
Register a signal influence on the ODE system.
Definition at line 84 of file integration_interface.hpp.
|
inline |
Enable/disable output stream.
Definition at line 217 of file integration_interface.hpp.
|
inline |
Enable/disable signal influence.
Definition at line 206 of file integration_interface.hpp.