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
IpDenseSymMatrix.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: IpDenseSymMatrix.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Andreas Waechter IBM 2005-12-25
8
9
#ifndef __IPDENSESYMMATRIX_HPP__
10
#define __IPDENSESYMMATRIX_HPP__
11
12
#include "
IpUtils.hpp
"
13
#include "
IpSymMatrix.hpp
"
14
#include "
IpMultiVectorMatrix.hpp
"
15
#include "
IpDenseVector.hpp
"
16
17
namespace
Ipopt
18
{
19
21
class
DenseSymMatrixSpace;
22
25
class
DenseGenMatrix;
26
31
class
DenseSymMatrix
:
public
SymMatrix
32
{
33
public
:
34
37
40
DenseSymMatrix
(
const
DenseSymMatrixSpace
* owner_space);
41
43
~DenseSymMatrix
();
45
47
SmartPtr<DenseSymMatrix>
MakeNewDenseSymMatrix
()
const
;
48
53
Number
*
Values
()
54
{
55
ObjectChanged
();
56
initialized_
=
true
;
57
return
values_
;
58
}
59
63
const
Number
*
Values
()
const
64
{
65
DBG_ASSERT
(
initialized_
);
66
return
values_
;
67
}
68
70
void
FillIdentity
(
Number
factor=1.);
71
74
void
AddMatrix
(
Number
alpha,
const
DenseSymMatrix
& A,
Number
beta);
75
79
void
HighRankUpdate
(
bool
trans,
Number
alpha,
const
DenseGenMatrix
& V,
80
Number
beta);
81
85
void
HighRankUpdateTranspose
(
Number
alpha,
86
const
MultiVectorMatrix
& V1,
87
const
MultiVectorMatrix
& V2,
88
Number
beta);
89
95
void
SpecialAddForLMSR1
(
const
DenseVector
& D,
const
DenseGenMatrix
& L);
96
97
protected
:
100
virtual
void
MultVectorImpl
(
Number
alpha,
const
Vector
&
x
,
Number
beta,
101
Vector
&y)
const
;
102
105
virtual
bool
HasValidNumbersImpl
()
const
;
106
107
virtual
void
ComputeRowAMaxImpl
(
Vector
& rows_norms,
bool
init)
const
;
108
109
virtual
void
PrintImpl
(
const
Journalist
& jnlst,
110
EJournalLevel
level,
111
EJournalCategory
category,
112
const
std::string& name,
113
Index
indent,
114
const
std::string& prefix)
const
;
116
117
118
private
:
128
DenseSymMatrix
();
129
131
DenseSymMatrix
(
const
DenseSymMatrix
&);
132
134
void
operator=
(
const
DenseSymMatrix
&);
136
137
const
DenseSymMatrixSpace
*
owner_space_
;
138
141
Number
*
values_
;
142
144
bool
initialized_
;
145
};
146
149
class
DenseSymMatrixSpace
:
public
SymMatrixSpace
150
{
151
public
:
157
DenseSymMatrixSpace
(
Index
nDim);
158
160
~DenseSymMatrixSpace
()
161
{}
163
165
DenseSymMatrix
*
MakeNewDenseSymMatrix
()
const
166
{
167
return
new
DenseSymMatrix
(
this
);
168
}
169
172
virtual
SymMatrix
*
MakeNewSymMatrix
()
const
173
{
174
return
MakeNewDenseSymMatrix
();
175
}
176
177
};
178
179
inline
180
SmartPtr<DenseSymMatrix>
DenseSymMatrix::MakeNewDenseSymMatrix
()
const
181
{
182
return
owner_space_
->
MakeNewDenseSymMatrix
();
183
}
184
185
}
// namespace Ipopt
186
#endif
Generated on Mon Oct 21 2013 19:08:15 for Ipopt by
1.8.4