solver: symmetric indefinite LDLᵀ factorization with inertia

A supernodal LDLᵀ on the Cholesky factor's symbolic factorization (ordering, supernodes, fill,
cap and parallel subtree tasks shared through a Symbolic and a generic driver; the Cholesky
numerics are unchanged bit for bit). Pivots by the bounded Bunch–Kaufman (rook) search of
Ashcraft, Grimes & Lewis among each supernode's columns (Schenk & Gärtner's supernode
Bunch–Kaufman), 1 × 1 and 2 × 2, right-looking panels whose trailing update reuses the tiled
Cholesky kernels with L D formed on the fly. Reports the inertia; a column without a pivot above
round-off is a located Singular error; NaN is refused. Symmetric::new picks Cholesky, LDLᵀ, or
Cholesky with an LDLᵀ fallback; solve_refined adds iterative refinement. 1.1–1.2× the Cholesky
time on a 140 000-equation hex8 pattern.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
jyvikoandClaude Opus 5.5 authored and Irakli Kourtis committed 2026-10-14 12:42:12 -04:00
1 parent 11a69d8171
commit 908dae180b
7 files changed
+1176 -75

No files matched your search

+4 -1
View File
@@ -13,7 +13,9 @@
//! 4. **Solution** ([`cholesky`]): sparse Cholesky; reactions K u − f at the prescribed degrees
//! of freedom; stresses at the integration points, extrapolated and averaged at the nodes, and
//! von Mises. Frequency analysis ([`eigen`]) runs shift-invert block Lanczos on the same
//! kind of factorization.
//! kind of factorization. Indefinite matrices (tangents past a limit point, strained mixed
//! elements, shifted operators) are factored by the symmetric indefinite LDLᵀ ([`ldlt`]) on
//! the same symbolic factorization, which also counts their negative eigenvalues.
//!
//! Element matrices and stresses, the factorization's subtrees and dense tiles, the Lanczos
//! block solves and matrix products run on threads ([`fieldcraft_parallel`]), but every number
@@ -31,6 +33,7 @@ pub mod constraints;
pub mod discrete;
pub mod eigen;
pub mod heat;
pub mod ldlt;
pub mod nonlinear;
pub mod ordering;
pub mod sparse;