00001 // Copyright 2009, 2010 Hans Pirnay 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // Date : 2009-08-01 00006 00007 #ifndef __ASREDUCEDHESSIANCALCULATOR_HPP__ 00008 #define __ASREDUCEDHESSIANCALCULATOR_HPP__ 00009 00010 #include "IpAlgStrategy.hpp" 00011 #include "AsSchurData.hpp" 00012 #include "AsPCalculator.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 00035 SmartPtr<SchurData> hess_data_; 00036 SmartPtr<PCalculator> pcalc_; 00037 }; 00038 00039 } 00040 00041 #endif