clarabel/solver/core/kktsolvers/direct/quasidef/
mod.rs

1use crate::{algebra::*, solver::core::kktsolvers::HasLinearSolverInfo};
2
3//ldl linear solvers kept in a submodule (not flattened)
4pub mod ldlsolvers;
5
6//flatten direct KKT module structure
7mod datamaps;
8mod directldlkktsolver;
9mod kkt_assembly;
10use datamaps::*;
11pub use directldlkktsolver::*;
12use kkt_assembly::*;
13
14pub trait DirectLDLSolverReqs {
15    fn required_matrix_shape() -> MatrixTriangle
16    where
17        Self: Sized;
18}
19pub trait DirectLDLSolver<T: FloatT>: DirectLDLSolverReqs + HasLinearSolverInfo {
20    fn update_values(&mut self, index: &[usize], values: &[T]);
21    fn scale_values(&mut self, index: &[usize], scale: T);
22    #[allow(dead_code)] //PJG: could be removed.
23    fn offset_values(&mut self, index: &[usize], offset: T, signs: &[i8]);
24    fn solve(&mut self, kkt: &CscMatrix<T>, x: &mut [T], b: &mut [T]);
25    fn refactor(&mut self, kkt: &CscMatrix<T>) -> bool;
26}