Skip to main content

pounce_linsol/
lib.rs

1//! POUNCE symmetric linear-solver trait layer.
2//!
3//! Port of Ipopt's `src/Algorithm/LinearSolvers/`:
4//!
5//! * [`sym_solver`] — high-level [`SymLinearSolver`] trait
6//!   (port of `IpSymLinearSolver.hpp`).
7//! * [`sparse_sym_iface`] — low-level [`SparseSymLinearSolverInterface`]
8//!   trait that backends like MA57 / MUMPS / FERAL implement
9//!   (port of `IpSparseSymLinearSolverInterface.hpp`).
10//! * [`status`] — [`ESymSolverStatus`] return enum
11//!   (port of the enum in `IpSymLinearSolver.hpp`).
12//!
13//! Concrete backends live outside this crate: `pounce-hsl` ships the
14//! MA57 backend in v1.0; MUMPS and FERAL are slotted behind the same
15//! traits in v1.1.
16
17#![cfg_attr(test, allow(clippy::unwrap_used, clippy::expect_used))]
18
19pub mod error;
20pub mod factorization;
21pub mod scaling;
22pub mod sparse_sym_iface;
23pub mod status;
24pub mod summary;
25pub mod sym_solver;
26pub mod t_sym_solver;
27
28pub use error::FactorizationError;
29pub use factorization::Factorization;
30pub use scaling::{IdentityScalingMethod, TSymScalingMethod};
31pub use sparse_sym_iface::{EMatrixFormat, SparseSymLinearSolverInterface};
32pub use status::ESymSolverStatus;
33pub use summary::LinearSolverSummary;
34pub use sym_solver::SymLinearSolver;
35pub use t_sym_solver::TSymLinearSolver;