Ipopt  trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
IpInexactNewtonNormal.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2008, 2011 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Eclipse Public License.
00004 //
00005 // $Id$
00006 //
00007 // Authors:  Andreas Waechter            IBM    2008-09-05
00008 
00009 #ifndef __IPINEXACTNEWTONNORMAL_HPP__
00010 #define __IPINEXACTNEWTONNORMAL_HPP__
00011 
00012 #include "IpAlgStrategy.hpp"
00013 #include "IpAugSystemSolver.hpp"
00014 #include "IpInexactCq.hpp"
00015 
00016 namespace Ipopt
00017 {
00021   class InexactNewtonNormalStep : public AlgorithmStrategyObject
00022   {
00023   public:
00027     InexactNewtonNormalStep(SmartPtr<AugSystemSolver> aug_solver);
00028 
00030     virtual ~InexactNewtonNormalStep();
00032 
00034     virtual bool InitializeImpl(const OptionsList& options,
00035                                 const std::string& prefix);
00036 
00042     virtual bool ComputeNewtonNormalStep(Vector& newton_x, Vector& newton_s);
00043 
00046     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00048 
00049   protected:
00051     InexactData& InexData()
00052     {
00053       InexactData& inexact_data =
00054         static_cast<InexactData&>(IpData().AdditionalData());
00055       DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
00056       return inexact_data;
00057     }
00058 
00060     InexactCq& InexCq()
00061     {
00062       InexactCq& inexact_cq =
00063         static_cast<InexactCq&>(IpCq().AdditionalCq());
00064       DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
00065       return inexact_cq;
00066     }
00067 
00068   private:
00078     InexactNewtonNormalStep();
00079 
00081     InexactNewtonNormalStep(const InexactNewtonNormalStep&);
00082 
00084     void operator=(const InexactNewtonNormalStep&);
00086 
00088     SmartPtr<AugSystemSolver> aug_solver_;
00089   };
00090 
00091 } // namespace Ipopt
00092 
00093 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines