#include "IpIterativeSolverTerminationTester.hpp"
#include "IpTripletHelper.hpp"
namespace Ipopt
{
#if IPOPT_VERBOSITY > 0
static const Index dbg_verbosity = 0;
#endif
void IterativeSolverTerminationTester::GetVectors(
Index ndim,
const Number* array,
SmartPtr<const Vector>& comp_x,
SmartPtr<const Vector>& comp_s,
SmartPtr<const Vector>& comp_c,
SmartPtr<const Vector>& comp_d
)
{
DBG_ASSERT(ndim == IpData().curr()->x()->Dim() + IpData().curr()->s()->Dim() +
IpData().curr()->y_c()->Dim() + IpData().curr()->y_d()->Dim());
(void)ndim;
SmartPtr<Vector> sol_x = IpData().curr()->x()->MakeNew();
Index dim = sol_x->Dim();
TripletHelper::PutValuesInVector(dim, array, *sol_x);
array += dim;
comp_x = ConstPtr(sol_x);
SmartPtr<Vector> sol_s = IpData().curr()->s()->MakeNew();
dim = sol_s->Dim();
TripletHelper::PutValuesInVector(dim, array, *sol_s);
array += dim;
comp_s = ConstPtr(sol_s);
SmartPtr<Vector> sol_c = IpData().curr()->y_c()->MakeNew();
dim = sol_c->Dim();
TripletHelper::PutValuesInVector(dim, array, *sol_c);
array += dim;
comp_c = ConstPtr(sol_c);
SmartPtr<Vector> sol_d = IpData().curr()->y_d()->MakeNew();
dim = sol_d->Dim();
TripletHelper::PutValuesInVector(dim, array, *sol_d);
comp_d = ConstPtr(sol_d);
}
}