Template Class IntegrationInterface
Defined in File integration_interface.hpp
Nested Relationships
Nested Types
Class Documentation
-
template<system_state StateType, can_be_time TimeType>
class IntegrationInterface General interface for ODE integration with real-time signal processing.
This unified interface handles all integration scenarios:
Signal-triggered state modifications (discrete events)
Signal-induced trajectory shifts (continuous influence)
Real-time output streaming during integration
Bidirectional communication between ODE and external processes
Public Types
-
enum class InfluenceMode
Signal influence modes.
Values:
-
enumerator DISCRETE_EVENT
-
enumerator CONTINUOUS_SHIFT
-
enumerator PARAMETER_UPDATE
-
enumerator OUTPUT_TRIGGER
-
enumerator DISCRETE_EVENT
-
using signal_processor_type = signal::SignalProcessor<StateType>
Public Functions
-
template<typename SignalDataType>
inline 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.
-
inline 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.
-
inline void add_trajectory_modifier(std::function<void(time_type, state_type&, state_type&)> modifier)
Add a continuous trajectory modifier.
These functions are called during ODE evaluation to modify the dynamics based on accumulated signal influences.
-
template<typename OriginalODE>
inline auto make_signal_aware_ode(OriginalODE &&original_ode) 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.
-
inline void apply_discrete_event(const std::string &signal_type, const std::any &signal_data)
Process discrete events (instantaneous state modifications)
-
inline std::optional<state_type> get_current_state() const
Get current integration state.
-
inline void set_signal_influence_active(const std::string &signal_type, bool active)
Enable/disable signal influence.
-
inline void set_output_stream_active(const std::string &stream_id, bool active)
Enable/disable output stream.
-
inline std::shared_ptr<signal_processor_type> get_signal_processor()
Get signal processor for direct access.
-
struct OutputStream
Output stream descriptor.
-
struct SignalInfluence
Signal influence descriptor.
Public Members
-
InfluenceMode mode
-
std::string signal_type
-
std::function<void(const std::any&, state_type&, time_type)> handler
-
double priority = 1.0
-
bool is_active = true
-
InfluenceMode mode