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.hpp
Go to the documentation of this file.
1#pragma once
2
3// Core concepts and base classes
4#include <core/concepts.hpp>
5#include <core/abstract_integrator.hpp>
6#include <core/adaptive_integrator.hpp>
7#include <core/timeout_integrator.hpp>
9
10// ODE integrator implementations (organized by method type)
11#include <integrators/ode/euler.hpp> // Simple Euler method
12#include <integrators/ode/improved_euler.hpp> // Heun's method
13#include <integrators/ode/rk4.hpp> // Classic 4th order Runge-Kutta
14#include <integrators/ode/rk23.hpp> // RK23 (adaptive, Bogacki-Shampine)
15#include <integrators/ode/rk45.hpp> // RK45 (adaptive, Dormand-Prince)
16#include <integrators/ode/dop853.hpp> // DOP853 (8th order, high accuracy)
17#include <integrators/ode/bdf.hpp> // BDF (multistep, stiff systems) - SciPy-compatible
18#include <integrators/ode/lsoda.hpp> // LSODA (automatic stiff/non-stiff switching)
19
20// SDE (Stochastic Differential Equation) integrators (organized by method type)
21#include <sde/sde_base.hpp> // SDE base infrastructure
22#include <integrators/sde/euler_maruyama.hpp> // Basic SDE solver (strong order 0.5)
23#include <integrators/sde/milstein.hpp> // Milstein method with Lévy area (strong order 1.0)
24#include <integrators/sde/sri1.hpp> // Stochastic Runge-Kutta method (strong order 1.0)
25#include <integrators/sde/implicit_euler_maruyama.hpp> // Implicit method for stiff SDEs
26#include <integrators/sde/sra.hpp> // SRA base implementation
27#include <integrators/sde/sra1.hpp> // SRA1 variant for additive noise
28#include <integrators/sde/sra2.hpp> // SRA2 variant for additive noise
29#include <integrators/sde/sosra.hpp> // Stability-optimized SRA
30#include <integrators/sde/sri.hpp> // SRI base implementation
31#include <integrators/sde/sriw1.hpp> // SRIW1 variant for general SDEs
32#include <integrators/sde/sosri.hpp> // Stability-optimized SRI
33
34// Modern async and signal processing components (standard C++ only)
35#include <async/async_integrator.hpp> // Async integration with std::future
36#include <signal/signal_processor.hpp> // Generic signal processing
37#include <interfaces/integration_interface.hpp> // Unified interface for all domains
38
39// Standard parallelism library integration examples
40// Note: Use standard libraries (std::execution, OpenMP, TBB, Thrust) instead of custom parallel classes
41// See docs/STANDARD_PARALLELISM.md and examples/standard_parallelism_demo.cpp for integration examples
42
283namespace diffeq {
284 // Re-export core functionality
285 using core::TimeoutIntegrator;
286 using core::IntegrationResult;
287 using core::IntegrationTimeoutException;
288 using core::make_timeout_integrator;
289 using core::integrate_with_timeout;
290
291 // Note: ParallelTimeoutIntegrator was removed in favor of composable architecture
292 // Use make_builder(base).with_timeout().with_parallel().build() instead
293
294 // Re-export composable integration facilities
295 using core::composable::IntegratorDecorator;
296 using core::composable::TimeoutDecorator;
297 using core::composable::ParallelDecorator;
298 using core::composable::OutputDecorator;
299 using core::composable::SignalDecorator;
300 using core::composable::IntegratorBuilder;
301 using core::composable::make_builder;
302 using core::composable::with_timeout_only;
303 using core::composable::with_parallel_only;
304 using core::composable::TimeoutConfig;
305 using core::composable::TimeoutResult;
306 using core::composable::ParallelConfig;
307 using core::composable::OutputConfig;
308 using core::composable::OutputMode;
309 using core::composable::SignalConfig;
310
311 // Re-export integrator classes for convenience
312 // Note: Integrators are already in diffeq namespace, no need to re-export
313
314 // Re-export SDE integrators
315 // Note: SDE integrators are already in diffeq namespace, no need to re-export
316
317 // Common type aliases for system_state concept
318 template<typename T>
319 using VectorState = std::vector<T>;
320
321 template<typename T, std::size_t N>
322 using ArrayState = std::array<T, N>;
323
324 // Default scalar types for can_be_time concept
325 using DefaultScalar = double;
326 using DefaultTime = double;
327}
328
329
Composable integration architecture using decorator pattern.