kryst 0.5.3

Krylov subspace and preconditioned iterative solvers for dense and sparse linear systems, with shared and distributed memory parallelism.
Documentation

kryst

Krylov subspace and preconditioned iterative solvers for dense and sparse linear systems, with shared and distributed memory parallelism.

Features

  • GMRES, CG, BiCGStab, MINRES, and other Krylov solvers
  • Preconditioners: Jacobi, ILU, Chebyshev, AMG, Additive Schwarz, and more
  • Dense and sparse matrix support
  • Shared-memory parallelism via Rayon
  • Distributed-memory parallelism via MPI (optional)
  • Block and pipelined communication-avoiding variants
  • Extensible trait-based design for custom matrices and preconditioners

Usage

Add to your Cargo.toml:

[dependencies]
kryst = "0.5"

Enable parallel or MPI features as needed:

[features]
default = ["rayon"]
mpi = ["dep:mpi"]

Example

use kryst::solver::GmresSolver;
// ... set up your matrix A and vectors b, x ...
let mut solver = GmresSolver::new(30, 1e-8, 200);
let stats = solver.solve(&A, None, &b, &mut x).unwrap();
println!("Converged: {} in {} iterations", stats.converged, stats.iterations);

Documentation

License

MIT

Contributing

Contributions, bug reports, and feature requests are welcome! Open an issue or pull request on GitHub.