Ipopt 3.11.9
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// $Id: IpStdAugSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6//
7// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9#ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
10#define __IP_STDAUGSYSTEMSOLVER_HPP__
11
12#include "IpAugSystemSolver.hpp"
13#include "IpCompoundMatrix.hpp"
15#include "IpCompoundVector.hpp"
16#include "IpSumSymMatrix.hpp"
17#include "IpDiagMatrix.hpp"
18#include "IpIdentityMatrix.hpp"
19
20namespace Ipopt
21{
28 {
29 public:
34
38
40 bool InitializeImpl(const OptionsList& options,
41 const std::string& prefix);
42
48 const SymMatrix* W,
49 double W_factor,
50 const Vector* D_x,
51 double delta_x,
52 const Vector* D_s,
53 double delta_s,
54 const Matrix* J_c,
55 const Vector* D_c,
56 double delta_c,
57 const Matrix* J_d,
58 const Vector* D_d,
59 double delta_d,
60 std::vector<SmartPtr<const Vector> >& rhs_xV,
61 std::vector<SmartPtr<const Vector> >& rhs_sV,
62 std::vector<SmartPtr<const Vector> >& rhs_cV,
63 std::vector<SmartPtr<const Vector> >& rhs_dV,
64 std::vector<SmartPtr<Vector> >& sol_xV,
65 std::vector<SmartPtr<Vector> >& sol_sV,
66 std::vector<SmartPtr<Vector> >& sol_cV,
67 std::vector<SmartPtr<Vector> >& sol_dV,
68 bool check_NegEVals,
69 Index numberOfNegEVals);
70
77 virtual Index NumberOfNegEVals() const;
78
82 virtual bool ProvidesInertia() const;
83
90 virtual bool IncreaseQuality();
91
92 private:
105
109
110
115 const Matrix& J_c,
116 const Matrix& J_d,
117 const Vector& proto_x,
118 const Vector& proto_s,
119 const Vector& proto_c,
120 const Vector& proto_d);
121
122
127 double W_factor,
128 const Vector* D_x,
129 double delta_x,
130 const Vector* D_s,
131 double delta_s,
132 const Matrix& J_c,
133 const Vector* D_c,
134 double delta_c,
135 const Matrix& J_d,
136 const Vector* D_d,
137 double delta_d,
138 const Vector& proto_x,
139 const Vector& proto_s,
140 const Vector& proto_c,
141 const Vector& proto_d);
142
146 double W_factor,
147 const Vector* D_x,
148 double delta_x,
149 const Vector* D_s,
150 double delta_s,
151 const Matrix& J_c,
152 const Vector* D_c,
153 double delta_c,
154 const Matrix& J_d,
155 const Vector* D_d,
156 double delta_d);
157
162
171
173
184 double w_factor_;
190 double delta_x_;
196 double delta_s_;
206 double delta_c_;
216 double delta_d_;
217
226
234
239
246 };
247
248} // namespace Ipopt
249
250#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()
Default destructor.
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.
SmartPtr< CompoundSymMatrix > augmented_system_
The resulting augmented matrix.
SmartPtr< SumSymMatrixSpace > sumsym_space_x_
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
virtual ESymSolverStatus MultiSolve(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix *J_c, const Vector *D_c, double delta_c, const Matrix *J_d, const Vector *D_d, double 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...
double w_factor_
Most recent value of W_factor.
double delta_d_
Most recent value of delta_d from Set method.
SmartPtr< DiagMatrixSpace > diag_space_d_
TaggedObject::Tag w_tag_
Tag for W matrix.
SmartPtr< DiagMatrixSpace > diag_space_c_
double delta_x_
Most recent value of delta_x from Set method.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
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 &)
Overloaded Equals Operator.
bool AugmentedSystemRequiresChange(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double delta_d)
Check the internal tags and decide if the passed variables are different from what is in the augmente...
void CreateAugmentedSystem(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double 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.
double delta_c_
Most recent value of delta_c from Set method.
SmartPtr< CompoundVectorSpace > augmented_vector_space_
double delta_s_
Most recent value of delta_s 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
ESymSolverStatus
Enum to report outcome of a linear solve.
int Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:19