Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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
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.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
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.
bool initialized_
Flag indicating if internal data is initialized.
EMatrixFormat MatrixFormat() const
Query of requested matrix type that the linear solver understands.