00001 // Copyright (C) 2009 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpMc19TSymScalingMethod.hpp 699 2006-04-05 21:05:18Z andreasw $ 00006 // 00007 // Authors: Andreas Waechter, Frank E. Curtis IBM 2009-06-12 00008 // (based on IpMc19TSymScalingMethod.hpp rev 699) 00009 00010 #ifndef __IPINEXACTTSYMSCALINGMETHOD_HPP__ 00011 #define __IPINEXACTTSYMSCLAINGMETHOD_HPP__ 00012 00013 #include "IpUtils.hpp" 00014 #include "IpTSymScalingMethod.hpp" 00015 #include "IpInexactCq.hpp" 00016 00017 namespace Ipopt 00018 { 00019 00024 class InexactTSymScalingMethod: public TSymScalingMethod 00025 { 00026 public: 00029 InexactTSymScalingMethod() 00030 {} 00031 00032 virtual ~InexactTSymScalingMethod() 00033 {} 00035 00037 virtual bool InitializeImpl(const OptionsList& options, 00038 const std::string& prefix); 00039 00042 virtual bool ComputeSymTScalingFactors(Index n, 00043 Index nnz, 00044 const ipfint* airn, 00045 const ipfint* ajcn, 00046 const double* a, 00047 double* scaling_factors); 00048 private: 00056 InexactTSymScalingMethod(const InexactTSymScalingMethod&); 00057 00059 void operator=(const InexactTSymScalingMethod&); 00060 00062 InexactCq& InexCq() 00063 { 00064 InexactCq& inexact_cq = 00065 static_cast<InexactCq&>(IpCq().AdditionalCq()); 00066 DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq())); 00067 return inexact_cq; 00068 } 00069 00070 }; 00071 00072 00073 } // namespace Ipopt 00074 00075 #endif