00001 // Copyright (C) 2004, 2006 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpTSymScalingMethod.hpp 759 2006-07-07 03:07:08Z andreasw $ 00006 // 00007 // Authors: Carl Laird, Andreas Waechter IBM 2004-03-17 00008 00009 #ifndef __IPTSYMSCALINGMETHOD_HPP__ 00010 #define __IPTSYMSCALINGMETHOD_HPP__ 00011 00012 #include "IpUtils.hpp" 00013 #include "IpAlgStrategy.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00018 DECLARE_STD_EXCEPTION(ERROR_IN_LINEAR_SCALING_METHOD); 00019 00023 class TSymScalingMethod: public AlgorithmStrategyObject 00024 { 00025 public: 00028 TSymScalingMethod() 00029 {} 00030 00031 ~TSymScalingMethod() 00032 {} 00034 00036 virtual bool InitializeImpl(const OptionsList& options, 00037 const std::string& prefix) = 0; 00038 00041 virtual bool ComputeSymTScalingFactors(Index n, 00042 Index nnz, 00043 const Index* airn, 00044 const Index* ajcn, 00045 const double* a, 00046 double* scaling_factors) = 0; 00047 private: 00055 TSymScalingMethod(const TSymScalingMethod&); 00056 00058 void operator=(const TSymScalingMethod&); 00059 }; 00060 00061 } // namespace Ipopt 00062 00063 #endif