Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SensStepCalc.hpp
Go to the documentation of this file.
1 // Copyright 2009, 2011 Hans Pirnay
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Date : 2009-05-14
6 
7 #ifndef __ASSENSSTEPCALC_HPP__
8 #define __ASSENSSTEPCALC_HPP__
9 
10 #include "IpAlgStrategy.hpp"
11 #include "SensSchurDriver.hpp"
12 
13 
14 namespace Ipopt
15 {
17  class DenseVector;
18  class IteratesVector;
19 
21  {
22  /* This is the interface for the classes that perform the actual step. */
23 
24  public:
26  :
27  driver_(NULL),
28  do_boundcheck_(false)
29  {
30  }
31 
33  {
34  }
35 
36  virtual bool InitializeImpl(const OptionsList& options,
37  const std::string& prefix)
38  {
39  options.GetBoolValue("sens_boundcheck", do_boundcheck_, prefix);
40  return true;
41  }
42 
43  bool Do_Boundcheck() const
44  {
45  return do_boundcheck_;
46  }
47 
49  {
50  DBG_ASSERT(IsValid(driver));
51  driver_ = driver;
52  if (IsValid(driver_->pcalc_nonconst())) {
53  driver_->pcalc_nonconst()->reset_data_A();
54  // when the schurdriver is set, the data in the pcalculator has to be reset to its data?
55  }
56  }
57 
58  SmartPtr<SchurDriver> Driver() // this should be const or protected
59  {
61  return driver_;
62  }
63 
66  virtual bool Step(DenseVector& delta_u, IteratesVector& sol) =0;
67 
70 
71  private:
74  };
75 }
76 
77 #endif
bool IsValid(const SmartPtr< U > &smart_ptr)
Definition: IpSmartPtr.hpp:579
Specialized CompoundVector class specifically for the algorithm iterates.
This is the base class for all algorithm strategy objects.
virtual bool GetBoolValue(const std::string &tag, bool &value, const std::string &prefix) const
Dense Vector Implementation.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
This class stores a list of user set options.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
virtual bool Step(DenseVector &delta_u, IteratesVector &sol)=0
This is the main algorithmic function of this class; It calculates a step using its SchurDriver...
void SetSchurDriver(SmartPtr< SchurDriver > driver)
virtual SmartPtr< IteratesVector > GetSensitivityVector()=0
return the sensitivity vector
#define DBG_ASSERT(test)
Definition: IpDebug.hpp:38
SmartPtr< SchurDriver > Driver()
SmartPtr< SchurDriver > driver_