Expand description
SchurData trait surface and the IndexSchurData flavor.
Direct port of upstream
SensSchurData.hpp
(interface) and
SensIndexSchurData.{hpp,cpp}
(the index-only specialization).
§What SchurData represents
SchurData is the matrix B in the augmented system
⎡ K A ⎤
⎣ B 0 ⎦used by the sIPOPT step calculation (Pirnay, López-Negrete & Biegler 2012,
§2, eq. 4). K is the converged KKT matrix from the original IPM solve;
A and B carry the parameter-perturbation rows. The trait is the
minimum surface every backend needs to expose so the
PCalculator / SchurDriver family can stay matrix-shape-agnostic
(SensSchurData.hpp:17-25).
§IndexSchurData
Specialization for parameter rows whose only non-zero entries are
±1 (SensIndexSchurData.hpp:15-19).
Most parametric / reduced-Hessian use cases fit this shape — the
parameter just picks out a subset of primal/dual variables — so the
±1 sparsification is what production sIPOPT runs on. Pounce’s
port stores parallel Vec<i32> arrays of indices and signs, same
as upstream’s idx_ / val_
(SensIndexSchurData.hpp:127-128).
Structs§
- Index
Schur Data - Specialization for
Bmatrices whose non-zero entries are ±1 (the parametric / reduced-Hessian common case). Storage is two parallel arrays mirroring upstream’sidx_andval_(SensIndexSchurData.hpp:127-128).
Enums§
- Schur
Data Error - Failure modes returned by
SchurDataread/write entry points. Pounce returns these asErr(_)where upstream’s debug asserts wouldDBG_ASSERT.
Traits§
- Schur
Data - Minimum surface for any matrix that lives in the augmented sIPOPT
system’s
A/Bslots. The numerical drivers in this crate (PCalculator,SchurDriver,SensStepCalc) consumeSchurDataobjects and never touch the storage shape directly.