Ipopt  3.11.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpMa57TSolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpMa57TSolverInterface.hpp 2158 2012-12-04 19:24:42Z stefan $
6 //
7 // Authors: Michael Hagemann Univ of Basel 2005-10-28
8 // original version (based on MA27TSolverInterface.hpp)
9 
10 #ifndef __IPMA57TSOLVERINTERFACE_HPP__
11 #define __IPMA57TSOLVERINTERFACE_HPP__
12 
14 
15 #ifdef FUNNY_MA57_FINT
16 #include <cstddef>
17 typedef ptrdiff_t ma57int;
18 #else
19 typedef ipfint ma57int;
20 #endif
21 
22 namespace Ipopt
23 {
28  {
29  public:
34 
36  virtual ~Ma57TSolverInterface();
38 
40  bool InitializeImpl(const OptionsList& options,
41  const std::string& prefix);
42 
43 
52  Index dim,
53  Index nonzeros,
54  const Index *airn,
55  const Index *ajcn);
56 
62  virtual double* GetValuesArrayPtr();
63 
67  virtual ESymSolverStatus MultiSolve(bool new_matrix,
68  const Index* airn,
69  const Index* ajcn,
70  Index nrhs,
71  double* rhs_vals,
72  bool check_NegEVals,
73  Index numberOfNegEVals);
74 
81  virtual Index NumberOfNegEVals() const;
83 
84  //* @name Options of Linear solver */
86 
91  virtual bool IncreaseQuality();
92 
96  virtual bool ProvidesInertia() const
97  {
98  return true;
99  }
104  {
105  return Triplet_Format;
106  }
108 
111  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
113 
114  private:
125 
127  void operator=(const Ma57TSolverInterface&);
129 
134 
138 
144 
158 
171 
176  double wd_cntl_[5];
178 
180  double wd_rinfo_[20];
181 
182  ma57int wd_lkeep_; /* LKEEP >= 5*N + NE + max(N,NE) + 42. */
184 
185  ma57int *wd_iwork_; /* 5 * N. */
186 
187  double *wd_fact_;
191 
192 
194  double* a_;
196 
204  const Index* ajcn);
205 
211  const Index* ajcn,
212  bool check_NegEVals,
213  Index numberOfNegEVals);
214 
218  double *rhs_vals);
220  };
221 
222 } // namespace Ipopt
223 #endif