solvers/lib.rs
1//! High-performance linear solvers for BEM and FEM
2//!
3//! This crate provides a collection of iterative and direct solvers for linear systems,
4//! along with sparse matrix representations and preconditioners.
5//!
6//! # Features
7//!
8//! - **Iterative Solvers**: GMRES, BiCGSTAB, CGS, CG
9//! - **Direct Solvers**: LU decomposition (with BLAS and pure-Rust fallbacks)
10//! - **Preconditioners**: Jacobi, ILU, block diagonal
11//! - **Sparse Matrices**: CSR format with efficient matrix-vector products
12//! - **Generic Scalar Types**: Works with Complex64, Complex32, f64, f32
13//!
14//! # Example
15//!
16//! ```ignore
17//! use solvers::{CsrMatrix, gmres, GmresConfig};
18//! use num_complex::Complex64;
19//!
20//! // Create a sparse system matrix
21//! let matrix = CsrMatrix::from_dense(&dense_matrix, 1e-10);
22//!
23//! // Solve with GMRES
24//! let config = GmresConfig::default();
25//! let solution = gmres(&matrix, &rhs, &config)?;
26//! ```
27
28pub mod direct;
29pub mod iterative;
30pub mod parallel;
31pub mod preconditioners;
32pub mod sparse;
33pub mod traits;
34
35// Re-export main types
36pub use sparse::{CsrBuilder, CsrMatrix};
37pub use traits::{ComplexField, LinearOperator, Preconditioner};
38
39// Re-export iterative solvers
40pub use iterative::{
41 BiCgstabConfig, BiCgstabSolution, CgConfig, CgSolution, CgsConfig, CgsSolution, GmresConfig,
42 GmresSolution, bicgstab, cg, cgs, gmres,
43};
44
45// Re-export direct solvers
46pub use direct::{LuFactorization, lu_solve};
47
48// Re-export preconditioners
49pub use preconditioners::{
50 AdditiveSchwarzPreconditioner, AmgCoarsening, AmgConfig, AmgCycle, AmgDiagnostics,
51 AmgInterpolation, AmgPreconditioner, AmgSmoother, DiagonalPreconditioner,
52 IdentityPreconditioner, IluColoringPreconditioner, IluFixedPointPreconditioner,
53 IluPreconditioner,
54};