DiffEq - Modern C++ ODE Integration Library 1.0.0
High-performance C++ library for solving ODEs with async signal processing
Loading...
Searching...
No Matches
diffeq::interfaces::IntegrationInterface< StateType, TimeType > Class Template Reference

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_typeget_signal_processor ()
 Get signal processor for direct access.
 

Detailed Description

template<system_state StateType, can_be_time TimeType>
class diffeq::interfaces::IntegrationInterface< StateType, TimeType >

General interface for ODE integration with real-time signal processing.

This unified interface handles all integration scenarios:

  1. Signal-triggered state modifications (discrete events)
  2. Signal-induced trajectory shifts (continuous influence)
  3. Real-time output streaming during integration
  4. Bidirectional communication between ODE and external processes

Definition at line 24 of file integration_interface.hpp.

Member Typedef Documentation

◆ signal_processor_type

template<system_state StateType, can_be_time TimeType>
using diffeq::interfaces::IntegrationInterface< StateType, TimeType >::signal_processor_type = signal::SignalProcessor<StateType>

Definition at line 28 of file integration_interface.hpp.

◆ state_type

template<system_state StateType, can_be_time TimeType>
using diffeq::interfaces::IntegrationInterface< StateType, TimeType >::state_type = StateType

Definition at line 26 of file integration_interface.hpp.

◆ time_type

template<system_state StateType, can_be_time TimeType>
using diffeq::interfaces::IntegrationInterface< StateType, TimeType >::time_type = TimeType

Definition at line 27 of file integration_interface.hpp.

Member Enumeration Documentation

◆ InfluenceMode

template<system_state StateType, can_be_time TimeType>
enum class diffeq::interfaces::IntegrationInterface::InfluenceMode
strong

Signal influence modes.

Definition at line 33 of file integration_interface.hpp.

Constructor & Destructor Documentation

◆ IntegrationInterface()

template<system_state StateType, can_be_time TimeType>
diffeq::interfaces::IntegrationInterface< StateType, TimeType >::IntegrationInterface ( std::shared_ptr< signal_processor_type processor = nullptr)
inlineexplicit

Definition at line 75 of file integration_interface.hpp.

Member Function Documentation

◆ add_trajectory_modifier()

template<system_state StateType, can_be_time TimeType>
void diffeq::interfaces::IntegrationInterface< StateType, TimeType >::add_trajectory_modifier ( std::function< void(time_type, state_type &, state_type &)>  modifier)
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.

◆ apply_discrete_event()

template<system_state StateType, can_be_time TimeType>
void diffeq::interfaces::IntegrationInterface< StateType, TimeType >::apply_discrete_event ( const std::string &  signal_type,
const std::any &  signal_data 
)
inline

Process discrete events (instantaneous state modifications)

Definition at line 176 of file integration_interface.hpp.

◆ get_current_state()

template<system_state StateType, can_be_time TimeType>
std::optional< state_type > diffeq::interfaces::IntegrationInterface< StateType, TimeType >::get_current_state ( ) const
inline

Get current integration state.

Definition at line 192 of file integration_interface.hpp.

◆ get_current_time()

template<system_state StateType, can_be_time TimeType>
time_type diffeq::interfaces::IntegrationInterface< StateType, TimeType >::get_current_time ( ) const
inline

Get current time.

Definition at line 199 of file integration_interface.hpp.

◆ get_signal_processor()

template<system_state StateType, can_be_time TimeType>
std::shared_ptr< signal_processor_type > diffeq::interfaces::IntegrationInterface< StateType, TimeType >::get_signal_processor ( )
inline

Get signal processor for direct access.

Definition at line 228 of file integration_interface.hpp.

◆ make_signal_aware_ode()

template<system_state StateType, can_be_time TimeType>
template<typename OriginalODE >
auto diffeq::interfaces::IntegrationInterface< StateType, TimeType >::make_signal_aware_ode ( OriginalODE &&  original_ode)
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.

◆ register_output_stream()

template<system_state StateType, can_be_time TimeType>
void diffeq::interfaces::IntegrationInterface< StateType, TimeType >::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} 
)
inline

Register an output stream for real-time data export.

Definition at line 117 of file integration_interface.hpp.

◆ register_signal_influence()

template<system_state StateType, can_be_time TimeType>
template<typename SignalDataType >
void diffeq::interfaces::IntegrationInterface< StateType, TimeType >::register_signal_influence ( std::string_view  signal_type,
InfluenceMode  mode,
std::function< void(const SignalDataType &, state_type &, time_type)>  handler,
double  priority = 1.0 
)
inline

Register a signal influence on the ODE system.

Definition at line 84 of file integration_interface.hpp.

◆ set_output_stream_active()

template<system_state StateType, can_be_time TimeType>
void diffeq::interfaces::IntegrationInterface< StateType, TimeType >::set_output_stream_active ( const std::string &  stream_id,
bool  active 
)
inline

Enable/disable output stream.

Definition at line 217 of file integration_interface.hpp.

◆ set_signal_influence_active()

template<system_state StateType, can_be_time TimeType>
void diffeq::interfaces::IntegrationInterface< StateType, TimeType >::set_signal_influence_active ( const std::string &  signal_type,
bool  active 
)
inline

Enable/disable signal influence.

Definition at line 206 of file integration_interface.hpp.


The documentation for this class was generated from the following file: