Main Page
Namespaces
Classes
Files
File List
File Members
var
build
temp
tmp.niCloInx4p
4.0-0-0
coinor-ipopt
coinor-ipopt-3.10.2
Ipopt
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 Mar 17 2014 19:49:13 by
1.8.1.2