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-06 00006 00007 #ifndef __SENSALGORITHM_HPP__ 00008 #define __SENSALGORITHM_HPP__ 00009 00010 #include "IpAlgStrategy.hpp" 00011 #include "SensStepCalc.hpp" 00012 #include "SensMeasurement.hpp" 00013 #include "SensSchurDriver.hpp" 00014 #include "SensUtils.hpp" 00015 00016 namespace Ipopt 00017 { 00018 00019 class SensAlgorithm : public AlgorithmStrategyObject 00020 { 00024 public: 00025 00026 SensAlgorithm(std::vector< SmartPtr<SchurDriver> >& driver_vec, 00027 SmartPtr<SensitivityStepCalculator> sens_step_calc, 00028 SmartPtr<Measurement> measurement, 00029 Index n_sens_steps); 00030 00031 virtual ~SensAlgorithm(); 00032 00033 virtual bool InitializeImpl(const OptionsList& options, 00034 const std::string& prefix); 00035 00039 SensAlgorithmExitStatus Run(); 00040 00041 private: 00042 00043 std::vector< SmartPtr<SchurDriver> > driver_vec_; 00044 SmartPtr<SensitivityStepCalculator> sens_step_calc_; 00045 SmartPtr<Measurement> measurement_; 00046 Index n_sens_steps_; // I think it is useful to state this number explicitly in the constructor and here. 00047 00048 }; 00049 } 00050 00051 #endif