Ipopt Documentation  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IpIdentityMatrix.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2008 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 __IPIDENTITYMATRIX_HPP__
8 #define __IPIDENTITYMATRIX_HPP__
9 
10 #include "IpUtils.hpp"
11 #include "IpSymMatrix.hpp"
12 
13 namespace Ipopt
14 {
15 
18 {
19 public:
21 
26  const SymMatrixSpace* owner_space
27  );
28 
30  ~IdentityMatrix();
32 
34  void SetFactor(
35  Number factor
36  )
37  {
38  factor_ = factor;
39  }
40 
42  Number GetFactor() const
43  {
44  return factor_;
45  }
46 
48  Index Dim() const;
49 
50 protected:
52  virtual void MultVectorImpl(
54  Number alpha,
55  const Vector& x,
56  Number beta,
57  Vector& y
58  ) const;
59 
60  virtual void AddMSinvZImpl(
61  Number alpha,
62  const Vector& S,
63  const Vector& Z,
64  Vector& X
65  ) const;
66 
67  virtual bool HasValidNumbersImpl() const;
68 
69  virtual void ComputeRowAMaxImpl(
70  Vector& rows_norms,
71  bool init
72  ) const;
73 
74  virtual void PrintImpl(
75  const Journalist& jnlst,
76  EJournalLevel level,
77  EJournalCategory category,
78  const std::string& name,
79  Index indent,
80  const std::string& prefix
81  ) const;
83 
84 private:
93 
96 
99  const IdentityMatrix&
100  );
101 
103  void operator=(
104  const IdentityMatrix&
105  );
107 
110 };
111 
114 {
115 public:
117 
120  Index dim
121  )
122  : SymMatrixSpace(dim)
123  { }
124 
127  { }
129 
130  virtual SymMatrix* MakeNewSymMatrix() const
131  {
132  return MakeNewIdentityMatrix();
133  }
134 
137  {
138  return new IdentityMatrix(this);
139  }
140 
141 private:
150 
153 
156  const IdentityMatrixSpace&
157  );
158 
160  void operator=(
161  const IdentityMatrixSpace&
162  );
164 };
165 
166 } // namespace Ipopt
167 #endif
Number factor_
Scaling factor for this identity matrix.
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
Vector Base Class.
Definition: IpVector.hpp:47
EJournalLevel
Print Level Enum.
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:20
This is the matrix space for IdentityMatrix.
Class for Matrices which are multiples of the identity matrix.
IdentityMatrix * MakeNewIdentityMatrix() const
Method for creating a new matrix of this specific type.
virtual SymMatrix * MakeNewSymMatrix() const
Pure virtual method for creating a new matrix of this specific type.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
void SetFactor(Number factor)
Method for setting the factor for the identity matrix.
virtual ~IdentityMatrixSpace()
Destructor.
#define IPOPTLIB_EXPORT
SymMatrixSpace base class, corresponding to the SymMatrix base class.
Definition: IpSymMatrix.hpp:85
Class responsible for all message output.
IdentityMatrixSpace(Index dim)
Constructor, given the dimension of the matrix.
Number GetFactor() const
Method for getting the factor for the identity matrix.
EJournalCategory
Category Selection Enum.