Ipopt  3.11.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpPDFullSpaceSolver.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 // $Id: IpPDFullSpaceSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8 
9 #ifndef __IPPDFULLSPACESOLVER_HPP__
10 #define __IPPDFULLSPACESOLVER_HPP__
11 
12 #include "IpPDSystemSolver.hpp"
13 #include "IpAugSystemSolver.hpp"
15 
16 namespace Ipopt
17 {
18 
33  {
34  public:
40  PDFullSpaceSolver(AugSystemSolver& augSysSolver,
41  PDPerturbationHandler& perturbHandler);
42 
44  virtual ~PDFullSpaceSolver();
46 
47  /* overloaded from AlgorithmStrategyObject */
48  bool InitializeImpl(const OptionsList& options,
49  const std::string& prefix);
50 
53  virtual bool Solve(Number alpha,
54  Number beta,
55  const IteratesVector& rhs,
56  IteratesVector& res,
57  bool allow_inexact=false,
58  bool improve_solution=false);
59 
62  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
64 
65  private:
79 
87 
96 
116 
123  bool SolveOnce(bool resolve_unmodified,
124  bool pretend_singular,
125  const SymMatrix& W,
126  const Matrix& J_c,
127  const Matrix& J_d,
128  const Matrix& Px_L,
129  const Matrix& Px_U,
130  const Matrix& Pd_L,
131  const Matrix& Pd_U,
132  const Vector& z_L,
133  const Vector& z_U,
134  const Vector& v_L,
135  const Vector& v_U,
136  const Vector& slack_x_L,
137  const Vector& slack_x_U,
138  const Vector& slack_s_L,
139  const Vector& slack_s_U,
140  const Vector& sigma_x,
141  const Vector& sigma_s,
142  Number alpha,
143  Number beta,
144  const IteratesVector& rhs,
145  IteratesVector& res);
146 
150  void ComputeResiduals(const SymMatrix& W,
151  const Matrix& J_c,
152  const Matrix& J_d,
153  const Matrix& Px_L,
154  const Matrix& Px_U,
155  const Matrix& Pd_L,
156  const Matrix& Pd_U,
157  const Vector& z_L,
158  const Vector& z_U,
159  const Vector& v_L,
160  const Vector& v_U,
161  const Vector& slack_x_L,
162  const Vector& slack_x_U,
163  const Vector& slack_s_L,
164  const Vector& slack_s_U,
165  const Vector& sigma_x,
166  const Vector& sigma_s,
167  Number alpha,
168  Number beta,
169  const IteratesVector& rhs,
170  const IteratesVector& res,
171  IteratesVector& resid);
172 
177  const IteratesVector& res,
178  const IteratesVector& resid);
179 
183  void SinvBlrmZPTdBr(Number alpha, const Vector& S,
184  const Vector& R, const Vector& Z,
185  const Matrix& P, const Vector&g, Vector& X);
187  };
188 
189 } // namespace Ipopt
190 
191 #endif