Ipopt Documentation  
IpTSymLinearSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2007 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors: Carl Laird, Andreas Waechter IBM 2004-03-17
6 
7 #ifndef __IPTSYMLINEARSOLVER_HPP__
8 #define __IPTSYMLINEARSOLVER_HPP__
9 
10 #include "IpSymLinearSolver.hpp"
12 #include "IpTSymScalingMethod.hpp"
13 #include "IpSymMatrix.hpp"
15 #include <vector>
16 #include <list>
17 
18 namespace Ipopt
19 {
20 
34 {
35 public:
47  SmartPtr<TSymScalingMethod> scaling_method
48  );
49 
51  virtual ~TSymLinearSolver();
53 
54  bool InitializeImpl(
55  const OptionsList& options,
56  const std::string& prefix);
57 
61  const SymMatrix& A,
62  std::vector<SmartPtr<const Vector> >& rhsV,
63  std::vector<SmartPtr<Vector> >& solV,
64  bool check_NegEVals,
65  Index numberOfNegEVals
66  );
67 
68  virtual Index NumberOfNegEVals() const;
70 
71  //* @name Options of Linear solver */
73  virtual bool IncreaseQuality();
74 
75  virtual bool ProvidesInertia() const;
77 
82  bool ProvidesDegeneracyDetection() const;
83 
85  Index n_rows,
86  Index n_cols,
87  Index n_jac_nz,
88  Number* jac_c_vals,
89  Index* jac_c_iRow,
90  Index* jac_c_jCol,
91  std::list<Index>& c_deps
92  );
94 
97  static void RegisterOptions(
99  );
101 
102 private:
113 
116  const TSymLinearSolver&
117  );
118 
120  void operator=(
121  const TSymLinearSolver&
122  );
124 
129 
132 
146 
163 
181 
197 
205 
214  const SymMatrix& symT_A
215  );
216 
220  void GiveMatrixToSolver(
221  bool new_matrix,
222  const SymMatrix& sym_A
223  );
225 };
226 
227 } // namespace Ipopt
228 #endif
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:19
Ipopt::TSymLinearSolver::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Ipopt::SparseSymLinearSolverInterface::EMatrixFormat
EMatrixFormat
Enum to specify sparse matrix format.
Definition: IpSparseSymLinearSolverInterface.hpp:100
Ipopt::TSymLinearSolver::TSymLinearSolver
TSymLinearSolver()
Default Constructor.
IpTSymScalingMethod.hpp
Ipopt::TSymLinearSolver::linear_scaling_on_demand_
bool linear_scaling_on_demand_
Flag indicating whether the scaling objected is to be switched on when increased quality is requested...
Definition: IpTSymLinearSolver.hpp:157
Ipopt
This file contains a base class for all exceptions and a set of macros to help with exceptions.
Definition: IpInexactAlgBuilder.hpp:13
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
IpSymLinearSolver.hpp
Ipopt::TSymLinearSolver::nonzeros_triplet_
Index nonzeros_triplet_
Number of nonzeros of the matrix in triplet format.
Definition: IpTSymLinearSolver.hpp:138
Ipopt::TSymLinearSolver::just_switched_on_scaling_
bool just_switched_on_scaling_
Flag indicating whether we just switched on the scaling.
Definition: IpTSymLinearSolver.hpp:179
Ipopt::TSymLinearSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class.
Ipopt::TSymLinearSolver::nonzeros_compressed_
Index nonzeros_compressed_
Number of nonzeros in compressed format.
Definition: IpTSymLinearSolver.hpp:144
Ipopt::TSymLinearSolver::operator=
void operator=(const TSymLinearSolver &)
Default Assignment Operator.
Ipopt::TSymLinearSolver::matrix_format_
SparseSymLinearSolverInterface::EMatrixFormat matrix_format_
Flag indicating what matrix data format the solver requires.
Definition: IpTSymLinearSolver.hpp:195
Ipopt::TSymLinearSolver::InitializeStructure
ESymSolverStatus InitializeStructure(const SymMatrix &symT_A)
Initialize nonzero structure.
Ipopt::TSymLinearSolver::~TSymLinearSolver
virtual ~TSymLinearSolver()
Destructor.
Ipopt::TSymLinearSolver::MultiSolve
virtual ESymSolverStatus MultiSolve(const SymMatrix &A, std::vector< SmartPtr< const Vector > > &rhsV, std::vector< SmartPtr< Vector > > &solV, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for multiple right hand sides.
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
Ipopt::TSymLinearSolver::scaling_method_
SmartPtr< TSymScalingMethod > scaling_method_
Strategy Object for a method that computes scaling factors for the matrices.
Definition: IpTSymLinearSolver.hpp:173
Ipopt::TSymLinearSolver::airn_
Index * airn_
row indices of matrix in triplet (MA27) format.
Definition: IpTSymLinearSolver.hpp:185
IpTripletToCSRConverter.hpp
Ipopt::SymLinearSolver
Base class for all derived symmetric linear solvers.
Definition: IpSymLinearSolver.hpp:50
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:171
Ipopt::TSymLinearSolver::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Ipopt::TSymLinearSolver::ajcn_
Index * ajcn_
column indices of matrix in triplet (MA27) format.
Definition: IpTSymLinearSolver.hpp:187
Ipopt::TSymLinearSolver::warm_start_same_structure_
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
Definition: IpTSymLinearSolver.hpp:203
IpSymMatrix.hpp
Ipopt::TSymLinearSolver::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last factorization.
Ipopt::TSymLinearSolver
General driver for linear solvers for sparse indefinite symmetric matrices.
Definition: IpTSymLinearSolver.hpp:33
Ipopt::TSymLinearSolver::atag_
TaggedObject::Tag atag_
Tag for the incoming matrix.
Definition: IpTSymLinearSolver.hpp:128
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:20
Ipopt::TSymLinearSolver::solver_interface_
SmartPtr< SparseSymLinearSolverInterface > solver_interface_
Strategy Object for an interface to a linear solver.
Definition: IpTSymLinearSolver.hpp:165
Ipopt::TSymLinearSolver::initialized_
bool initialized_
Flag indicating if the InitializeStructure method has been called for the linear solver.
Definition: IpTSymLinearSolver.hpp:161
Ipopt::TSymLinearSolver::RegisterOptions
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for OptionsList.
Ipopt::TaggedObject::Tag
unsigned int Tag
Type for the Tag values.
Definition: IpTaggedObject.hpp:63
IpSparseSymLinearSolverInterface.hpp
Ipopt::TSymLinearSolver::scaling_factors_
double * scaling_factors_
Array storing the scaling factors.
Definition: IpTSymLinearSolver.hpp:175
Ipopt::TSymLinearSolver::have_structure_
bool have_structure_
Flag indicating if the internal structures are initialized.
Definition: IpTSymLinearSolver.hpp:153
Ipopt::TSymLinearSolver::triplet_to_csr_converter_
SmartPtr< TripletToCSRConverter > triplet_to_csr_converter_
Pointer to object for conversion from triplet to compressed format.
Definition: IpTSymLinearSolver.hpp:193
Ipopt::TSymLinearSolver::dim_
Index dim_
Number of rows and columns of the matrix.
Definition: IpTSymLinearSolver.hpp:131
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::TSymLinearSolver::DetermineDependentRows
ESymSolverStatus DetermineDependentRows(Index n_rows, Index n_cols, Index n_jac_nz, Number *jac_c_vals, Index *jac_c_iRow, Index *jac_c_jCol, std::list< Index > &c_deps)
Ipopt::TSymLinearSolver::ProvidesDegeneracyDetection
bool ProvidesDegeneracyDetection() const
Ipopt::TSymLinearSolver::GiveMatrixToSolver
void GiveMatrixToSolver(bool new_matrix, const SymMatrix &sym_A)
Copy the elements of the matrix in the required format into the array that is provided by the solver ...
Ipopt::TSymLinearSolver::use_scaling_
bool use_scaling_
Flag indicating whether scaling should be performed.
Definition: IpTSymLinearSolver.hpp:177