Ipopt 3.11.9
Loading...
Searching...
No Matches
SensPCalculator.hpp
Go to the documentation of this file.
1// Copyright 2009, 2011 Hans Pirnay
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// Date : 2009-05-06
6
7#ifndef __ASPCALCULATOR_HPP__
8#define __ASPCALCULATOR_HPP__
9
10#include "IpAlgStrategy.hpp"
12#include "SensSchurData.hpp"
13
14namespace Ipopt
15{
16
18 {
29 public:
30
33 :
34 backsolver_(backsolver),
35 data_A_init(ConstPtr(A_data->MakeNewSchurDataCopy())),
36 data_A_(A_data)
37 {
38 }
39
40 virtual ~PCalculator()
41 {
42 }
43
45 virtual bool InitializeImpl(const OptionsList& options,
46 const std::string& prefix)
47 {
48 return true;
49 }
50
52 virtual bool ComputeP()=0;
53
56
57 virtual void PrintImpl(const Journalist& jnlst,
58 EJournalLevel level,
59 EJournalCategory category,
60 const std::string& name,
61 Index indent,
62 const std::string& prefix) const =0;
63
64 void Print(const Journalist& jnlst,
65 EJournalLevel level,
66 EJournalCategory category,
67 const std::string& name,
68 Index indent=0,
69 const std::string& prefix="") const
70 {
71 if (jnlst.ProduceOutput(level, category)) {
72 PrintImpl(jnlst, level, category, name, indent, prefix);
73 }
74 }
75
77 EJournalLevel level,
78 EJournalCategory category,
79 const std::string& name,
80 Index indent,
81 const std::string& prefix) const
82 {
83 if (IsValid(jnlst) && jnlst->ProduceOutput(level, category)) {
84 PrintImpl(*jnlst, level, category, name, indent, prefix);
85 }
86 }
87
92 {
93 return backsolver_;
94 }
95
97 {
98 return ConstPtr(data_A_);
99 }
100
102 {
103 return data_A_;
104 }
105
107 {
108 data_A_ = data_A_init->MakeNewSchurDataCopy();
109 }
110
111 private:
112
114
117
118
119 };
120
121
122}
123
124#endif
This is the base class for all algorithm strategy objects.
Class responsible for all message output.
virtual bool ProduceOutput(EJournalLevel level, EJournalCategory category) const
Method that returns true if there is a Journal that would write output for the given JournalLevel and...
This class stores a list of user set options.
SmartPtr< SchurData > data_A_nonconst() const
PCalculator(SmartPtr< SensBacksolver > backsolver, SmartPtr< SchurData > A_data)
This class is the interface for implementations of any class that calculates the matrix of the follo...
virtual void PrintImpl(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix) const =0
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Overloaded from AlgorithmStrategyObject.
SmartPtr< SensBacksolver > Solver() const
Accessor methods for data and backsolver.
void Print(SmartPtr< const Journalist > jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix) const
SmartPtr< const SchurData > data_A_init
SmartPtr< SchurData > data_A_
virtual bool GetSchurMatrix(const SmartPtr< const SchurData > &B, SmartPtr< Matrix > &S)=0
Function to extract a SchurMatrix corresponding to $B K^{-1} A$.
SmartPtr< const SchurData > data_A() const
void Print(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent=0, const std::string &prefix="") const
virtual bool ComputeP()=0
Function to start the computation of P from E_0 and KKT.
SmartPtr< SensBacksolver > backsolver_
Template class for Smart Pointers.
SmartPtr< const U > ConstPtr(const SmartPtr< U > &smart_ptr)
bool IsValid(const SmartPtr< U > &smart_ptr)
EJournalCategory
Category Selection Enum.
int Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:19
EJournalLevel
Print Level Enum.