Skip to main content

pounce_algorithm/eq_mult/
trait.rs

1//! `EqMultCalculator` trait — port of `IpEqMultCalculator.hpp`.
2
3use crate::ipopt_cq::IpoptCqHandle;
4use crate::ipopt_data::IpoptDataHandle;
5use crate::ipopt_nlp::IpoptNlp;
6use crate::kkt::aug_system_solver::AugSystemSolver;
7use pounce_linalg::Vector;
8use std::cell::RefCell;
9use std::rc::Rc;
10
11pub trait EqMultCalculator {
12    /// Compute initial equality multipliers `y_c`, `y_d`. Mirrors
13    /// `Ipopt::EqMultiplierCalculator::CalculateMultipliers`. Returns
14    /// `false` if the underlying linear solve fails.
15    fn calculate_y_eq(
16        &mut self,
17        data: &IpoptDataHandle,
18        cq: &IpoptCqHandle,
19        nlp: &Rc<RefCell<dyn IpoptNlp>>,
20        aug_solver: &mut dyn AugSystemSolver,
21        y_c: &mut dyn Vector,
22        y_d: &mut dyn Vector,
23    ) -> bool;
24}