00001 // Copyright (C) 2007 International Business Machines and others. 00002 // All Rights Reserved. 00003 // This code is published under the Common Public License. 00004 // 00005 // $Id: IpTDependencyDetector.hpp 959 2007-04-19 22:45:03Z andreasw $ 00006 // 00007 // Authors: Andreas Waechter IBM 2007-04-17 00008 00009 #ifndef __IPTDEPENDENCYDETECTOR_HPP__ 00010 #define __IPTDEPENDENCYDETECTOR_HPP__ 00011 00012 #include "IpAlgStrategy.hpp" 00013 #include <list> 00014 00015 namespace Ipopt 00016 { 00017 00020 class TDependencyDetector: public AlgorithmStrategyObject 00021 { 00022 public: 00025 TDependencyDetector() 00026 {} 00027 00028 virtual ~TDependencyDetector() 00029 {} 00031 00033 virtual bool InitializeImpl(const OptionsList& options, 00034 const std::string& prefix) = 0; 00035 00044 virtual bool DetermineDependentRows(Index n_rows, Index n_cols, 00045 Index n_jac_nz, 00046 Number* jac_c_vals, 00047 Index* jac_c_iRow, 00048 Index* jac_c_jCol, 00049 std::list<Index>& c_deps) = 0; 00050 00051 private: 00061 TDependencyDetector(const TDependencyDetector&); 00062 00064 void operator=(const TDependencyDetector&); 00066 00067 }; 00068 00069 } // namespace Ipopt 00070 00071 #endif