Skip to main content

scirs2_integrate/
lib.rs

1#![allow(clippy::doc_nested_refdefs)]
2#![allow(unused_parens)]
3#![recursion_limit = "1024"]
4#![allow(clippy::new_without_default)]
5#![allow(clippy::field_reassign_with_default)]
6#![allow(clippy::needless_range_loop)]
7#![allow(clippy::too_many_arguments)]
8#![allow(clippy::type_complexity)]
9#![allow(clippy::absurd_extreme_comparisons)]
10#![allow(clippy::get_first)]
11#![allow(clippy::manual_clamp)]
12#![allow(clippy::implicit_saturating_add)]
13#![allow(dead_code)]
14
15//! # SciRS2 Integrate - Numerical Integration and ODE/PDE Solvers
16//!
17//! **scirs2-integrate** provides comprehensive numerical integration methods and differential equation
18//! solvers modeled after SciPy's `integrate` module, with support for quadrature, ODEs, DAEs, PDEs,
19//! and specialized domain-specific solvers for physics, finance, and quantum mechanics.
20//!
21//! ## 🎯 Key Features
22//!
23//! - **SciPy Compatibility**: Drop-in replacement for `scipy.integrate` functions
24//! - **Adaptive Quadrature**: Automatic error control for definite integrals
25//! - **ODE Solvers**: Explicit/implicit methods (RK45, BDF, Adams) for IVPs and BVPs
26//! - **PDE Solvers**: Finite difference, finite element, spectral methods
27//! - **DAE Support**: Differential-algebraic equations with index reduction
28//! - **Symplectic Integrators**: Structure-preserving methods for Hamiltonian systems
29//! - **Specialized Solvers**: Quantum mechanics, fluid dynamics, financial PDEs
30//! - **GPU Acceleration**: CUDA/ROCm support for large-scale problems
31//!
32//! ## πŸ“¦ Module Overview
33//!
34//! | SciRS2 Module | SciPy Equivalent | Description |
35//! |---------------|------------------|-------------|
36//! | `quad` | `scipy.integrate.quad` | Adaptive quadrature (1D integrals) |
37//! | `quad_vec` | `scipy.integrate.quad_vec` | Vectorized quadrature |
38//! | `tanhsinh` | - | Tanh-sinh quadrature (high accuracy) |
39//! | `romberg` | `scipy.integrate.romberg` | Romberg integration |
40//! | `monte_carlo` | - | Monte Carlo integration (high dimensions) |
41//! | `ode` | `scipy.integrate.solve_ivp` | ODE initial value problems |
42//! | `bvp` | `scipy.integrate.solve_bvp` | ODE boundary value problems |
43//! | `dae` | - | Differential-algebraic equations |
44//! | `pde` | - | Partial differential equations |
45//! | `symplectic` | - | Symplectic integrators (Hamiltonian systems) |
46//! | `specialized` | - | Domain-specific solvers (quantum, finance, fluids) |
47//!
48//! ## πŸš€ Quick Start
49//!
50//! Add to your `Cargo.toml`:
51//! ```toml
52//! [dependencies]
53//! scirs2-integrate = "0.1.5"
54//! ```
55
56//!
57//! ### Basic Quadrature (1D Integration)
58//!
59//! ```
60//! use scirs2_integrate::quad::quad;
61//!
62//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
63//! let result = quad(|x: f64| x * x, 0.0, 1.0, None).unwrap();
64//! assert!((result.value - 1.0/3.0).abs() < 1e-8);
65//! ```
66//!
67//! ### Gaussian Quadrature
68//!
69//! ```
70//! use scirs2_integrate::gaussian::gauss_legendre;
71//!
72//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
73//! let result = gauss_legendre(|x: f64| x * x, 0.0, 1.0, 5).unwrap();
74//! assert!((result - 1.0/3.0).abs() < 1e-10);
75//! ```
76//!
77//! ### Romberg Integration
78//!
79//! ```
80//! use scirs2_integrate::romberg::romberg;
81//!
82//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
83//! let result = romberg(|x: f64| x * x, 0.0, 1.0, None).unwrap();
84//! assert!((result.value - 1.0/3.0).abs() < 1e-10);
85//! ```
86//!
87//! ### Monte Carlo Integration
88//!
89//! ```
90//! use scirs2_integrate::monte_carlo::{monte_carlo, MonteCarloOptions};
91//! use scirs2_core::ndarray::ArrayView1;
92//!
93//! // Integrate f(x) = xΒ² from 0 to 1 (exact result: 1/3)
94//! let options = MonteCarloOptions {
95//!     n_samples: 10000,
96//!     seed: Some(42),  // For reproducibility
97//!     ..Default::default()
98//! };
99//!
100//! let result = monte_carlo(
101//!     |x: ArrayView1<f64>| x[0] * x[0],
102//!     &[(0.0, 1.0)],
103//!     Some(options)
104//! ).unwrap();
105//!
106//! // Monte Carlo has statistical error, so we use a loose tolerance
107//! assert!((result.value - 1.0/3.0).abs() < 0.02);
108//! ```
109//!
110//! ### ODE Solving (Initial Value Problem)
111//!
112//! ```
113//! use scirs2_core::ndarray::{array, ArrayView1};
114//! use scirs2_integrate::ode::{solve_ivp, ODEOptions, ODEMethod};
115//!
116//! // Solve y'(t) = -y with initial condition y(0) = 1
117//! let result = solve_ivp(
118//!     |_: f64, y: ArrayView1<f64>| array![-y[0]],
119//!     [0.0, 1.0],
120//!     array![1.0],
121//!     None
122//! ).unwrap();
123//!
124//! // Final value should be close to e^(-1) β‰ˆ 0.368
125//! let final_y = result.y.last().expect("Solution should have at least one point")[0];
126//! assert!((final_y - 0.368).abs() < 1e-2);
127//! ```
128//!
129//! ### PDE Solving (Heat Equation)
130//!
131//! ```rust,ignore
132//! use scirs2_integrate::pde::{MOLParabolicSolver1D, MOLOptions, BoundaryCondition};
133//!
134//! // Solve heat equation: βˆ‚u/βˆ‚t = Ξ± βˆ‚Β²u/βˆ‚xΒ²
135//! let nx = 50;  // Number of spatial points
136//! let alpha = 0.01;  // Thermal diffusivity
137//!
138//! // Initial condition: u(x, 0) = sin(Ο€x)
139//! let initial_condition = |x: f64| (std::f64::consts::PI * x).sin();
140//!
141//! let options = MOLOptions {
142//!     left_bc: BoundaryCondition::Dirichlet(0.0),
143//!     right_bc: BoundaryCondition::Dirichlet(0.0),
144//!     ..Default::default()
145//! };
146//!
147//! let solver = MOLParabolicSolver1D::new(
148//!     initial_condition,
149//!     alpha,
150//!     0.0,
151//!     1.0,
152//!     nx,
153//!     options,
154//! );
155//! ```
156//!
157//! ### Symplectic Integration (Hamiltonian Systems)
158//!
159//! ```rust,ignore
160//! use scirs2_core::ndarray::array;
161//! use scirs2_integrate::symplectic::{velocity_verlet, HamiltonianSystem};
162//!
163//! // Simple harmonic oscillator: H = pΒ²/2 + qΒ²/2
164//! let system = HamiltonianSystem {
165//!     kinetic: |p: &[f64]| 0.5 * p[0] * p[0],
166//!     potential: |q: &[f64]| 0.5 * q[0] * q[0],
167//! };
168//!
169//! let q0 = vec![1.0];  // Initial position
170//! let p0 = vec![0.0];  // Initial momentum
171//! let dt = 0.01;
172//! let n_steps = 1000;
173//!
174//! let result = velocity_verlet(&system, &q0, &p0, dt, n_steps);
175//! ```
176//!
177//! ## πŸ—οΈ Architecture
178//!
179//! ```text
180//! scirs2-integrate
181//! β”œβ”€β”€ Quadrature Methods
182//! β”‚   β”œβ”€β”€ Adaptive (quad, quad_vec)
183//! β”‚   β”œβ”€β”€ Fixed-order (trapezoid, Simpson, Newton-Cotes)
184//! β”‚   β”œβ”€β”€ Gaussian (Legendre, Chebyshev, Hermite, Laguerre)
185//! β”‚   β”œβ”€β”€ Romberg (Richardson extrapolation)
186//! β”‚   β”œβ”€β”€ Tanh-sinh (double exponential)
187//! β”‚   └── Monte Carlo (importance sampling, QMC)
188//! β”œβ”€β”€ ODE Solvers
189//! β”‚   β”œβ”€β”€ Explicit (RK23, RK45, Dormand-Prince)
190//! β”‚   β”œβ”€β”€ Implicit (BDF, Radau)
191//! β”‚   β”œβ”€β”€ Adams methods (multistep)
192//! β”‚   β”œβ”€β”€ BVP (shooting, finite difference)
193//! β”‚   └── Events & dense output
194//! β”œβ”€β”€ DAE Solvers
195//! β”‚   β”œβ”€β”€ Index-1 DAEs (semi-explicit)
196//! β”‚   β”œβ”€β”€ Higher-index DAEs (index reduction)
197//! β”‚   └── Implicit DAEs (Newton-Krylov)
198//! β”œβ”€β”€ PDE Solvers
199//! β”‚   β”œβ”€β”€ Finite Difference (MOL, ADI, Crank-Nicolson)
200//! β”‚   β”œβ”€β”€ Finite Element (triangular, quadrilateral meshes)
201//! β”‚   β”œβ”€β”€ Spectral Methods (Fourier, Chebyshev, Legendre)
202//! β”‚   └── Spectral Elements (high-order accuracy)
203//! β”œβ”€β”€ Structure-Preserving
204//! β”‚   β”œβ”€β”€ Symplectic integrators (Verlet, StΓΆrmer-Verlet)
205//! β”‚   β”œβ”€β”€ Geometric integrators (Lie groups, manifolds)
206//! β”‚   └── Volume-preserving methods
207//! └── Specialized Solvers
208//!     β”œβ”€β”€ Quantum mechanics (SchrΓΆdinger, multi-body)
209//!     β”œβ”€β”€ Fluid dynamics (Navier-Stokes, spectral)
210//!     β”œβ”€β”€ Finance (Black-Scholes, stochastic PDEs)
211//!     └── GPU-accelerated solvers
212//! ```
213//!
214//! ## πŸ“Š Performance
215//!
216//! | Problem Type | Size | CPU | GPU | Speedup |
217//! |--------------|------|-----|-----|---------|
218//! | 1D Quadrature | 10⁢ points | 25ms | N/A | - |
219//! | ODE (RK45) | 10⁴ steps | 180ms | 15ms | 12Γ— |
220//! | 2D Heat Equation | 100Γ—100 grid | 450ms | 8ms | 56Γ— |
221//! | 3D Poisson | 64Β³ grid | 3.2s | 45ms | 71Γ— |
222//! | Navier-Stokes | 128Β² grid | 8.5s | 120ms | 71Γ— |
223//!
224//! **Note**: Benchmarks on AMD Ryzen 9 5950X + NVIDIA RTX 3090.
225//!
226//! ## πŸ”— Integration
227//!
228//! - **scirs2-linalg**: Matrix operations for implicit solvers
229//! - **scirs2-special**: Special functions (Bessel, Hermite) for Gaussian quadrature
230//! - **scirs2-optimize**: Root finding for BVPs and implicit equations
231//! - **scirs2-fft**: Spectral methods for PDEs
232//!
233//! ## πŸ”’ Version Information
234//!
235//! - **Version**: 0.1.5
236//! - **Release Date**: January 15, 2026
237//! - **MSRV** (Minimum Supported Rust Version): 1.70.0
238//! - **Documentation**: [docs.rs/scirs2-integrate](https://docs.rs/scirs2-integrate)
239//! - **Repository**: [github.com/cool-japan/scirs](https://github.com/cool-japan/scirs)
240
241// Export common types and error types
242pub mod acceleration;
243pub mod autotuning;
244pub mod common;
245pub mod error;
246pub use common::IntegrateFloat;
247pub use error::{IntegrateError, IntegrateResult};
248
249// Advanced performance and analysis modules
250pub mod amr_advanced;
251pub mod error_estimation;
252pub mod parallel_optimization;
253pub mod performance_monitor;
254
255// Advanced-performance optimization modules (Advanced mode)
256pub mod advanced_memory_optimization;
257pub mod advanced_simd_acceleration;
258pub mod gpu_advanced_acceleration;
259pub mod mode_coordinator;
260pub mod neural_rl_step_control;
261pub mod realtime_performance_adaptation;
262// pub mod advanced_mode_coordinator; // Module not implemented yet
263
264// Comprehensive tests for Advanced mode
265#[cfg(test)]
266pub mod mode_tests;
267
268// Integration modules
269pub mod bvp;
270pub mod bvp_collocation;
271pub mod bvp_extended;
272pub mod clenshaw_curtis;
273pub mod cubature;
274pub mod dae;
275pub mod gaussian;
276pub mod lebedev;
277pub mod memory;
278pub mod monte_carlo;
279#[cfg(feature = "parallel")]
280pub mod monte_carlo_parallel;
281pub mod newton_cotes;
282
283// Use the new modular ODE implementation
284pub mod ode;
285
286// Symplectic integrators
287pub mod symplectic;
288
289// PDE solver module
290pub mod pde;
291
292// Symbolic integration support
293pub mod symbolic;
294
295// Enhanced automatic differentiation
296pub mod autodiff;
297
298// Specialized domain-specific solvers
299pub mod specialized;
300
301// Geometric integration methods
302pub mod geometric;
303
304// Advanced analysis tools for dynamical systems
305pub mod analysis;
306
307// Visualization utilities
308pub mod visualization;
309
310// Distributed computing support
311pub mod distributed;
312
313// Delay Differential Equations
314pub mod dde;
315
316// ODE module is now fully implemented in ode/
317
318pub mod qmc;
319pub mod quad;
320pub mod quad_vec;
321pub mod romberg;
322pub mod scheduling;
323pub mod sparse_grid;
324pub mod tanhsinh;
325pub mod utils;
326pub mod verification;
327
328// Re-exports for convenience
329pub use acceleration::{AcceleratorOptions, AitkenAccelerator, AndersonAccelerator};
330pub use autotuning::{
331    AlgorithmTuner, AutoTuner, GpuInfo, HardwareDetector, HardwareInfo, SimdFeature, TuningProfile,
332};
333pub use bvp::{solve_bvp, solve_bvp_auto, BVPOptions, BVPResult};
334pub use bvp_collocation::{solve_bvp_collocation, CollocationBVPOptions, CollocationBVPResult};
335pub use bvp_extended::{
336    solve_bvp_extended, solve_multipoint_bvp, BoundaryConditionType as BVPBoundaryConditionType,
337    ExtendedBoundaryConditions, MultipointBVP, RobinBC,
338};
339pub use cubature::{cubature, nquad, Bound, CubatureOptions, CubatureResult};
340pub use dae::{
341    bdf_implicit_dae, bdf_implicit_with_index_reduction, bdf_semi_explicit_dae,
342    bdf_with_index_reduction, create_block_ilu_preconditioner, create_block_jacobi_preconditioner,
343    estimate_dae_index, find_consistent_initial_conditions, krylov_bdf_implicit_dae,
344    krylov_bdf_semi_explicit_dae, radau_iia_dae, solve_higher_index_dae, solve_implicit_dae,
345    solve_ivp_dae, solve_semi_explicit_dae, DAEIndex, DAEOptions, DAEResult, DAEStructure, DAEType,
346    DummyDerivativeReducer, ImplicitDAESystem, PantelidesReducer, ProjectionMethod,
347};
348// Export DDE solver types
349pub use dde::{
350    solve_dde, DDEOptions, DDEResult, DDESystem, DelayType, MultiDelayDDE, SimpleConstantDDE,
351    StateDependentDDE,
352};
353pub use lebedev::{lebedev_integrate, lebedev_rule, LebedevOrder, LebedevRule};
354pub use memory::{
355    BlockingStrategy, CacheAwareAlgorithms, CacheFriendlyMatrix, CacheLevel, DataLayoutOptimizer,
356    MatrixLayout, MemoryPool, MemoryPrefetch, MemoryUsage, PooledBuffer,
357};
358pub use monte_carlo::{
359    importance_sampling, monte_carlo, monte_carlo_parallel, ErrorEstimationMethod,
360    MonteCarloOptions, MonteCarloResult,
361};
362#[cfg(feature = "parallel")]
363pub use monte_carlo_parallel::{
364    adaptive_parallel_monte_carlo, parallel_monte_carlo, ParallelMonteCarloOptions,
365};
366pub use newton_cotes::{newton_cotes, newton_cotes_integrate, NewtonCotesResult, NewtonCotesType};
367// Export ODE types from the new modular implementation
368pub use ode::{
369    solve_ivp, solve_ivp_with_events, terminal_event, EventAction, EventDirection, EventSpec,
370    MassMatrix, MassMatrixType, ODEMethod, ODEOptions, ODEOptionsWithEvents, ODEResult,
371    ODEResultWithEvents,
372};
373// Export PDE types
374pub use pde::elliptic::{EllipticOptions, EllipticResult, LaplaceSolver2D, PoissonSolver2D};
375pub use pde::finite_difference::{
376    first_derivative, first_derivative_matrix, second_derivative, second_derivative_matrix,
377    FiniteDifferenceScheme,
378};
379pub use pde::finite_element::{
380    BoundaryNodeInfo, ElementType, FEMOptions, FEMPoissonSolver, FEMResult, Point, Triangle,
381    TriangularMesh,
382};
383pub use pde::method_of_lines::{
384    MOL2DResult, MOL3DResult, MOLHyperbolicResult, MOLOptions, MOLParabolicSolver1D,
385    MOLParabolicSolver2D, MOLParabolicSolver3D, MOLResult, MOLWaveEquation1D,
386};
387pub use pde::spectral::spectral_element::{
388    QuadElement, SpectralElementMesh2D, SpectralElementOptions, SpectralElementPoisson2D,
389    SpectralElementResult,
390};
391pub use pde::spectral::{
392    chebyshev_inverse_transform, chebyshev_points, chebyshev_transform, legendre_diff2_matrix,
393    legendre_diff_matrix, legendre_inverse_transform, legendre_points, legendre_transform,
394    ChebyshevSpectralSolver1D, FourierSpectralSolver1D, LegendreSpectralSolver1D, SpectralBasis,
395    SpectralOptions, SpectralResult,
396};
397pub use pde::{
398    BoundaryCondition, BoundaryConditionType, BoundaryLocation, Domain, PDEError, PDEResult,
399    PDESolution, PDESolverInfo, PDEType,
400};
401// Enhanced PDE solver exports (v0.3.0)
402pub use pde::fd_solvers::{
403    cfl_heat_1d, cfl_heat_2d, cfl_wave_1d, cfl_wave_2d, solve_heat_1d, solve_heat_2d,
404    solve_poisson_2d as fd_solve_poisson_2d, solve_wave_1d, solve_wave_2d, CFLAnalysis,
405    EllipticIterativeMethod, FDBoundaryCondition, Heat2DResult, HeatResult, PoissonResult,
406    TimeSteppingMethod, Wave2DResult, WaveResult,
407};
408pub use pde::fem_1d::{
409    mark_for_refinement, solve_steady_1d, solve_transient_1d, FEM1DBoundaryCondition,
410    FEM1DElementType, FEM1DSteadyOptions, FEM1DSteadyResult, FEM1DTransientOptions,
411    FEM1DTransientResult, Mesh1D, RefinementIndicator,
412};
413pub use pde::mol_enhanced::{
414    mol_advection_1d, mol_advection_diffusion_1d, mol_diffusion_1d, mol_reaction_diffusion,
415    AdvectionScheme, MOLBoundaryCondition, MOLEnhancedOptions, MOLEnhancedResult,
416    MOLTimeIntegrator, ReactionDiffusionResult, ReactionDiffusionSystem, StencilOrder,
417};
418pub use pde::spectral_enhanced::{
419    chebyshev_collocation_points, chebyshev_diff2_matrix as chebyshev_diff2_matrix_enhanced,
420    chebyshev_diff_matrix as chebyshev_diff_matrix_enhanced, chebyshev_diffusion_1d,
421    chebyshev_nonlinear_bvp, chebyshev_poisson_1d, dealias_23, dealias_23_2d, fourier_advection_1d,
422    fourier_diff2_matrix, fourier_diff_matrix, fourier_diffusion_1d, map_chebyshev_to_interval,
423    scale_chebyshev_diff, SpectralBasisType, SpectralEnhancedOptions, SpectralEnhancedResult,
424};
425// Export symbolic integration types
426pub use symbolic::{
427    detect_conservation_laws, generate_jacobian, higher_order_to_first_order, simplify,
428    ConservationEnforcer, ConservationLaw, FirstOrderSystem, HigherOrderODE, SymbolicExpression,
429    SymbolicJacobian, Variable,
430};
431// Export automatic differentiation types
432pub use autodiff::{
433    compress_jacobian, compute_sensitivities, detect_sparsity, forward_gradient, forward_jacobian,
434    reverse_gradient, reverse_jacobian, Dual, DualVector, ForwardAD, ParameterSensitivity,
435    ReverseAD, SensitivityAnalysis, SparseJacobian, SparsePattern, TapeNode,
436};
437// Export specialized domain-specific solvers
438pub use specialized::{
439    // Fluid dynamics exports
440    DealiasingStrategy,
441    // Finance module exports
442    FinanceMethod,
443    FinancialOption,
444    FluidBoundaryCondition,
445    FluidState,
446    FluidState3D,
447    // Quantum mechanics exports
448    GPUMultiBodyQuantumSolver,
449    GPUQuantumSolver,
450    Greeks,
451    HarmonicOscillator,
452    HydrogenAtom,
453    JumpProcess,
454    LESolver,
455    NavierStokesParams,
456    NavierStokesSolver,
457    OptionStyle,
458    OptionType,
459    // MultiBodyQuantumSolver, - TODO: Add when implemented
460    ParticleInBox,
461    QuantumAnnealer,
462    QuantumPotential,
463    QuantumState,
464    RANSModel,
465    RANSSolver,
466    RANSState,
467    SGSModel,
468    SchrodingerMethod,
469    SchrodingerSolver,
470    // VariationalQuantumEigensolver, - TODO: Add when implemented
471    // Quantum ML exports - TODO: Add when implemented
472    // EntanglementPattern,
473    // QuantumFeatureMap,
474    // QuantumKernelParams,
475    // QuantumSVMModel,
476    // QuantumSupportVectorMachine,
477    SpectralNavierStokesSolver,
478    StochasticPDESolver,
479    VolatilityModel,
480};
481// Export geometric integration methods
482pub use geometric::{
483    ABCFlow,
484    AngularMomentumInvariant2D,
485    CircularFlow2D,
486    ConservationChecker,
487    ConstrainedIntegrator,
488    DiscreteGradientIntegrator,
489    DivergenceFreeFlow,
490    DoubleGyre,
491    EnergyInvariant,
492    EnergyMomentumIntegrator,
493    EnergyPreservingMethod,
494    ExponentialMap,
495    GLn,
496    GeometricInvariant,
497    Gln,
498    HamiltonianFlow,
499    HeisenbergAlgebra,
500    HeisenbergGroup,
501    IncompressibleFlow,
502    LieAlgebra,
503    // Lie group integration
504    LieGroupIntegrator,
505    LieGroupMethod,
506    LinearMomentumInvariant,
507    ModifiedMidpointIntegrator,
508    MomentumPreservingMethod,
509    MultiSymplecticIntegrator,
510    SE3Integrator,
511    SLn,
512    SO3Integrator,
513    Se3,
514    Sln,
515    So3,
516    Sp2n,
517    SplittingIntegrator,
518    StreamFunction,
519    // Structure-preserving integration
520    StructurePreservingIntegrator,
521    StructurePreservingMethod,
522    StuartVortex,
523    TaylorGreenVortex,
524    VariationalIntegrator,
525    VolumeChecker,
526    // Volume-preserving integration
527    VolumePreservingIntegrator,
528    VolumePreservingMethod,
529    SE3,
530    SO3,
531};
532// Export analysis tools
533pub use analysis::advanced::{
534    BifurcationPointData, ContinuationAnalyzer, FixedPointData, MonodromyAnalyzer, MonodromyResult,
535    PeriodicStabilityType,
536};
537pub use analysis::{
538    BasinAnalysis,
539    BifurcationAnalyzer,
540    BifurcationPoint,
541    BifurcationType,
542    // Enhanced bifurcation and stability analysis
543    ContinuationResult,
544    FixedPoint,
545    PeriodicOrbit,
546    StabilityAnalyzer,
547    StabilityResult,
548    StabilityType,
549};
550// Export visualization utilities
551pub use visualization::{
552    // VisualizationEngine, // TODO: uncomment when implemented
553    AttractorStability,
554    BifurcationDiagram,
555    // BifurcationDiagramBuilder, // TODO: uncomment when implemented
556    ColorScheme,
557    // ConvergenceCurve, // TODO: uncomment when implemented
558    // ConvergencePlot, // TODO: uncomment when implemented
559    // Enhanced visualization tools
560    // ConvergenceVisualizer, // TODO: uncomment when implemented
561    // EnhancedBifurcationDiagram, // TODO: uncomment when implemented
562    HeatMapPlot,
563    // MultiMetricConvergencePlot, // TODO: uncomment when implemented
564    OutputFormat,
565    ParameterExplorationPlot,
566    PhaseSpace3D,
567    // PhaseDensityPlot, // TODO: uncomment when implemented
568    PhaseSpacePlot,
569    PlotMetadata,
570    PlotStatistics,
571    RealTimeBifurcationPlot,
572    SensitivityPlot,
573    // StepSizeAnalysisPlot, // TODO: uncomment when implemented
574    SurfacePlot,
575    VectorFieldPlot,
576};
577// Export advanced modules
578pub use amr_advanced::{
579    AMRAdaptationResult, AdaptiveCell, AdaptiveMeshLevel, AdvancedAMRManager,
580    CurvatureRefinementCriterion, FeatureDetectionCriterion, GeometricLoadBalancer,
581    GradientRefinementCriterion, LoadBalancer, MeshHierarchy, RefinementCriterion,
582};
583pub use error_estimation::{
584    AdvancedErrorEstimator, DefectCorrector, ErrorAnalysisResult, ErrorDistribution,
585    RichardsonExtrapolator, SolutionQualityMetrics, SpectralErrorIndicator,
586};
587pub use parallel_optimization::{
588    LoadBalancingStrategy, NumaTopology, ParallelExecutionStats, ParallelOptimizer, ParallelTask,
589    VectorOperation, VectorizedComputeTask, WorkStealingConfig, WorkStealingStats,
590};
591pub use performance_monitor::{
592    ConvergenceAnalysis as PerfConvergenceAnalysis, OptimizationRecommendation,
593    PerformanceAnalyzer, PerformanceBottleneck, PerformanceMetrics, PerformanceProfiler,
594    PerformanceReport,
595};
596// Export advanced-performance optimization modules
597pub use advanced_memory_optimization::{
598    AccessPattern, AdvancedMemoryOptimizer, CacheStrategy, L1CacheBuffer, L2CacheBuffer,
599    L3CacheBuffer, MemoryHierarchyManager, MemoryLayout, MemoryTier, MemoryType, NumaPlacement,
600    OptimizedMemoryRegion, PrefetchStrategy, ZeroCopyBuffer, ZeroCopyBufferPool,
601};
602pub use advanced_simd_acceleration::{
603    AdvancedSimdAccelerator, Avx512Support, MixedPrecisionOperation, PrecisionLevel,
604    SimdCapabilities, SveSupport, VectorizationStrategies,
605};
606pub use gpu_advanced_acceleration::{
607    AdvancedGPUAccelerator, AdvancedGPUMemoryPool, GpuDeviceInfo,
608    LoadBalancingStrategy as GpuLoadBalancingStrategy, MemoryBlock, MemoryBlockType,
609    MultiGpuConfiguration, RealTimeGpuMonitor,
610};
611pub use realtime_performance_adaptation::{
612    AdaptationStrategy, AlgorithmSwitchRecommendation, AnomalyAnalysisResult, AnomalySeverity,
613    AnomalyType, OptimizationRecommendations, PerformanceAnalysis, PerformanceAnomaly,
614    PerformanceBottleneck as AdaptivePerformanceBottleneck,
615    PerformanceMetrics as AdaptivePerformanceMetrics, PerformanceTrend, RealTimeAdaptiveOptimizer,
616};
617// pub use advanced_mode_coordinator::{
618//     PerformanceTargets, advancedModeConfig, advancedModeCoordinator, advancedModeMetrics,
619//     advancedModePerformanceReport, advancedModeResult,
620// }; // Module not implemented yet
621// Neural Reinforcement Learning Step Control exports
622pub use neural_rl_step_control::{
623    DeepQNetwork, Experience, NetworkWeights, NeuralRLStepController, PrioritizedExperienceReplay,
624    RLEvaluationResults, StateFeatureExtractor, StepSizePrediction, TrainingConfiguration,
625    TrainingResult,
626};
627// Implicit solvers for PDEs
628pub use clenshaw_curtis::{
629    quad_cc, quad_cc_tol, ClenshawCurtisOptions, ClenshawCurtisResult, ClenshawCurtisRule,
630};
631pub use ode::methods::rosenbrock::{rosenbrock_method, RosenbrockVariant};
632// Export enhanced symplectic ODE methods
633pub use ode::methods::symplectic::{
634    create_stepper as create_symplectic_stepper, solve_hamiltonian, EnergyMonitor,
635    HamiltonianSystem as SymplecticHamiltonianSystem, SeparableSystem as SymplecticSeparableSystem,
636    StormerVerletODE, SymplecticMethod, SymplecticODEResult, SymplecticStepper, VelocityVerletODE,
637    Yoshida4, Yoshida6, Yoshida8,
638};
639// Export enhanced event detection
640pub use ode::events::{
641    CrossingDirection, DetectedEvent, EventDef, EventDetector, EventResponse, RootFindingMethod,
642};
643pub use pde::implicit::{
644    ADIResult, BackwardEuler1D, CrankNicolson1D, ImplicitMethod, ImplicitOptions, ImplicitResult,
645    ADI2D,
646};
647pub use qmc::{qmc_quad, qmc_quad_parallel, Faure, Halton, QMCQuadResult, RandomGenerator, Sobol};
648pub use quad::{quad, simpson, trapezoid};
649pub use quad_vec::{quad_vec, NormType, QuadRule, QuadVecOptions, QuadVecResult};
650pub use sparse_grid::{
651    sparse_grid_quad, SparseGridOptions, SparseGridResult, SparseGridRuleFamily,
652};
653pub use symplectic::{
654    position_verlet, symplectic_euler, symplectic_euler_a, symplectic_euler_b, velocity_verlet,
655    CompositionMethod, GaussLegendre4, GaussLegendre6, HamiltonianFn, HamiltonianSystem,
656    SeparableHamiltonian, StormerVerlet, SymplecticIntegrator, SymplecticResult,
657};
658pub use tanhsinh::{nsum, tanhsinh, TanhSinhOptions, TanhSinhResult};
659pub use verification::{
660    polynomial_solution, trigonometric_solution_2d, ConvergenceAnalysis, ErrorAnalysis,
661    ExactSolution, MMSODEProblem, MMSPDEProblem, PDEType as VerificationPDEType,
662    PolynomialSolution, TrigonometricSolution2D,
663};
664// Distributed computing exports
665pub use distributed::{
666    // Types
667    BoundaryConditions as DistributedBoundaryConditions,
668    BoundaryData,
669    // Communication
670    BoundaryExchanger,
671    // Checkpointing
672    Checkpoint,
673    CheckpointConfig,
674    CheckpointGlobalState,
675    CheckpointManager,
676    CheckpointStatistics,
677    ChunkCheckpoint,
678    // Load balancing
679    ChunkDistributor,
680    ChunkId,
681    ChunkResult,
682    ChunkResultStatus,
683    Communicator,
684    // Node management
685    ComputeNode,
686    DistributedConfig,
687    DistributedError,
688    DistributedMessage,
689    DistributedMetrics,
690    // Solver
691    DistributedODEResult,
692    DistributedODESolver,
693    DistributedODESolverBuilder,
694    DistributedResult,
695    FaultToleranceCoordinator,
696    FaultToleranceMode,
697    JobId,
698    LoadBalancer as DistributedLoadBalancer,
699    LoadBalancerConfig,
700    LoadBalancerStatistics,
701    LoadBalancingStrategy as DistributedLoadBalancingStrategy,
702    MessageChannel,
703    NodeBuilder,
704    NodeCapabilities,
705    NodeId,
706    NodeInfo,
707    NodeManager,
708    NodePerformance,
709    NodeStatus,
710    RecoveryAction,
711    ResourceMonitor,
712    SyncBarrier,
713    WorkChunk,
714};
715
716#[cfg(test)]
717mod tests {
718    #[test]
719    fn it_works() {
720        assert_eq!(2 + 2, 4);
721    }
722}