Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpStdAugSystemSolver.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 __IP_STDAUGSYSTEMSOLVER_HPP__
8#define __IP_STDAUGSYSTEMSOLVER_HPP__
9
10#include "IpAugSystemSolver.hpp"
11#include "IpCompoundMatrix.hpp"
13#include "IpCompoundVector.hpp"
14#include "IpSumSymMatrix.hpp"
15#include "IpDiagMatrix.hpp"
16#include "IpIdentityMatrix.hpp"
17
18namespace Ipopt
19{
26{
27public:
30
32 SymLinearSolver& LinSolver
33 );
34
38
40 const OptionsList& options,
41 const std::string& prefix
42 );
43
49 const SymMatrix* W,
50 Number W_factor,
51 const Vector* D_x,
52 Number delta_x,
53 const Vector* D_s,
54 Number delta_s,
55 const Matrix* J_c,
56 const Vector* D_c,
57 Number delta_c,
58 const Matrix* J_d,
59 const Vector* D_d,
60 Number delta_d,
61 std::vector<SmartPtr<const Vector> >& rhs_xV,
62 std::vector<SmartPtr<const Vector> >& rhs_sV,
63 std::vector<SmartPtr<const Vector> >& rhs_cV,
64 std::vector<SmartPtr<const Vector> >& rhs_dV,
65 std::vector<SmartPtr<Vector> >& sol_xV,
66 std::vector<SmartPtr<Vector> >& sol_sV,
67 std::vector<SmartPtr<Vector> >& sol_cV,
68 std::vector<SmartPtr<Vector> >& sol_dV,
69 bool check_NegEVals,
70 Index numberOfNegEVals
71 );
72
81 virtual Index NumberOfNegEVals() const;
82
87 virtual bool ProvidesInertia() const;
88
97 virtual bool IncreaseQuality();
98
99private:
110
112
115 const StdAugSystemSolver&
116 );
117
120 const StdAugSystemSolver&
121 );
123
131 const SymMatrix& W,
132 const Matrix& J_c,
133 const Matrix& J_d,
134 const Vector& proto_x,
135 const Vector& proto_s,
136 const Vector& proto_c,
137 const Vector& proto_d
138 );
139
147 const SymMatrix* W,
148 Number W_factor,
149 const Vector* D_x,
150 Number delta_x,
151 const Vector* D_s,
152 Number delta_s,
153 const Matrix& J_c,
154 const Vector* D_c,
155 Number delta_c,
156 const Matrix& J_d,
157 const Vector* D_d,
158 Number delta_d,
159 const Vector& proto_x,
160 const Vector& proto_s,
161 const Vector& proto_c,
162 const Vector& proto_d
163 );
164
169 const SymMatrix* W,
170 Number W_factor,
171 const Vector* D_x,
172 Number delta_x,
173 const Vector* D_s,
174 Number delta_s,
175 const Matrix& J_c,
176 const Vector* D_c,
177 Number delta_c,
178 const Matrix& J_d,
179 const Vector* D_d,
180 Number delta_d
181 );
182
187
196
198
204
209
212
218
221
227
230
236
242
245
251
257
260
270
279
286
289
294};
295
296} // namespace Ipopt
297
298#endif
Base class for Solver for the augmented system.
Matrix Base Class.
Definition IpMatrix.hpp:28
This class stores a list of user set options.
Template class for Smart Pointers.
Solver for the augmented system for triple type matrices.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
StdAugSystemSolver()
Default constructor.
TaggedObject::Tag augsys_tag_
This is the tag of the matrix storing the augmented system.
SmartPtr< IdentityMatrixSpace > ident_space_ds_
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
virtual ~StdAugSystemSolver()
Destructor.
virtual ESymSolverStatus MultiSolve(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix *J_c, const Vector *D_c, Number delta_c, const Matrix *J_d, const Vector *D_d, Number delta_d, std::vector< SmartPtr< const Vector > > &rhs_xV, std::vector< SmartPtr< const Vector > > &rhs_sV, std::vector< SmartPtr< const Vector > > &rhs_cV, std::vector< SmartPtr< const Vector > > &rhs_dV, std::vector< SmartPtr< Vector > > &sol_xV, std::vector< SmartPtr< Vector > > &sol_sV, std::vector< SmartPtr< Vector > > &sol_cV, std::vector< SmartPtr< Vector > > &sol_dV, bool check_NegEVals, Index numberOfNegEVals)
Set up the augmented system and solve it for a set of given right hand side - implementation for GenT...
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
SmartPtr< CompoundSymMatrixSpace > augmented_system_space_
Spaces for piecing together the augmented system.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
SmartPtr< SymLinearSolver > linsolver_
The linear solver object that is to be used to solve the linear systems.
StdAugSystemSolver(const StdAugSystemSolver &)
Copy Constructor.
Number delta_x_
Most recent value of delta_x from Set method.
SmartPtr< CompoundSymMatrix > augmented_system_
The resulting augmented matrix.
Number w_factor_
Most recent value of W_factor.
Number delta_c_
Most recent value of delta_c from set method.
SmartPtr< SumSymMatrixSpace > sumsym_space_x_
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
SmartPtr< DiagMatrixSpace > diag_space_d_
TaggedObject::Tag w_tag_
Tag for W matrix.
SmartPtr< DiagMatrixSpace > diag_space_c_
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Number delta_s_
Most recent value of delta_s from Set method.
bool AugmentedSystemRequiresChange(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number delta_d)
Check the internal tags and decide if the passed variables are different from what is in the augmente...
SmartPtr< const SymMatrix > old_w_
A copy of a previous W used in the augmented_system_.
SmartPtr< DiagMatrixSpace > diag_space_x_
void operator=(const StdAugSystemSolver &)
Default Assignment Operator.
void CreateAugmentedSystem(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number delta_d, const Vector &proto_x, const Vector &proto_s, const Vector &proto_c, const Vector &proto_d)
Create the new compound sym matrix that represents the augmented system.
SmartPtr< CompoundVectorSpace > augmented_vector_space_
Number delta_d_
Most recent value of delta_d from Set method.
StdAugSystemSolver(SymLinearSolver &LinSolver)
Constructor using only a linear solver object.
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
void CreateAugmentedSpace(const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Vector &proto_x, const Vector &proto_s, const Vector &proto_c, const Vector &proto_d)
Create the matrix space for the Compound Sym Matrix that represents the augmented system.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
SmartPtr< DiagMatrixSpace > diag_space_s_
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Base class for all derived symmetric linear solvers.
This is the base class for all derived symmetric matrix types.
unsigned int Tag
Type for the Tag values.
Vector Base Class.
Definition IpVector.hpp:48
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.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:20
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17