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_extended;
271pub mod cubature;
272pub mod dae;
273pub mod gaussian;
274pub mod lebedev;
275pub mod memory;
276pub mod monte_carlo;
277#[cfg(feature = "parallel")]
278pub mod monte_carlo_parallel;
279pub mod newton_cotes;
280
281// Use the new modular ODE implementation
282pub mod ode;
283
284// Symplectic integrators
285pub mod symplectic;
286
287// PDE solver module
288pub mod pde;
289
290// Symbolic integration support
291pub mod symbolic;
292
293// Enhanced automatic differentiation
294pub mod autodiff;
295
296// Specialized domain-specific solvers
297pub mod specialized;
298
299// Geometric integration methods
300pub mod geometric;
301
302// Advanced analysis tools for dynamical systems
303pub mod analysis;
304
305// Visualization utilities
306pub mod visualization;
307
308// Distributed computing support
309pub mod distributed;
310
311// ODE module is now fully implemented in ode/
312
313pub mod qmc;
314pub mod quad;
315pub mod quad_vec;
316pub mod romberg;
317pub mod scheduling;
318pub mod tanhsinh;
319pub mod utils;
320pub mod verification;
321
322// Re-exports for convenience
323pub use acceleration::{AcceleratorOptions, AitkenAccelerator, AndersonAccelerator};
324pub use autotuning::{
325 AlgorithmTuner, AutoTuner, GpuInfo, HardwareDetector, HardwareInfo, SimdFeature, TuningProfile,
326};
327pub use bvp::{solve_bvp, solve_bvp_auto, BVPOptions, BVPResult};
328pub use bvp_extended::{
329 solve_bvp_extended, solve_multipoint_bvp, BoundaryConditionType as BVPBoundaryConditionType,
330 ExtendedBoundaryConditions, MultipointBVP, RobinBC,
331};
332pub use cubature::{cubature, nquad, Bound, CubatureOptions, CubatureResult};
333pub use dae::{
334 bdf_implicit_dae, bdf_implicit_with_index_reduction, bdf_semi_explicit_dae,
335 bdf_with_index_reduction, create_block_ilu_preconditioner, create_block_jacobi_preconditioner,
336 krylov_bdf_implicit_dae, krylov_bdf_semi_explicit_dae, solve_higher_index_dae,
337 solve_implicit_dae, solve_ivp_dae, solve_semi_explicit_dae, DAEIndex, DAEOptions, DAEResult,
338 DAEStructure, DAEType, DummyDerivativeReducer, PantelidesReducer, ProjectionMethod,
339};
340pub use lebedev::{lebedev_integrate, lebedev_rule, LebedevOrder, LebedevRule};
341pub use memory::{
342 BlockingStrategy, CacheAwareAlgorithms, CacheFriendlyMatrix, CacheLevel, DataLayoutOptimizer,
343 MatrixLayout, MemoryPool, MemoryPrefetch, MemoryUsage, PooledBuffer,
344};
345pub use monte_carlo::{
346 importance_sampling, monte_carlo, monte_carlo_parallel, ErrorEstimationMethod,
347 MonteCarloOptions, MonteCarloResult,
348};
349#[cfg(feature = "parallel")]
350pub use monte_carlo_parallel::{
351 adaptive_parallel_monte_carlo, parallel_monte_carlo, ParallelMonteCarloOptions,
352};
353pub use newton_cotes::{newton_cotes, newton_cotes_integrate, NewtonCotesResult, NewtonCotesType};
354// Export ODE types from the new modular implementation
355pub use ode::{
356 solve_ivp, solve_ivp_with_events, terminal_event, EventAction, EventDirection, EventSpec,
357 MassMatrix, MassMatrixType, ODEMethod, ODEOptions, ODEOptionsWithEvents, ODEResult,
358 ODEResultWithEvents,
359};
360// Export PDE types
361pub use pde::elliptic::{EllipticOptions, EllipticResult, LaplaceSolver2D, PoissonSolver2D};
362pub use pde::finite_difference::{
363 first_derivative, first_derivative_matrix, second_derivative, second_derivative_matrix,
364 FiniteDifferenceScheme,
365};
366pub use pde::finite_element::{
367 BoundaryNodeInfo, ElementType, FEMOptions, FEMPoissonSolver, FEMResult, Point, Triangle,
368 TriangularMesh,
369};
370pub use pde::method_of_lines::{
371 MOL2DResult, MOL3DResult, MOLHyperbolicResult, MOLOptions, MOLParabolicSolver1D,
372 MOLParabolicSolver2D, MOLParabolicSolver3D, MOLResult, MOLWaveEquation1D,
373};
374pub use pde::spectral::spectral_element::{
375 QuadElement, SpectralElementMesh2D, SpectralElementOptions, SpectralElementPoisson2D,
376 SpectralElementResult,
377};
378pub use pde::spectral::{
379 chebyshev_inverse_transform, chebyshev_points, chebyshev_transform, legendre_diff2_matrix,
380 legendre_diff_matrix, legendre_inverse_transform, legendre_points, legendre_transform,
381 ChebyshevSpectralSolver1D, FourierSpectralSolver1D, LegendreSpectralSolver1D, SpectralBasis,
382 SpectralOptions, SpectralResult,
383};
384pub use pde::{
385 BoundaryCondition, BoundaryConditionType, BoundaryLocation, Domain, PDEError, PDEResult,
386 PDESolution, PDESolverInfo, PDEType,
387};
388// Export symbolic integration types
389pub use symbolic::{
390 detect_conservation_laws, generate_jacobian, higher_order_to_first_order, simplify,
391 ConservationEnforcer, ConservationLaw, FirstOrderSystem, HigherOrderODE, SymbolicExpression,
392 SymbolicJacobian, Variable,
393};
394// Export automatic differentiation types
395pub use autodiff::{
396 compress_jacobian, compute_sensitivities, detect_sparsity, forward_gradient, forward_jacobian,
397 reverse_gradient, reverse_jacobian, Dual, DualVector, ForwardAD, ParameterSensitivity,
398 ReverseAD, SensitivityAnalysis, SparseJacobian, SparsePattern, TapeNode,
399};
400// Export specialized domain-specific solvers
401pub use specialized::{
402 // Fluid dynamics exports
403 DealiasingStrategy,
404 // Finance module exports
405 FinanceMethod,
406 FinancialOption,
407 FluidBoundaryCondition,
408 FluidState,
409 FluidState3D,
410 // Quantum mechanics exports
411 GPUMultiBodyQuantumSolver,
412 GPUQuantumSolver,
413 Greeks,
414 HarmonicOscillator,
415 HydrogenAtom,
416 JumpProcess,
417 LESolver,
418 NavierStokesParams,
419 NavierStokesSolver,
420 OptionStyle,
421 OptionType,
422 // MultiBodyQuantumSolver, - TODO: Add when implemented
423 ParticleInBox,
424 QuantumAnnealer,
425 QuantumPotential,
426 QuantumState,
427 RANSModel,
428 RANSSolver,
429 RANSState,
430 SGSModel,
431 SchrodingerMethod,
432 SchrodingerSolver,
433 // VariationalQuantumEigensolver, - TODO: Add when implemented
434 // Quantum ML exports - TODO: Add when implemented
435 // EntanglementPattern,
436 // QuantumFeatureMap,
437 // QuantumKernelParams,
438 // QuantumSVMModel,
439 // QuantumSupportVectorMachine,
440 SpectralNavierStokesSolver,
441 StochasticPDESolver,
442 VolatilityModel,
443};
444// Export geometric integration methods
445pub use geometric::{
446 ABCFlow,
447 AngularMomentumInvariant2D,
448 CircularFlow2D,
449 ConservationChecker,
450 ConstrainedIntegrator,
451 DiscreteGradientIntegrator,
452 DivergenceFreeFlow,
453 DoubleGyre,
454 EnergyInvariant,
455 EnergyMomentumIntegrator,
456 EnergyPreservingMethod,
457 ExponentialMap,
458 GLn,
459 GeometricInvariant,
460 Gln,
461 HamiltonianFlow,
462 HeisenbergAlgebra,
463 HeisenbergGroup,
464 IncompressibleFlow,
465 LieAlgebra,
466 // Lie group integration
467 LieGroupIntegrator,
468 LieGroupMethod,
469 LinearMomentumInvariant,
470 ModifiedMidpointIntegrator,
471 MomentumPreservingMethod,
472 MultiSymplecticIntegrator,
473 SE3Integrator,
474 SLn,
475 SO3Integrator,
476 Se3,
477 Sln,
478 So3,
479 Sp2n,
480 SplittingIntegrator,
481 StreamFunction,
482 // Structure-preserving integration
483 StructurePreservingIntegrator,
484 StructurePreservingMethod,
485 StuartVortex,
486 TaylorGreenVortex,
487 VariationalIntegrator,
488 VolumeChecker,
489 // Volume-preserving integration
490 VolumePreservingIntegrator,
491 VolumePreservingMethod,
492 SE3,
493 SO3,
494};
495// Export analysis tools
496pub use analysis::advanced::{
497 BifurcationPointData, ContinuationAnalyzer, FixedPointData, MonodromyAnalyzer, MonodromyResult,
498 PeriodicStabilityType,
499};
500pub use analysis::{
501 BasinAnalysis,
502 BifurcationAnalyzer,
503 BifurcationPoint,
504 BifurcationType,
505 // Enhanced bifurcation and stability analysis
506 ContinuationResult,
507 FixedPoint,
508 PeriodicOrbit,
509 StabilityAnalyzer,
510 StabilityResult,
511 StabilityType,
512};
513// Export visualization utilities
514pub use visualization::{
515 // VisualizationEngine, // TODO: uncomment when implemented
516 AttractorStability,
517 BifurcationDiagram,
518 // BifurcationDiagramBuilder, // TODO: uncomment when implemented
519 ColorScheme,
520 // ConvergenceCurve, // TODO: uncomment when implemented
521 // ConvergencePlot, // TODO: uncomment when implemented
522 // Enhanced visualization tools
523 // ConvergenceVisualizer, // TODO: uncomment when implemented
524 // EnhancedBifurcationDiagram, // TODO: uncomment when implemented
525 HeatMapPlot,
526 // MultiMetricConvergencePlot, // TODO: uncomment when implemented
527 OutputFormat,
528 ParameterExplorationPlot,
529 PhaseSpace3D,
530 // PhaseDensityPlot, // TODO: uncomment when implemented
531 PhaseSpacePlot,
532 PlotMetadata,
533 PlotStatistics,
534 RealTimeBifurcationPlot,
535 SensitivityPlot,
536 // StepSizeAnalysisPlot, // TODO: uncomment when implemented
537 SurfacePlot,
538 VectorFieldPlot,
539};
540// Export advanced modules
541pub use amr_advanced::{
542 AMRAdaptationResult, AdaptiveCell, AdaptiveMeshLevel, AdvancedAMRManager,
543 CurvatureRefinementCriterion, FeatureDetectionCriterion, GeometricLoadBalancer,
544 GradientRefinementCriterion, LoadBalancer, MeshHierarchy, RefinementCriterion,
545};
546pub use error_estimation::{
547 AdvancedErrorEstimator, DefectCorrector, ErrorAnalysisResult, ErrorDistribution,
548 RichardsonExtrapolator, SolutionQualityMetrics, SpectralErrorIndicator,
549};
550pub use parallel_optimization::{
551 LoadBalancingStrategy, NumaTopology, ParallelExecutionStats, ParallelOptimizer, ParallelTask,
552 VectorOperation, VectorizedComputeTask, WorkStealingConfig, WorkStealingStats,
553};
554pub use performance_monitor::{
555 ConvergenceAnalysis as PerfConvergenceAnalysis, OptimizationRecommendation,
556 PerformanceAnalyzer, PerformanceBottleneck, PerformanceMetrics, PerformanceProfiler,
557 PerformanceReport,
558};
559// Export advanced-performance optimization modules
560pub use advanced_memory_optimization::{
561 AccessPattern, AdvancedMemoryOptimizer, CacheStrategy, L1CacheBuffer, L2CacheBuffer,
562 L3CacheBuffer, MemoryHierarchyManager, MemoryLayout, MemoryTier, MemoryType, NumaPlacement,
563 OptimizedMemoryRegion, PrefetchStrategy, ZeroCopyBuffer, ZeroCopyBufferPool,
564};
565pub use advanced_simd_acceleration::{
566 AdvancedSimdAccelerator, Avx512Support, MixedPrecisionOperation, PrecisionLevel,
567 SimdCapabilities, SveSupport, VectorizationStrategies,
568};
569pub use gpu_advanced_acceleration::{
570 AdvancedGPUAccelerator, AdvancedGPUMemoryPool, GpuDeviceInfo,
571 LoadBalancingStrategy as GpuLoadBalancingStrategy, MemoryBlock, MemoryBlockType,
572 MultiGpuConfiguration, RealTimeGpuMonitor,
573};
574pub use realtime_performance_adaptation::{
575 AdaptationStrategy, AlgorithmSwitchRecommendation, AnomalyAnalysisResult, AnomalySeverity,
576 AnomalyType, OptimizationRecommendations, PerformanceAnalysis, PerformanceAnomaly,
577 PerformanceBottleneck as AdaptivePerformanceBottleneck,
578 PerformanceMetrics as AdaptivePerformanceMetrics, PerformanceTrend, RealTimeAdaptiveOptimizer,
579};
580// pub use advanced_mode_coordinator::{
581// PerformanceTargets, advancedModeConfig, advancedModeCoordinator, advancedModeMetrics,
582// advancedModePerformanceReport, advancedModeResult,
583// }; // Module not implemented yet
584// Neural Reinforcement Learning Step Control exports
585pub use neural_rl_step_control::{
586 DeepQNetwork, Experience, NetworkWeights, NeuralRLStepController, PrioritizedExperienceReplay,
587 RLEvaluationResults, StateFeatureExtractor, StepSizePrediction, TrainingConfiguration,
588 TrainingResult,
589};
590// Implicit solvers for PDEs
591pub use pde::implicit::{
592 ADIResult, BackwardEuler1D, CrankNicolson1D, ImplicitMethod, ImplicitOptions, ImplicitResult,
593 ADI2D,
594};
595pub use qmc::{qmc_quad, qmc_quad_parallel, Faure, Halton, QMCQuadResult, RandomGenerator, Sobol};
596pub use quad::{quad, simpson, trapezoid};
597pub use quad_vec::{quad_vec, NormType, QuadRule, QuadVecOptions, QuadVecResult};
598pub use symplectic::{
599 position_verlet, symplectic_euler, symplectic_euler_a, symplectic_euler_b, velocity_verlet,
600 CompositionMethod, GaussLegendre4, GaussLegendre6, HamiltonianFn, HamiltonianSystem,
601 SeparableHamiltonian, StormerVerlet, SymplecticIntegrator, SymplecticResult,
602};
603pub use tanhsinh::{nsum, tanhsinh, TanhSinhOptions, TanhSinhResult};
604pub use verification::{
605 polynomial_solution, trigonometric_solution_2d, ConvergenceAnalysis, ErrorAnalysis,
606 ExactSolution, MMSODEProblem, MMSPDEProblem, PDEType as VerificationPDEType,
607 PolynomialSolution, TrigonometricSolution2D,
608};
609// Distributed computing exports
610pub use distributed::{
611 // Types
612 BoundaryConditions as DistributedBoundaryConditions,
613 BoundaryData,
614 // Communication
615 BoundaryExchanger,
616 // Checkpointing
617 Checkpoint,
618 CheckpointConfig,
619 CheckpointGlobalState,
620 CheckpointManager,
621 CheckpointStatistics,
622 ChunkCheckpoint,
623 // Load balancing
624 ChunkDistributor,
625 ChunkId,
626 ChunkResult,
627 ChunkResultStatus,
628 Communicator,
629 // Node management
630 ComputeNode,
631 DistributedConfig,
632 DistributedError,
633 DistributedMessage,
634 DistributedMetrics,
635 // Solver
636 DistributedODEResult,
637 DistributedODESolver,
638 DistributedODESolverBuilder,
639 DistributedResult,
640 FaultToleranceCoordinator,
641 FaultToleranceMode,
642 JobId,
643 LoadBalancer as DistributedLoadBalancer,
644 LoadBalancerConfig,
645 LoadBalancerStatistics,
646 LoadBalancingStrategy as DistributedLoadBalancingStrategy,
647 MessageChannel,
648 NodeBuilder,
649 NodeCapabilities,
650 NodeId,
651 NodeInfo,
652 NodeManager,
653 NodePerformance,
654 NodeStatus,
655 RecoveryAction,
656 ResourceMonitor,
657 SyncBarrier,
658 WorkChunk,
659};
660
661#[cfg(test)]
662mod tests {
663 #[test]
664 fn it_works() {
665 assert_eq!(2 + 2, 4);
666 }
667}