Skip to main content

Module algorithm_backsolver

Module algorithm_backsolver 

Source
Expand description

PdSensBacksolverSensBacksolver 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

  1. Register an on_converged callback on IpoptApplication via pounce_algorithm::application::IpoptApplication::set_on_converged.
  2. Inside the callback, build a PdSensBacksolver from the four handles passed in (data, cq, nlp, &mut pd_solver).
  3. Hand it to crate::SensApplication / a SensStepCalc / crate::compute_reduced_hessian like any other SensBacksolver.

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§

PdSensBacksolver
Adapter from PdFullSpaceSolver to SensBacksolver. 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.