Expand description
PdSensBacksolver — SensBacksolver adapter over the converged
PdFullSpaceSolver from pounce-algorithm.
This is the Phase B.2 piece tracked in
pounce#16: it lets
pounce-sensitivity drive backsolves against the real converged
KKT factor, replacing the synthetic crate::DenseLuBacksolver
used by Phase B.1 unit tests.
§Use
- Register an
on_convergedcallback onIpoptApplicationviapounce_algorithm::application::IpoptApplication::set_on_converged. - Inside the callback, build a
PdSensBacksolverfrom the four handles passed in (data,cq,nlp,&mut pd_solver). - Hand it to
crate::SensApplication/ aSensStepCalc/crate::compute_reduced_hessianlike any otherSensBacksolver.
Upstream SensSimpleBacksolver
(ref/Ipopt/contrib/sIPOPT/src/SensSimpleBacksolver.cpp)
is the analogous wrapper around IpoptCalculatedQuantities +
PDSystemSolver upstream.
§Flat-slice ↔ IteratesVector mapping
The full primal-dual state of pounce’s IPM is the eight-block
compound (x, s, λ_c, λ_d, z_l, z_u, v_l, v_u) (see
pounce_algorithm::iterates_vector::IteratesVector). This
adapter packs / unpacks the flat slices that
crate::SensBacksolver takes as the concatenation
x || s || λ_c || λ_d || z_l || z_u || v_l || v_u, mirroring
upstream’s CompoundVector layout (IpCompoundVector.hpp).
§Reference
Pirnay, H.; López-Negrete, R.; Biegler, L. T. (2012). Optimal sensitivity based on IPOPT. Mathematical Programming Computation, 4(4), 307–331. DOI: 10.1007/s12532-012-0043-2. Verified via Crossref on 2026-05-13.
Structs§
- PdSens
Backsolver - Adapter from
PdFullSpaceSolvertoSensBacksolver. Holds owning clones of the four pieces of the algorithm’s converged state, plus the 8-block iterate template used to allocate fresh RHS / LHS vectors.