00001 // Copyright 2009, 2011 Hans Pirnay 00002 // All Rights Reserved. 00003 // This code is published under the Eclipse Public License. 00004 // 00005 // Date : 2009-08-01 00006 00007 #ifndef __ASREDUCEDHESSIANCALCULATOR_HPP__ 00008 #define __ASREDUCEDHESSIANCALCULATOR_HPP__ 00009 00010 #include "IpAlgStrategy.hpp" 00011 #include "SensSchurData.hpp" 00012 #include "SensPCalculator.hpp" 00013 00014 namespace Ipopt 00015 { 00016 00017 class ReducedHessianCalculator : public AlgorithmStrategyObject 00018 { 00021 public: 00022 ReducedHessianCalculator(SmartPtr<SchurData> hess_data, 00023 SmartPtr<PCalculator> pcalc); 00024 00025 virtual ~ReducedHessianCalculator(); 00026 00027 virtual bool InitializeImpl(const OptionsList& options, 00028 const std::string& prefix); 00029 00030 /* This function computes the unscaled reduced hessian matrix */ 00031 virtual bool ComputeReducedHessian(); 00032 00033 private: 00034 00036 SmartPtr<SchurData> hess_data_; 00037 00039 SmartPtr<PCalculator> pcalc_; 00040 00042 bool compute_eigenvalues_; 00043 }; 00044 00045 } 00046 00047 #endif