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: IpTSymDependencyDetector.hpp 959 2007-04-19 22:45:03Z andreasw $ 00006 // 00007 // Authors: Andreas Waechter IBM 2007-04-18 00008 00009 #ifndef __IPTSYMDEPENDENCYDETECTOR_HPP__ 00010 #define __IPTSYMDEPENDENCYDETECTOR_HPP__ 00011 00012 #include "IpTDependencyDetector.hpp" 00013 #include "IpTSymLinearSolver.hpp" 00014 00015 namespace Ipopt 00016 { 00017 00020 class TSymDependencyDetector: public TDependencyDetector 00021 { 00022 public: 00025 TSymDependencyDetector(TSymLinearSolver& tsym_linear_solver); 00026 00027 virtual ~TSymDependencyDetector() 00028 {} 00030 00032 virtual bool InitializeImpl(const OptionsList& options, 00033 const std::string& prefix); 00034 00043 virtual bool DetermineDependentRows(Index n_rows, Index n_cols, 00044 Index n_jac_nz, 00045 Number* jac_c_vals, 00046 Index* jac_c_iRow, 00047 Index* jac_c_jCol, 00048 std::list<Index>& c_deps); 00049 00052 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions); 00053 00054 private: 00064 TSymDependencyDetector(); 00065 00067 TSymDependencyDetector(const TSymDependencyDetector&); 00068 00070 void operator=(const TSymDependencyDetector&); 00072 00073 SmartPtr<const Journalist> jnlst_; 00074 00075 SmartPtr<TSymLinearSolver> tsym_linear_solver_; 00076 }; 00077 00078 } // namespace Ipopt 00079 00080 #endif