Ipopt 3.11.9
Loading...
Searching...
No Matches
IpGenAugSystemSolver.hpp
Go to the documentation of this file.
1// Copyright (C) 2007 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// $Id: IpGenAugSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6//
7// Authors: Andreas Waechter IBM 2007-03-01
8
9#ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
10#define __IP_STDAUGSYSTEMSOLVER_HPP__
11
12#include "IpAugSystemSolver.hpp"
14
15namespace Ipopt
16{
23 {
24 public:
29
33
35 bool InitializeImpl(const OptionsList& options,
36 const std::string& prefix);
37
43 const SymMatrix* W,
44 double W_factor,
45 const Vector* D_x,
46 double delta_x,
47 const Vector* D_s,
48 double delta_s,
49 const Matrix* J_c,
50 const Vector* D_c,
51 double delta_c,
52 const Matrix* J_d,
53 const Vector* D_d,
54 double delta_d,
55 std::vector<SmartPtr<const Vector> >& rhs_xV,
56 std::vector<SmartPtr<const Vector> >& rhs_sV,
57 std::vector<SmartPtr<const Vector> >& rhs_cV,
58 std::vector<SmartPtr<const Vector> >& rhs_dV,
59 std::vector<SmartPtr<Vector> >& sol_xV,
60 std::vector<SmartPtr<Vector> >& sol_sV,
61 std::vector<SmartPtr<Vector> >& sol_cV,
62 std::vector<SmartPtr<Vector> >& sol_dV,
63 bool check_NegEVals,
64 Index numberOfNegEVals);
65
72 virtual Index NumberOfNegEVals() const;
73
77 virtual bool ProvidesInertia() const;
78
85 virtual bool IncreaseQuality();
86
87 private:
100
104
108 double W_factor,
109 const Vector* D_x,
110 double delta_x,
111 const Vector* D_s,
112 double delta_s,
113 const Matrix& J_c,
114 const Vector* D_c,
115 double delta_c,
116 const Matrix& J_d,
117 const Vector* D_d,
118 double delta_d);
119
120 void UpdateTags(const SymMatrix* W,
121 double W_factor,
122 const Vector* D_x,
123 double delta_x,
124 const Vector* D_s,
125 double delta_s,
126 const Matrix& J_c,
127 const Vector* D_c,
128 double delta_c,
129 const Matrix& J_d,
130 const Vector* D_d,
131 double delta_d);
132
137
148 double w_factor_;
154 double delta_x_;
160 double delta_s_;
170 double delta_c_;
180 double delta_d_;
182
191
198 };
199
200} // namespace Ipopt
201
202#endif
Base class for Solver for the augmented system.
Solver for the augmented system using GenKKTSolverInterfaces.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
double delta_c_
Most recent value of delta_c from Set method.
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.
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
virtual ~GenAugSystemSolver()
Default destructor.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
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...
bool AugmentedSystemChanged(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...
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
double delta_x_
Most recent value of delta_x from Set method.
GenAugSystemSolver()
Default constructor.
GenAugSystemSolver(GenKKTSolverInterface &SolverInterface)
Constructor using only a linear solver object.
GenAugSystemSolver(const GenAugSystemSolver &)
Copy Constructor.
TaggedObject::Tag w_tag_
Tag for W matrix.
void UpdateTags(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)
double delta_d_
Most recent value of delta_d from Set method.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
SmartPtr< GenKKTSolverInterface > solver_interface_
The linear solver object that is to be used to solve the linear systems.
void operator=(const GenAugSystemSolver &)
Overloaded Equals Operator.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
double delta_s_
Most recent value of delta_s from Set method.
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
double w_factor_
Most recent value of W_factor.
Base class for interfaces to symmetric indefinite linear solvers for generic matrices
Matrix Base Class.
Definition IpMatrix.hpp:28
This class stores a list of user set options.
Template class for Smart Pointers.
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
double Number
Type of all numbers.
Definition IpTypes.hpp:17