00001 // Copyright (C) 2008 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpInexactData.hpp 1390 2009-01-06 16:55:52Z andreasw $ 00006 // 00007 // Authors: Andreas Waechter IBM 2008-08-31 00008 00009 #ifndef __IPINEXACTDATA_HPP__ 00010 #define __IPINEXACTDATA_HPP__ 00011 00012 #include "IpIpoptData.hpp" 00013 00014 namespace Ipopt 00015 { 00016 00019 class InexactData : public IpoptAdditionalData 00020 { 00021 public: 00025 InexactData(); 00026 00028 ~InexactData(); 00030 00036 bool Initialize(const Journalist& jnlst, 00037 const OptionsList& options, 00038 const std::string& prefix); 00039 00041 bool InitializeDataStructures(); 00042 00046 void AcceptTrialPoint(); 00048 00051 void set_normal_x(SmartPtr<Vector>& normal_x) 00052 { 00053 normal_x_ = ConstPtr(normal_x); 00054 normal_x = NULL; 00055 } 00056 void set_normal_s(SmartPtr<Vector>& normal_s) 00057 { 00058 normal_s_ = ConstPtr(normal_s); 00059 normal_s = NULL; 00060 } 00061 SmartPtr<const Vector> normal_x() 00062 { 00063 return normal_x_; 00064 } 00065 SmartPtr<const Vector> normal_s() 00066 { 00067 return normal_s_; 00068 } 00070 00073 void set_tangential_x(SmartPtr<Vector>& tangential_x) 00074 { 00075 tangential_x_ = ConstPtr(tangential_x); 00076 tangential_x = NULL; 00077 } 00078 void set_tangential_s(SmartPtr<Vector>& tangential_s) 00079 { 00080 tangential_s_ = ConstPtr(tangential_s); 00081 tangential_s = NULL; 00082 } 00083 SmartPtr<const Vector> tangential_x() 00084 { 00085 return tangential_x_; 00086 } 00087 SmartPtr<const Vector> tangential_s() 00088 { 00089 return tangential_s_; 00090 } 00092 00097 void set_full_step_accepted(bool full_step_accepted) 00098 { 00099 full_step_accepted_ = full_step_accepted; 00100 } 00101 bool full_step_accepted() 00102 { 00103 return full_step_accepted_; 00104 } 00106 00109 void set_curr_nu(Number nu) 00110 { 00111 curr_nu_ = nu; 00112 } 00113 Number curr_nu() 00114 { 00115 return curr_nu_; 00116 } 00118 00119 private: 00129 InexactData(const InexactData&); 00130 00132 void operator=(const InexactData&); 00134 00137 SmartPtr<const Vector> normal_x_; 00138 SmartPtr<const Vector> normal_s_; 00140 00143 SmartPtr<const Vector> tangential_x_; 00144 SmartPtr<const Vector> tangential_s_; 00146 00148 bool full_step_accepted_; 00149 00151 Number curr_nu_; 00152 }; 00153 00154 } // namespace Ipopt 00155 00156 #endif