use crate::ipopt_cq::IpoptCqHandle;
use crate::ipopt_data::IpoptDataHandle;
use pounce_common::types::{Index, Number};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ConvergenceStatus {
Continue,
Converged,
ConvergedToAcceptable,
MaxIterExceeded,
CpuTimeExceeded,
WallTimeExceeded,
LocallyInfeasible,
Failed,
}
pub trait ConvCheck {
fn check_convergence(&mut self, nlp_err: Number, iter_count: Index) -> ConvergenceStatus;
fn check_convergence_with_state(
&mut self,
nlp_err: Number,
iter_count: Index,
_data: &IpoptDataHandle,
_cq: &IpoptCqHandle,
) -> ConvergenceStatus {
self.check_convergence(nlp_err, iter_count)
}
fn current_is_acceptable(&self, _nlp_err: Number) -> bool {
false
}
fn current_is_acceptable_with_state(
&self,
nlp_err: Number,
_data: &IpoptDataHandle,
_cq: &IpoptCqHandle,
) -> bool {
self.current_is_acceptable(nlp_err)
}
fn set_curr_acceptable_obj(&mut self, _obj: Number) {}
fn tol_or_default(&self) -> Number {
1e-8
}
}