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
IpDenseGenMatrix.hpp
Go to the documentation of this file.
1
// Copyright (C) 2005, 2009 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpDenseGenMatrix.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Andreas Waechter IBM 2005-12-24
8
9
#ifndef __IPDENSEGENMATRIX_HPP__
10
#define __IPDENSEGENMATRIX_HPP__
11
12
#include "
IpUtils.hpp
"
13
#include "
IpMatrix.hpp
"
14
#include "
IpDenseVector.hpp
"
15
#include "
IpDenseSymMatrix.hpp
"
16
17
namespace
Ipopt
18
{
19
21
class
DenseGenMatrixSpace;
22
26
class
DenseGenMatrix
:
public
Matrix
27
{
28
public
:
29
32
35
DenseGenMatrix
(
const
DenseGenMatrixSpace
* owner_space);
36
38
~DenseGenMatrix
();
40
42
SmartPtr<DenseGenMatrix>
MakeNewDenseGenMatrix
()
const
;
43
48
Number
*
Values
()
49
{
50
initialized_
=
true
;
51
ObjectChanged
();
52
return
values_
;
53
}
54
58
const
Number
*
Values
()
const
59
{
60
DBG_ASSERT
(
initialized_
);
61
return
values_
;
62
}
63
66
void
Copy
(
const
DenseGenMatrix
& M);
67
70
void
FillIdentity
(
Number
factor=1.);
71
74
void
ScaleColumns
(
const
DenseVector
& scal_vec);
75
77
void
AddMatrixProduct
(
Number
alpha,
const
DenseGenMatrix
& A,
78
bool
transA,
const
DenseGenMatrix
& B,
79
bool
transB,
Number
beta);
80
84
void
HighRankUpdateTranspose
(
Number
alpha,
85
const
MultiVectorMatrix
& V1,
86
const
MultiVectorMatrix
& V2,
87
Number
beta);
88
94
bool
ComputeCholeskyFactor
(
const
DenseSymMatrix
& M);
95
101
bool
ComputeEigenVectors
(
const
DenseSymMatrix
& M,
102
DenseVector
& Evalues);
103
109
void
CholeskyBackSolveMatrix
(
bool
trans,
Number
alpha,
110
DenseGenMatrix
& B)
const
;
111
116
void
CholeskySolveVector
(
DenseVector
& b)
const
;
117
123
void
CholeskySolveMatrix
(
DenseGenMatrix
& B)
const
;
124
127
bool
ComputeLUFactorInPlace
();
128
131
void
LUSolveMatrix
(
DenseGenMatrix
& B)
const
;
132
135
void
LUSolveVector
(
DenseVector
& b)
const
;
136
137
protected
:
140
virtual
void
MultVectorImpl
(
Number
alpha,
const
Vector
&
x
,
Number
beta,
141
Vector
&y)
const
;
142
143
virtual
void
TransMultVectorImpl
(
Number
alpha,
const
Vector
&
x
,
144
Number
beta,
Vector
& y)
const
;
145
148
virtual
bool
HasValidNumbersImpl
()
const
;
149
150
virtual
void
ComputeRowAMaxImpl
(
Vector
& rows_norms,
bool
init)
const
;
151
152
virtual
void
ComputeColAMaxImpl
(
Vector
& cols_norms,
bool
init)
const
;
153
154
virtual
void
PrintImpl
(
const
Journalist
& jnlst,
155
EJournalLevel
level,
156
EJournalCategory
category,
157
const
std::string& name,
158
Index
indent,
159
const
std::string& prefix)
const
;
161
162
163
private
:
173
DenseGenMatrix
();
174
176
DenseGenMatrix
(
const
DenseGenMatrix
&);
177
179
void
operator=
(
const
DenseGenMatrix
&);
181
182
const
DenseGenMatrixSpace
*
owner_space_
;
183
186
Number
*
values_
;
187
189
bool
initialized_
;
190
192
enum
Factorization
193
{
194
NONE
,
195
LU
,
196
CHOL
197
};
198
200
Factorization
factorization_
;
201
203
int
*
pivot_
;
204
};
205
208
class
DenseGenMatrixSpace
:
public
MatrixSpace
209
{
210
public
:
216
DenseGenMatrixSpace
(
Index
nRows,
Index
nCols);
217
219
~DenseGenMatrixSpace
()
220
{}
222
224
DenseGenMatrix
*
MakeNewDenseGenMatrix
()
const
225
{
226
return
new
DenseGenMatrix
(
this
);
227
}
228
231
virtual
Matrix
*
MakeNew
()
const
232
{
233
return
MakeNewDenseGenMatrix
();
234
}
235
236
};
237
238
inline
239
SmartPtr<DenseGenMatrix>
DenseGenMatrix::MakeNewDenseGenMatrix
()
const
240
{
241
return
owner_space_
->
MakeNewDenseGenMatrix
();
242
}
243
244
}
// namespace Ipopt
245
#endif
Generated on Mon Mar 17 2014 19:49:13 by
1.8.1.2