IpTSymLinearSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2007 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpTSymLinearSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-03-17
8 
9 #ifndef __IPTSYMLINEARSOLVER_HPP__
10 #define __IPTSYMLINEATSOLVER_HPP__
11 
12 #include "IpSymLinearSolver.hpp"
14 #include "IpTSymScalingMethod.hpp"
15 #include "IpSymMatrix.hpp"
17 #include <vector>
18 #include <list>
19 
20 namespace Ipopt
21 {
22 
34  {
35  public:
43  SmartPtr<TSymScalingMethod> scaling_method);
44 
46  virtual ~TSymLinearSolver();
48 
50  bool InitializeImpl(const OptionsList& options,
51  const std::string& prefix);
52 
58  virtual ESymSolverStatus MultiSolve(const SymMatrix &A,
59  std::vector<SmartPtr<const Vector> >& rhsV,
60  std::vector<SmartPtr<Vector> >& solV,
61  bool check_NegEVals,
62  Index numberOfNegEVals);
63 
68  virtual Index NumberOfNegEVals() const;
70 
71  //* @name Options of Linear solver */
73 
78  virtual bool IncreaseQuality();
79 
83  virtual bool ProvidesInertia() const;
85 
91  bool ProvidesDegeneracyDetection() const;
97  Index n_jac_nz,
98  Number* jac_c_vals,
99  Index* jac_c_iRow,
100  Index* jac_c_jCol,
101  std::list<Index>& c_deps);
103 
106  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
108 
109  private:
120 
123 
125  void operator=(const TSymLinearSolver&);
127 
132 
135 
145 
158 
173 
189 
196 
204 
207  void GiveMatrixToSolver(bool new_matrix, const SymMatrix& sym_A);
209  };
210 
211 } // namespace Ipopt
212 #endif