IpMa77SolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2009, Jonathan Hogg <jdh41.at.cantab.net>
2 // Copyright (C) 2004, 2007 International Business Machines and others.
3 // All Rights Reserved.
4 // This code is published under the Eclipse Public License.
5 //
6 // $Id: IpMa77SolverInterface.hpp 1861 2010-12-21 21:34:47Z andreasw $
7 //
8 // Authors: Jonathan Hogg 2009-07-29
9 // Carl Laird, Andreas Waechter IBM 2004-03-17
10 
11 #ifndef __IPMA77SOLVERINTERFACE_HPP__
12 #define __IPMA77SOLVERINTERFACE_HPP__
13 
15 
16 namespace Ipopt
17 {
18 
99  {
100  private:
101  int ndim_; // Number of dimensions
102  double *val_; // Storage for variables
103  int numneg_; // Number of negative pivots in last factorization
104 
105  /* Options */
106  int icntl_[8];
107  double rcntl_[3];
114  double ma77_small_;
115  double ma77_static_;
116  double ma77_u_;
117 
118  public:
119 
122 
123  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
124 
125  bool InitializeImpl(const OptionsList& options,
126  const std::string& prefix);
127 
137  const Index* ia,
138  const Index* ja);
139 
146  double* GetValuesArrayPtr() { return val_; }
147 
180  ESymSolverStatus MultiSolve(bool new_matrix,
181  const Index* ia,
182  const Index* ja,
183  Index nrhs,
184  double* rhs_vals,
185  bool check_NegEVals,
186  Index numberOfNegEVals);
187 
194  Index NumberOfNegEVals() const { return numneg_; }
196 
197  //* @name Options of Linear solver */
199 
205  bool IncreaseQuality() { return false; }
206 
210  bool ProvidesInertia() const { return true; }
211 
217 
223  bool ProvidesDegeneracyDetection() const { return false; }
227  const Index* ja,
228  std::list<Index>& c_deps) { return SYMSOLVER_FATAL_ERROR; }
229 
231  static void MetisOrder(const int dim, const Index *ptr, const Index *row, Index *perm);
232  };
233 
234 } // namespace Ipopt
235 
236 #endif