Ipopt
3.11.4
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
src
LinAlg
IpLowRankUpdateSymMatrix.hpp
Go to the documentation of this file.
1
// Copyright (C) 2005, 2008 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpLowRankUpdateSymMatrix.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Andreas Waechter IBM 2005-12-25
8
9
#ifndef __IPLOWRANKUPDATESYMMATRIX_HPP__
10
#define __IPLOWRANKUPDATESYMMATRIX_HPP__
11
12
#include "
IpUtils.hpp
"
13
#include "
IpSymMatrix.hpp
"
14
#include "
IpMultiVectorMatrix.hpp
"
15
16
namespace
Ipopt
17
{
18
19
/* forward declarations */
20
class
LowRankUpdateSymMatrixSpace;
21
31
class
LowRankUpdateSymMatrix
:
public
SymMatrix
32
{
33
public
:
34
37
39
LowRankUpdateSymMatrix
(
const
LowRankUpdateSymMatrixSpace
* owner_space);
40
42
~LowRankUpdateSymMatrix
();
44
46
void
SetDiag
(
const
Vector
& D)
47
{
48
D_
= &D;
49
ObjectChanged
();
50
}
51
53
SmartPtr<const Vector>
GetDiag
()
const
54
{
55
return
D_
;
56
}
57
59
void
SetV
(
const
MultiVectorMatrix
& V)
60
{
61
V_
= &V;
62
ObjectChanged
();
63
}
64
66
SmartPtr<const MultiVectorMatrix>
GetV
()
const
67
{
68
return
V_
;
69
}
70
72
void
SetU
(
const
MultiVectorMatrix
& U)
73
{
74
U_
= &U;
75
ObjectChanged
();
76
}
77
79
SmartPtr<const MultiVectorMatrix>
GetU
()
const
80
{
81
return
U_
;
82
}
83
86
SmartPtr<const Matrix>
P_LowRank
()
const
;
87
90
SmartPtr<const VectorSpace>
LowRankVectorSpace
()
const
;
91
94
bool
ReducedDiag
()
const
;
95
96
protected
:
99
virtual
void
MultVectorImpl
(
Number
alpha,
const
Vector
&
x
,
100
Number
beta,
Vector
& y)
const
;
101
104
virtual
bool
HasValidNumbersImpl
()
const
;
105
106
virtual
void
ComputeRowAMaxImpl
(
Vector
& rows_norms,
bool
init)
const
;
107
108
virtual
void
ComputeColAMaxImpl
(
Vector
& cols_norms,
bool
init)
const
;
109
110
virtual
void
PrintImpl
(
const
Journalist
& jnlst,
111
EJournalLevel
level,
112
EJournalCategory
category,
113
const
std::string& name,
114
Index
indent,
115
const
std::string& prefix)
const
;
117
118
private
:
128
LowRankUpdateSymMatrix
();
129
131
LowRankUpdateSymMatrix
(
const
LowRankUpdateSymMatrix
&);
132
134
void
operator=
(
const
LowRankUpdateSymMatrix
&);
136
138
SmartPtr<const LowRankUpdateSymMatrixSpace>
owner_space_
;
139
141
SmartPtr<const Vector>
D_
;
142
144
SmartPtr<const MultiVectorMatrix>
V_
;
145
147
SmartPtr<const MultiVectorMatrix>
U_
;
148
};
149
151
class
LowRankUpdateSymMatrixSpace
:
public
SymMatrixSpace
152
{
153
public
:
157
LowRankUpdateSymMatrixSpace
(
Index
dim,
158
SmartPtr<const Matrix>
P_LowRank
,
159
SmartPtr<const VectorSpace>
LowRankVectorSpace
,
160
bool
reduced_diag)
161
:
162
SymMatrixSpace
(dim),
163
P_LowRank_
(P_LowRank),
164
lowrank_vector_space_
(LowRankVectorSpace),
165
reduced_diag_
(reduced_diag)
166
{
167
DBG_ASSERT
(
IsValid
(
lowrank_vector_space_
));
168
}
169
171
virtual
~LowRankUpdateSymMatrixSpace
()
172
{}
174
177
virtual
SymMatrix
*
MakeNewSymMatrix
()
const
178
{
179
return
MakeNewLowRankUpdateSymMatrix
();
180
}
181
183
LowRankUpdateSymMatrix
*
MakeNewLowRankUpdateSymMatrix
()
const
184
{
185
return
new
LowRankUpdateSymMatrix
(
this
);
186
}
187
188
SmartPtr<const Matrix>
P_LowRank
()
const
189
{
190
return
P_LowRank_
;
191
}
192
193
SmartPtr<const VectorSpace>
LowRankVectorSpace
()
const
194
{
195
return
lowrank_vector_space_
;
196
}
197
198
bool
ReducedDiag
()
const
199
{
200
return
reduced_diag_
;
201
}
202
203
private
:
213
LowRankUpdateSymMatrixSpace
();
214
216
LowRankUpdateSymMatrixSpace
(
const
LowRankUpdateSymMatrixSpace
&);
217
219
void
operator=
(
const
LowRankUpdateSymMatrixSpace
&);
221
225
SmartPtr<const Matrix>
P_LowRank_
;
226
229
SmartPtr<const VectorSpace>
lowrank_vector_space_
;
230
233
bool
reduced_diag_
;
234
};
235
236
inline
237
SmartPtr<const Matrix>
LowRankUpdateSymMatrix::P_LowRank
()
const
238
{
239
return
owner_space_
->P_LowRank();
240
}
241
242
inline
243
SmartPtr<const VectorSpace>
LowRankUpdateSymMatrix::LowRankVectorSpace
()
const
244
{
245
return
owner_space_
->LowRankVectorSpace();
246
}
247
248
inline
249
bool
LowRankUpdateSymMatrix::ReducedDiag
()
const
250
{
251
return
owner_space_
->ReducedDiag();
252
}
253
254
}
// namespace Ipopt
255
#endif
Generated on Mon Oct 21 2013 19:08:15 for Ipopt by
1.8.4