IpMumpsSolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2006, 2007 Damien Hocking, KBC Advanced Technologies
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors: Damien Hocking KBC 2006-03-20
6 // (included his original contribution into Ipopt package on 2006-03-25)
7 // Andreas Waechter IBM 2006-03-25
8 // (minor changes and corrections)
9 // Scott Turnberg CMU 2006-05-12
10 // (major revision)
11 // (incorporated by AW on 2006-11-11 into Ipopt package)
12 
13 
14 #ifndef __IPMUMPSSOLVERINTERFACE_HPP__
15 #define __IPMUMPSSOLVERINTERFACE_HPP__
16 
18 
19 namespace Ipopt
20 {
21 
27  {
28  public:
33 
35  virtual ~MumpsSolverInterface();
37 
39  bool InitializeImpl(const OptionsList& options,
40  const std::string& prefix);
41 
49  virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
50  const Index *airn,
51  const Index *ajcn);
52 
58  virtual double* GetValuesArrayPtr();
59 
63  virtual ESymSolverStatus MultiSolve(bool new_matrix,
64  const Index* airn,
65  const Index* ajcn,
66  Index nrhs,
67  double* rhs_vals,
68  bool check_NegEVals,
69  Index numberOfNegEVals);
70 
77  virtual Index NumberOfNegEVals() const;
79 
80  //* @name Options of Linear solver */
82 
87  virtual bool IncreaseQuality();
88 
92  virtual bool ProvidesInertia() const
93  {
94  return true;
95  }
100  {
101  return Triplet_Format;
102  }
104 
107  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
109 
112  virtual bool ProvidesDegeneracyDetection() const;
113 
117  const Index* ja,
118  std::list<Index>& c_deps);
119 
120  private:
131 
133  void operator=(const MumpsSolverInterface&);
135 
139  void* mumps_ptr_;
141 
147 
161 
166 
169 
172 
175 
178 
181 
185 
190 
194 
201 
206  ESymSolverStatus Factorization(bool check_NegEVals,
207  Index numberOfNegEVals);
208 
211  ESymSolverStatus Solve(Index nrhs, double *rhs_vals);
213  };
214 
215 } // namespace Ipopt
216 #endif