00001 // Copyright 2009, 2011 Hans Pirnay 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // Date : 2009-05-16 00006 00007 #ifndef __ASSTDSTEPCALC_HPP__ 00008 #define __ASSTDSTEPCALC_HPP__ 00009 00010 #include "SensBacksolver.hpp" 00011 #include "SensStepCalc.hpp" 00012 #include <vector> 00013 00014 00015 namespace Ipopt 00016 { 00017 00018 class StdStepCalculator : public SensitivityStepCalculator 00019 { 00020 public: 00021 StdStepCalculator(SmartPtr<SchurData> ift_data, 00022 SmartPtr<SensBacksolver> backsolver); 00023 00024 virtual ~StdStepCalculator(); 00025 00026 virtual bool InitializeImpl(const OptionsList& options, 00027 const std::string& prefix); 00028 00031 virtual bool Step(DenseVector& delta_u, IteratesVector& sol); 00032 00033 bool BoundCheck(IteratesVector& sol, 00034 std::vector<Index>& x_bound_violations_idx, 00035 std::vector<Number>& x_bound_violations_du); 00036 00037 private: 00038 SmartPtr<SchurData> ift_data_; 00039 SmartPtr<SensBacksolver> backsolver_; 00040 Number bound_eps_; 00041 bool kkt_residuals_; 00042 }; 00043 } 00044 00045 #endif