pub struct PdFullSpaceSolver {
pub min_refinement_steps: Index,
pub max_refinement_steps: Index,
pub residual_ratio_max: Number,
pub residual_ratio_singular: Number,
pub residual_improvement_factor: Number,
pub neg_curv_test_tol: Number,
/* private fields */
}Fields§
§min_refinement_steps: Index§max_refinement_steps: Index§residual_ratio_max: Number§residual_ratio_singular: Number§residual_improvement_factor: Number§neg_curv_test_tol: NumberNegative-curvature test tolerance (neg_curv_test_tol_). Zero
disables the heuristic; matches upstream’s RegisterOptions
default. The non-zero branch is not exercised in v1.0.
Implementations§
Source§impl PdFullSpaceSolver
impl PdFullSpaceSolver
pub fn new( aug_solver: Box<dyn AugSystemSolver>, perturb: Rc<RefCell<PdPerturbationHandler>>, ) -> Self
pub fn aug_solver(&self) -> &dyn AugSystemSolver
pub fn aug_solver_mut(&mut self) -> &mut dyn AugSystemSolver
Sourcepub fn wrap_aug_solver<F>(&mut self, wrap: F)
pub fn wrap_aug_solver<F>(&mut self, wrap: F)
Replace the underlying AugSystemSolver by passing the
existing one through the supplied wrapper closure. Used by the
restoration phase to decorate the inner StdAugSystemSolver
with AugRestoSystemSolver (which performs the 8-block →
4-block Schur reduction before delegating).
Sourcepub fn solve(
&mut self,
data: &IpoptDataHandle,
cq: &IpoptCqHandle,
nlp: &Rc<RefCell<dyn IpoptNlp>>,
alpha: Number,
beta: Number,
rhs: &IteratesVector,
res: &mut IteratesVectorMut,
allow_inexact: bool,
improve_solution: bool,
) -> bool
pub fn solve( &mut self, data: &IpoptDataHandle, cq: &IpoptCqHandle, nlp: &Rc<RefCell<dyn IpoptNlp>>, alpha: Number, beta: Number, rhs: &IteratesVector, res: &mut IteratesVectorMut, allow_inexact: bool, improve_solution: bool, ) -> bool
Solve the full PD system. res = α · M⁻¹ · rhs + β · res_in,
matching IpPDFullSpaceSolver::Solve. Returns true on
success. The iterate fields used to assemble the system are
pulled from data (W, curr) and cq (jacobians, slacks,
sigmas).
Trait Implementations§
Source§impl PdSystemSolver for PdFullSpaceSolver
impl PdSystemSolver for PdFullSpaceSolver
Source§fn solve_status(&self) -> ESymSolverStatus
fn solve_status(&self) -> ESymSolverStatus
Run the configured iterative-refinement loop on the 8-block
system. Phase 6 placeholder for the full-signature method;
super::pd_full_space_solver::PdFullSpaceSolver::solve will
implement it once IteratesVector is wired through.Auto Trait Implementations§
impl Freeze for PdFullSpaceSolver
impl !RefUnwindSafe for PdFullSpaceSolver
impl !Send for PdFullSpaceSolver
impl !Sync for PdFullSpaceSolver
impl Unpin for PdFullSpaceSolver
impl UnsafeUnpin for PdFullSpaceSolver
impl !UnwindSafe for PdFullSpaceSolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more