Expand description
§kryst
PETSc-like KSP/PC in Rust with MPI-friendly design.
§Architecture decisions (read first)
LinOp::comm()is the single source of truth for parallel context (ADR-001).- Preconditioners compute z = M⁻¹ x; solvers decide left/right placement (ADR-002).
- Flexible PCs use [
Preconditioner::apply_mut] (FGMRES, etc.). - Options map to builders; no in-solver construction.
See docs/adr/ for rationale and trade-offs.
§Parallelism
With the rayon feature, CsrOp::matvec can use a
parallel SpMV path for local-only matrices larger than KRYST_PAR_CUTOFF
(default crate::parallel::threads::DEFAULT_PAR_CUTOFF). Control the pool
size with KRYST_THREADS or RAYON_NUM_THREADS. See
crate::parallel::threads for details.
Re-exports§
pub use utils::convergence::SolveStats;pub use algebra::*;pub use config::*;pub use context::*;pub use core::*;pub use error::*;pub use matrix::*;pub use reduction::*;pub use utils::*;
Modules§
- algebra
- Basic numeric traits and operations used throughout the crate.
- config
- context
- Context module for KrylovKit linear algebra library.
- core
- error
- matrix
- Matrix module: dense and sparse matrix types and traits.
- parallel
- preconditioner
- Preconditioners
- reduction
- solver
- Solver traits and adapters.
- utils
- Utility modules for logging, convergence checks, graph coloring, reordering, and profiling.
Macros§
- pc_log
- time_
stage - Macro for timing a code block with automatic stage guard creation.
- with_
monitoring - Conditionally execute monitoring code only when monitoring is enabled.
- with_
profiling - Conditionally execute profiling code only when profiling is enabled.