Ipopt  3.11.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpCGPerturbationHandler.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2008 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpCGPerturbationHandler.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2005-08-04
8 
9 #ifndef __IPCGPERTURBATIONHANDLER_HPP__
10 #define __IPCGPERTURBATIONHANDLER_HPP__
11 
13 #include "IpCGPenaltyCq.hpp"
14 
15 namespace Ipopt
16 {
17 
26  {
27  public:
34  {}
36 
37  /* overloaded from AlgorithmStrategyObject */
38  virtual bool InitializeImpl(const OptionsList& options,
39  const std::string& prefix);
40 
47  bool ConsiderNewSystem(Number& delta_x, Number& delta_s,
48  Number& delta_c, Number& delta_d);
49 
54  bool PerturbForSingularity(Number& delta_x, Number& delta_s,
55  Number& delta_c, Number& delta_d);
56 
61  bool PerturbForWrongInertia(Number& delta_x, Number& delta_s,
62  Number& delta_c, Number& delta_d);
63 
66  void CurrentPerturbation(Number& delta_x, Number& delta_s,
67  Number& delta_c, Number& delta_d);
68 
71  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
73 
74  private:
85 
87  void operator=(const CGPerturbationHandler&);
89 
92  {
93  CGPenaltyData& cg_pen_data =
94  static_cast<CGPenaltyData&>(IpData().AdditionalData());
95  DBG_ASSERT(dynamic_cast<CGPenaltyData*>(&IpData().AdditionalData()));
96  return cg_pen_data;
97  }
98 
101  {
102  CGPenaltyCq& cg_pen_cq =
103  static_cast<CGPenaltyCq&>(IpCq().AdditionalCq());
104  DBG_ASSERT(dynamic_cast<CGPenaltyCq*>(&IpCq().AdditionalCq()));
105  return cg_pen_cq;
106  }
107 
119 
132 
136 
141  {
145  };
146 
150 
154 
159 
162  {
168  };
169 
173 
202 
207 
213  bool get_deltas_for_wrong_inertia(Number& delta_x, Number& delta_s,
214  Number& delta_c, Number& delta_d);
215 
219  void finalize_test();
221  Number delta_cd();
223 
224  };
225 
226 } // namespace Ipopt
227 
228 #endif