Ipopt  3.12.8
IpIterativeWsmpSolverInterface.hpp
Go to the documentation of this file.
1 // Copyright (C) 2009 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpIterativeWsmpSolverInterface.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2009-09-18
8 // based on IpWsmpSolverInterface.hpp (rev 1483)
9 
10 
11 #ifndef __IPITERATIVEWSMPSOLVERINTERFACE_HPP__
12 #define __IPITERATIVEWSMPSOLVERINTERFACE_HPP__
13 
15 
16 namespace Ipopt
17 {
18 
24  {
25  public:
30 
34 
36  bool InitializeImpl(const OptionsList& options,
37  const std::string& prefix);
38 
39 
43  virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
44  const Index *ia,
45  const Index *ja);
46 
49  virtual double* GetValuesArrayPtr();
50 
52  virtual ESymSolverStatus MultiSolve(bool new_matrix,
53  const Index* ia,
54  const Index* ja,
55  Index nrhs,
56  double* rhs_vals,
57  bool check_NegEVals,
58  Index numberOfNegEVals);
59 
63  virtual Index NumberOfNegEVals() const;
65 
66  //* @name Options of Linear solver */
68 
70  virtual bool IncreaseQuality();
71 
75  virtual bool ProvidesInertia() const
76  {
77  return false;
78  }
83  {
84  return CSR_Format_1_Offset;
85  }
87 
90  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
92 
93  private:
104 
108 
113 
115  double* a_;
117 
133 
136 
139 #if 0
140 
141  Index negevals_;
142 #endif
143 
144 
157 
163  double* DPARM_;
165 
170  ESymSolverStatus SymbolicFactorization(const Index* ia, const Index* ja);
171 
173  ESymSolverStatus InternalSymFact(const Index* ia, const Index* ja);
174 
178  const Index* ja,
179  bool check_NegEVals,
180  Index numberOfNegEVals);
181 
184  ESymSolverStatus Solve(const Index* ia,
185  const Index* ja,
186  Index nrhs,
187  double *rhs_vals);
189  };
190 
191 } // namespace Ipopt
192 #endif
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.
double * DPARM_
Double precision parameter array for WISMP.
ESymSolverStatus
Enum to report outcome of a linear solve.
ipfint * IPARM_
Integer parameter array for WISMP.
virtual ESymSolverStatus MultiSolve(bool new_matrix, const Index *ia, const Index *ja, Index nrhs, double *rhs_vals, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.
virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros, const Index *ia, const Index *ja)
Method for initializing internal stuctures.
bool pivtol_changed_
Flag indicating if the matrix has to be refactorized because the pivot tolerance has been changed...
FORTRAN_INTEGER_TYPE ipfint
Definition: IpTypes.hpp:26
Base class for interfaces to symmetric indefinite linear solvers for sparse matrices.
ESymSolverStatus Factorization(const Index *ia, const Index *ja, bool check_NegEVals, Index numberOfNegEVals)
Call Wsmp to factorize the Matrix.
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Index wsmp_write_matrix_iteration_
iteration number in which matrices are to be written out
virtual double * GetValuesArrayPtr()
Method returing an internal array into which the nonzero elements are to be stored.
ESymSolverStatus SymbolicFactorization(const Index *ia, const Index *ja)
Call Wsmp to do the analysis phase.
Index wsmp_scaling_
Indicating which of WSMP&#39;s scaling methods should be used.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Compressed sparse row format for lower triangular part, with 1 offset.
double * a_
Array for storing the values of the matrix.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
This class stores a list of user set options.
bool have_symbolic_factorization_
Flag indicating whether symbolic factorization and order has already been performed.
Interface to the linear solver WISMP, derived from SparseSymLinearSolverInterface.
Index matrix_file_number_
Counter for matrix file numbers.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
void operator=(const IterativeWsmpSolverInterface &)
Overloaded Equals Operator.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
ESymSolverStatus InternalSymFact(const Index *ia, const Index *ja)
Call Wsmp to really do the analysis phase.
Index dim_
Number of rows and columns of the matrix.
EMatrixFormat
Enum to specify sparse matrix format.
ESymSolverStatus Solve(const Index *ia, const Index *ja, Index nrhs, double *rhs_vals)
Call Wsmpx to do the Solve.
virtual ~IterativeWsmpSolverInterface()
Destructor.
Index wsmp_num_threads_
Option that controls the matching strategy.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
bool initialized_
Flag indicating if internal data is initialized.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.