Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpSymLinearSolver.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2006 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-08-13
6
7#ifndef __IPSYMLINEARSOLVER_HPP__
8#define __IPSYMLINEARSOLVER_HPP__
9
10#include "IpUtils.hpp"
11#include "IpSymMatrix.hpp"
12#include "IpAlgStrategy.hpp"
13#include <vector>
14
15namespace Ipopt
16{
17
34
51{
52public:
57
59 { }
61
62 virtual bool InitializeImpl(
63 const OptionsList& options,
64 const std::string& prefix
65 ) = 0;
66
69
83 const SymMatrix& A,
84 std::vector<SmartPtr<const Vector> >& rhsV,
85 std::vector<SmartPtr<Vector> >& solV,
86 bool check_NegEVals,
87 Index numberOfNegEVals
88 ) = 0;
89
96 const SymMatrix& A,
97 const Vector& rhs,
98 Vector& sol,
99 bool check_NegEVals,
100 Index numberOfNegEVals
101 )
102 {
103 std::vector<SmartPtr<const Vector> > rhsV(1);
104 rhsV[0] = &rhs;
105 std::vector<SmartPtr<Vector> > solV(1);
106 solV[0] = &sol;
107 return MultiSolve(A, rhsV, solV, check_NegEVals, numberOfNegEVals);
108 }
109
117 virtual Index NumberOfNegEVals() const = 0;
119
120 //* @name Options of Linear solver */
122
129 virtual bool IncreaseQuality() = 0;
130
135 virtual bool ProvidesInertia() const = 0;
137};
138
139} // namespace Ipopt
140
141#endif
This is the base class for all algorithm strategy objects.
This class stores a list of user set options.
Template class for Smart Pointers.
Base class for all derived symmetric linear solvers.
virtual bool IncreaseQuality()=0
Request to increase quality of solution for next solve.
virtual Index NumberOfNegEVals() const =0
Number of negative eigenvalues detected during last factorization.
virtual ESymSolverStatus MultiSolve(const SymMatrix &A, std::vector< SmartPtr< const Vector > > &rhsV, std::vector< SmartPtr< Vector > > &solV, bool check_NegEVals, Index numberOfNegEVals)=0
Solve operation for multiple right hand sides.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)=0
Implementation of the initialization method that has to be overloaded by for each derived class.
ESymSolverStatus Solve(const SymMatrix &A, const Vector &rhs, Vector &sol, bool check_NegEVals, Index numberOfNegEVals)
Solve operation for a single right hand side.
virtual bool ProvidesInertia() const =0
Query whether inertia is computed by linear solver.
This is the base class for all derived symmetric matrix types.
Vector Base Class.
Definition IpVector.hpp:48
#define IPOPTLIB_EXPORT
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ESymSolverStatus
Enum to report outcome of a linear solve.
@ SYMSOLVER_FATAL_ERROR
Unrecoverable error in linear solver occurred.
@ SYMSOLVER_SUCCESS
Successful solve.
@ SYMSOLVER_WRONG_INERTIA
The number of negative eigenvalues is not correct.
@ SYMSOLVER_SINGULAR
Matrix seems to be singular; solve was aborted.
@ SYMSOLVER_CALL_AGAIN
Call the solver interface again after the matrix values have been restored.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:20