Library API
diffeq Examples
- page diffeq Examples
This directory contains comprehensive examples demonstrating how to use the diffeq library for solving differential equations.
Example Programs
Core Integration Examples
**
working_integrators_demo.cpp
** - Demonstrates all working ODE integrators (RK4, RK23, RK45, BDF, LSODA)**
rk4_integrator_usage.cpp
** - Basic RK4 integrator usage with various ODE systems**
advanced_integrators_usage.cpp
** - Advanced integrator features and configurations**
state_concept_usage.cpp
** - Shows how to use different state types (vectors, arrays, custom types)**
std_async_integration_demo.cpp
** - Direct use of C++ standard library async facilities without unnecessary abstractions**
coroutine_integration_demo.cpp
** - C++20 coroutines integration for fine-grained execution control and cooperative multitasking**
timeout_integration_demo.cpp
** - Timeout-protected integration for robust applications**
seamless_parallel_timeout_demo.cpp
** - Seamless integration of timeout + async + parallel execution
Parallelism Examples
**
parallelism_usage_demo.cpp
** - Comprehensive parallelism features including:Quick start parallel interface
Robotics control systems with real-time parallelism
Stochastic process research with GPU-accelerated Monte Carlo
Multi-hardware target benchmarking
**
standard_parallelism_demo.cpp
** - Standard library parallelism integration:C++17/20 std::execution policies
OpenMP parallel loops
Intel TBB integration
Task-based async dispatchers
**
simple_standard_parallelism.cpp
** - Simplified parallel usage patterns**
standard_parallelism_demo.cpp
** - Advanced standard parallelism features**
simplified_parallel_usage.cpp
** - Easy-to-use parallel interfaces**
test_advanced_parallelism.cpp
** - Testing advanced parallelism features
Advanced Features
**
interface_usage_demo.cpp
** - Integration interface examples:Financial portfolio modeling with signal processing
Robotics control with real-time feedback
Scientific simulations with parameter updates
**
sde_usage_demo.cpp
** - Stochastic Differential Equation examples:Black-Scholes financial models
Heston stochastic volatility
Noisy oscillator control systems
Stochastic Lotka-Volterra ecosystem models
**
coroutine_integration_demo.cpp
** - C++20 Coroutines integration:Fine-grained execution control with pause/resume
Cooperative multitasking for multiple integrations
Zero-overhead state preservation between yields
Progress monitoring with minimal overhead
Interruptible long-running computations
**
advanced_gpu_async_demo.cpp
** - GPU acceleration with async processing**
realtime_signal_processing.cpp
** - Real-time signal processing integration**
composable_facilities_demo.cpp
** 🎯 NEW: Solves Combinatorial Explosion - Composable architecture demonstration:High cohesion, low coupling design principles
Independent facilities: Timeout, Parallel, Async, Signals, Output
Flexible composition using decorator pattern
Order-independent facility stacking
Linear scaling (N classes for N facilities, not 2^N)
Extensibility without modifying existing code
Real-world usage scenarios and performance analysis
Testing and Validation
**
quick_test.cpp
** - Quick validation tests**
test_dop853.cpp
** - DOP853 integrator testing**
test_rk4_only.cpp
** - RK4 integrator testing**
sde_demo.cpp
** - Basic SDE demonstration
Building and Running Examples
Prerequisites
C++17 or later compiler
xmake build system
Optional: OpenMP, Intel TBB, CUDA for advanced parallelism examples
Building
# Using xmake xmake
Running Examples
# Run a specific example ./examples/working_integrators_demo # Run parallelism examples ./examples/parallelism_usage_demo ./examples/standard_parallelism_demo # Run SDE examples ./examples/sde_usage_demo # Run interface examples ./examples/interface_usage_demo
Example Categories
1. Basic Usage
Start with these examples to understand the fundamentals:
working_integrators_demo.cpp
rk4_integrator_usage.cpp
state_concept_usage.cpp
2. Parallelism
For performance-critical applications:
parallelism_usage_demo.cpp
- Full-featured parallelismstandard_parallelism_demo.cpp
- Standard library integrationsimple_standard_parallelism.cpp
- Easy parallel usage
3. Advanced Features
For complex applications:
interface_usage_demo.cpp
- Signal processing and real-time integrationsde_usage_demo.cpp
- Stochastic differential equationsadvanced_gpu_async_demo.cpp
- GPU acceleration
4. Modern C++ Features
C++20 Coroutines: Fine-grained control and cooperative multitasking in
coroutine_integration_demo.cpp
Standard Library Async: Direct use of std::async without abstractions in
std_async_integration_demo.cpp
Parallel Execution: Hardware-optimized parallel processing in
parallelism_usage_demo.cpp
5. Domain-Specific Examples
Finance: Black-Scholes, Heston models in
sde_usage_demo.cpp
Robotics: Control systems in
parallelism_usage_demo.cpp
Scientific: Chemical reactions, ecosystem models in
sde_usage_demo.cpp
Key Features Demonstrated
Integration Methods
ODE Solvers: RK4, RK23, RK45, BDF, LSODA, DOP853
SDE Solvers: Euler-Maruyama, Milstein, SRA1, SOSRA, SRIW1, SOSRI
Adaptive Methods: Automatic step size control
Stiff Systems: BDF and LSODA for stiff problems
Modern C++ Features
C++20 Coroutines:
Pausable/resumable integration with
co_yield
Fine-grained CPU control for real-time systems
Zero-overhead state preservation
Cooperative multitasking between multiple integrations
Progress monitoring without blocking the main thread
Parallelism
CPU Parallelism: std::execution, OpenMP, Intel TBB
GPU Acceleration: CUDA, Thrust integration
Async Processing: Task-based parallel execution
Real-time Control: Low-latency parallel integration
Advanced Features
Signal Processing: Real-time event handling
Parameter Sweeps: Parallel parameter studies
Multi-physics: Coupled system integration
Hardware Optimization: Automatic backend selection
Timeout Protection: Prevents hanging integrations with configurable timeouts
Progress Monitoring: Real-time integration progress tracking and cancellation
Seamless Parallelization: Automatic hardware utilization without configuration
Execution Strategy Selection: Auto-chooses optimal approach based on problem and hardware
Best Practices
Start Simple: Begin with
working_integrators_demo.cpp
to understand basic usageChoose the Right Integrator: Use RK45 for general problems, BDF for stiff systems
Leverage Auto-Optimization: Use
diffeq::integrate_auto()
for automatic hardware utilizationHandle Real-time Requirements: Use interface examples for systems with external signals
Use Timeout Protection: Add timeout protection for production applications
Scale Seamlessly: From single integration to batch processing with
seamless_parallel_timeout_demo.cpp
Compose Facilities: Use the composable architecture for flexible combinations of capabilities
Start with
make_builder(base_integrator)
Add only the facilities you need:
.with_timeout()
,.with_parallel()
, etc.Avoid combinatorial explosion - compose instead of inheriting
Order doesn’t matter - decorators work in any sequence
Validate Results: Compare with analytical solutions when available
Troubleshooting
Common Issues
Compilation Errors: Ensure C++17 support and required libraries
Performance Issues: Check parallel backend availability
Accuracy Problems: Verify integrator choice and tolerances
Memory Issues: Use appropriate state types and batch sizes
Hanging Integration: Use timeout protection for robust applications
Getting Help
Check the main library documentation
Review the test suite for usage patterns
Examine the source code for implementation details
Contributing
When adding new examples:
Follow the existing naming convention
Include comprehensive comments
Demonstrate realistic use cases
Add to this README if appropriate
Ensure the example compiles and runs correctly
Full API
Namespaces
Classes and Structs
- Struct EventConfig
- Struct Documentation
diffeq::core::composable::EventConfig
validate()
processing_mode
enable_priority_queue
enable_event_history
max_event_history
max_event_processing_time
event_timeout
strict_timing
control_loop_period
enable_control_loop
control_tolerance
sensor_timeout
enable_sensor_validation
sensor_noise_threshold
event_thread_pool_size
enable_async_processing
- Struct Documentation
- Template Struct IntegrationTask
- Template Class AsyncIntegrator
- Nested Relationships
- Class Documentation
diffeq::async::AsyncIntegrator
base_integrator_type
state_type
time_type
value_type
system_function
step_callback
parameter_callback
emergency_callback
AsyncIntegrator()
~AsyncIntegrator()
start()
stop()
step_async()
integrate_async()
step()
integrate()
current_time()
set_time()
set_system()
set_step_callback()
set_parameter_callback()
set_emergency_callback()
update_parameter_async()
emergency_stop()
reset_emergency_stop()
get_current_state()
diffeq::async::AsyncIntegrator::Config
- Template Class EventDecorator
- Inheritance Relationships
- Class Documentation
diffeq::core::composable::EventDecorator
EventDecorator()
~EventDecorator()
step()
integrate()
register_event_handler()
trigger_event()
submit_sensor_data()
submit_control_feedback()
set_state_condition()
set_threshold_event()
get_statistics()
reset_statistics()
get_event_history()
clear_event_history()
get_sensor_data()
get_control_feedback()
config()
config()
- Template Class HighPerformanceSDESynchronizer
- Nested Relationships
- Class Documentation
diffeq::core::composable::HighPerformanceSDESynchronizer
- Template Class DOP853Integrator
- Inheritance Relationships
- Class Documentation
diffeq::DOP853Integrator
base_type
state_type
time_type
value_type
system_function
DOP853Integrator()
step()
adaptive_step()
safety_factor_
fac1_
fac2_
beta_
dt_max_
dt_min_
nmax_
nstiff_
facold_
iastiff_
nonsti_
hlamb_
nstep_
naccpt_
nrejct_
nfcn_
target_time_
fortran_safety
fortran_fac1
fortran_fac2
fortran_beta
fortran_dt_max
fortran_dt_min
fortran_nmax
fortran_nstiff
- Template Class IntegrationInterface
- Nested Relationships
- Class Documentation
diffeq::interfaces::IntegrationInterface
InfluenceMode
state_type
time_type
signal_processor_type
IntegrationInterface()
register_signal_influence()
register_output_stream()
add_trajectory_modifier()
make_signal_aware_ode()
apply_discrete_event()
get_current_state()
get_current_time()
set_signal_influence_active()
set_output_stream_active()
get_signal_processor()
diffeq::interfaces::IntegrationInterface::OutputStream
diffeq::interfaces::IntegrationInterface::SignalInfluence
- Template Class RealtimeIntegrator
- Nested Relationships
- Inheritance Relationships
- Class Documentation
diffeq::realtime::RealtimeIntegrator
base_type
state_type
time_type
value_type
system_function
signal_type
control_signal
financial_signal
parameter_signal
state_output_signal
RealtimeIntegrator()
~RealtimeIntegrator()
RealtimeIntegrator()
operator=()
RealtimeIntegrator()
operator=()
start_realtime()
shutdown()
step()
integrate()
send_control_signal()
send_financial_signal()
update_parameters()
emergency_stop()
get_current_state()
setup_process_connector()
register_signal_handler()
diffeq::realtime::RealtimeIntegrator::RealtimeConfig
- Template Class SignalProcessor
- Class Documentation
diffeq::signal::SignalProcessor
state_type
SignalHandler
time_type
value_type
integrator_type
parameter_signal
control_signal
market_signal
SignalProcessor()
emit_signal()
register_handler()
update_parameter()
SignalProcessor()
process_parameter_signal()
process_control_signal()
process_market_signal()
get_control_targets()
get_market_data()
get_parameter()
register_handler()
process_signal()
- Class Documentation