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 <[email protected]>
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

+23
View File
@@ -150,6 +150,29 @@ when confined. A continuous
nodal pressure (`DofKind::P`, Taylor–Hood) needs a symmetric indefinite factorization and is
planned.
## Symmetric indefinite factorization (LDLᵀ)
`fieldcraft_solver::ldlt` factors P A Pᵀ = L D Lᵀ (L unit lower triangular, D with 1 × 1 and
2 × 2 pivots) on the Cholesky factor's symbolic factorization: the same nested dissection
ordering, elimination tree, supernodes, fill, factor-size cap and parallel subtree tasks, so it
is deterministic on any number of threads. Pivots are chosen by the bounded Bunch–Kaufman (rook)
search of Ashcraft, Grimes & Lewis (1998) among the columns of the supernode being factored
(Schenk & Gärtner's supernode Bunch–Kaufman, 2006): an interchange inside a supernode changes no
row structure, so nothing is delayed and the static structure holds. Its limits, stated in the
module: L's entries below the supernode are not bounded by the search (`solve_refined` adds
iterative refinement), and a column whose supernode offers no pivot above round-off is a located
`Singular` error (a matrix singular at that column, or a zero diagonal coupled only to later
supernodes, which no FieldCraft system has: hybrid pressures are condensed per element).
The factor reports its **inertia** (positive and negative eigenvalue counts, Sylvester's law):
a 2 × 2 pivot of the search has a negative determinant (one of each). `Symmetric::new(a, cap,
kind)` picks Cholesky (`Definite`, the default everywhere a matrix is positive definite, so
linear results are bit for bit unchanged), LDLᵀ (`Indefinite`), or Cholesky with LDLᵀ when the
matrix turns out not to be positive definite (`Auto`, one symbolic factorization for both).
On a hex8 stiffness pattern of 140 000 equations (1.5 · 10⁸ entries) the LDLᵀ factor costs 1.1
times the Cholesky factor, and 1.2 times on a shift with 10 600 negative eigenvalues and 7 700
2 × 2 pivots (`ldlt::tests::speed_against_cholesky`).
## Nonlinear static analysis (finite strain)
A step `{"type": "nonlinear_static", …}` (`Procedure::NonlinearStatic`, solved by
+18
View File
@@ -1228,3 +1228,21 @@ update are written from (cited again in the module docs):
- Thermal strain by the multiplicative split F = F_m F_θ: V. A. Lubarda, *Constitutive
theories based on the multiplicative decomposition of deformation gradient: thermoelasticity,
elastoplasticity, and biomechanics*, Appl. Mech. Rev. 57(2):95–108, 2004.
## Part P: Symmetric indefinite factorization, linear buckling and arc-length, as implemented
- Symmetric indefinite pivoting: J. R. Bunch, L. Kaufman, *Some stable methods for calculating
inertia and solving symmetric linear systems*, Math. Comp. 31(137):163–179, 1977; the bounded
(rook) search, C. Ashcraft, R. G. Grimes, J. G. Lewis, *Accurate symmetric indefinite linear
equation solvers*, SIAM J. Matrix Anal. Appl. 20(2):513–561, 1998; the panel's partial
factorization of LAPACK's `dsytrf`, E. Anderson et al., *LAPACK Users' Guide*, 3rd ed., SIAM
1999.
- Pivoting within supernodes on a static structure: O. Schenk, K. Gärtner, *On fast
factorization pivoting methods for sparse symmetric indefinite systems*, Electron. Trans.
Numer. Anal. 23:158–179, 2006. Delayed pivots (the multifrontal alternative, not used: it
changes the structure as it goes): I. S. Duff, J. K. Reid, *The multifrontal solution of
indefinite sparse symmetric linear equations*, ACM TOMS 9(3):302–325, 1983; J. W. H. Liu, *The
multifrontal method for sparse matrix solution: theory and practice*, SIAM Review
34(1):82–109, 1992.
- Iterative refinement: N. J. Higham, *Accuracy and Stability of Numerical Algorithms*, 2nd ed.,
SIAM 2002, §12.2.