Skip to main content

oxicuda_solver/sparse/
mod.rs

1//! Iterative sparse linear solvers.
2//!
3//! Provides matrix-free iterative methods for solving large sparse linear systems
4//! `A * x = b`. The solvers accept a closure `spmv: F` that computes the
5//! sparse matrix-vector product `y = A * x`, enabling use with any sparse
6//! matrix format or even matrix-free operators.
7//!
8//! # Solvers
9//!
10//! - **CG** ([`cg`]): Conjugate Gradient for symmetric positive definite systems.
11//! - **BiCGSTAB** ([`bicgstab`]): Biconjugate Gradient Stabilized for non-symmetric systems.
12//! - **GMRES(m)** ([`gmres`]): Generalized Minimal Residual with restart for general systems.
13//! - **Direct** ([`direct`]): Direct sparse solver via dense LU (for small-to-medium systems).
14
15pub mod bicgstab;
16pub mod cg;
17pub mod direct;
18pub mod direct_factorization;
19pub mod fgmres;
20pub mod gmres;
21pub mod nested_dissection;
22pub mod preconditioned;
23
24pub use bicgstab::{BiCgStabConfig, bicgstab_solve};
25pub use cg::{CgConfig, cg_solve};
26pub use direct::prefer_direct_solver;
27pub use direct_factorization::{
28    EliminationTree, MultifrontalLUSolver, SupernodalCholeskySolver, SupernodalStructure,
29    SymbolicFactorization, sparse_cholesky_solve, sparse_lu_solve,
30};
31pub use fgmres::{FgmresConfig, fgmres};
32pub use gmres::{GmresConfig, gmres_solve};
33pub use nested_dissection::{
34    AdjacencyGraph, NestedDissectionOrdering, OrderingQuality, Permutation,
35};
36pub use preconditioned::{
37    IdentityPreconditioner, IterativeSolverResult, JacobiPreconditioner, PcgConfig, PgmresConfig,
38    Preconditioner, preconditioned_cg, preconditioned_gmres,
39};