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
IpExpandedMultiVectorMatrix.hpp
Go to the documentation of this file.
1
// Copyright (C) 2009 International Business Machines and others.
2
// All Rights Reserved.
3
// This code is published under the Eclipse Public License.
4
//
5
// $Id: IpExpandedMultiVectorMatrix.hpp 1861 2010-12-21 21:34:47Z andreasw $
6
//
7
// Authors: Andreas Waechter IBM 2009-11-05
8
9
#ifndef __IPEXPANDEDMULTIVECTORMATRIX_HPP__
10
#define __IPEXPANDEDMULTIVECTORMATRIX_HPP__
11
12
#include "
IpUtils.hpp
"
13
#include "
IpMatrix.hpp
"
14
#include "
IpExpansionMatrix.hpp
"
15
16
namespace
Ipopt
17
{
18
20
class
ExpandedMultiVectorMatrixSpace;
21
29
class
ExpandedMultiVectorMatrix
:
public
Matrix
30
{
31
public
:
32
35
38
ExpandedMultiVectorMatrix
(
const
ExpandedMultiVectorMatrixSpace
* owner_space);
39
41
virtual
~ExpandedMultiVectorMatrix
()
42
{}
44
45
SmartPtr<ExpandedMultiVectorMatrix>
MakeNewExpandedMultiVectorMatrix
()
const
;
46
49
void
SetVector
(
Index
i,
SmartPtr<const Vector>
vec);
50
52
inline
SmartPtr<const Vector>
GetVector
(
Index
i)
const
53
{
54
DBG_ASSERT
(i <
NRows
());
55
return
vecs_
[i];
56
}
57
59
SmartPtr<const VectorSpace>
RowVectorSpace
()
const
;
60
62
SmartPtr<const ExpandedMultiVectorMatrixSpace>
63
ExpandedMultiVectorMatrixOwnerSpace
()
const
;
64
67
SmartPtr<const ExpansionMatrix>
GetExpansionMatrix
()
const
;
68
69
protected
:
72
virtual
void
MultVectorImpl
(
Number
alpha,
const
Vector
&
x
,
Number
beta,
73
Vector
&y)
const
;
74
75
virtual
void
TransMultVectorImpl
(
Number
alpha,
const
Vector
&
x
,
76
Number
beta,
Vector
& y)
const
;
77
80
virtual
bool
HasValidNumbersImpl
()
const
;
81
82
virtual
void
ComputeRowAMaxImpl
(
Vector
& rows_norms,
bool
init)
const
;
83
84
virtual
void
ComputeColAMaxImpl
(
Vector
& cols_norms,
bool
init)
const
;
85
86
virtual
void
PrintImpl
(
const
Journalist
& jnlst,
87
EJournalLevel
level,
88
EJournalCategory
category,
89
const
std::string& name,
90
Index
indent,
91
const
std::string& prefix)
const
;
93
94
95
private
:
105
ExpandedMultiVectorMatrix
();
106
108
ExpandedMultiVectorMatrix
(
const
ExpandedMultiVectorMatrix
&);
109
111
void
operator=
(
const
ExpandedMultiVectorMatrix
&);
113
114
const
ExpandedMultiVectorMatrixSpace
*
owner_space_
;
115
117
std::vector<SmartPtr<const Vector> >
vecs_
;
118
119
};
120
123
class
ExpandedMultiVectorMatrixSpace
:
public
MatrixSpace
124
{
125
public
:
131
ExpandedMultiVectorMatrixSpace
(
Index
nrows,
132
const
VectorSpace
& vec_space,
133
SmartPtr<const ExpansionMatrix>
exp_matrix);
135
virtual
~ExpandedMultiVectorMatrixSpace
()
136
{}
138
140
ExpandedMultiVectorMatrix
*
MakeNewExpandedMultiVectorMatrix
()
const
141
{
142
return
new
ExpandedMultiVectorMatrix
(
this
);
143
}
144
147
virtual
Matrix
*
MakeNew
()
const
148
{
149
return
MakeNewExpandedMultiVectorMatrix
();
150
}
151
153
SmartPtr<const VectorSpace>
RowVectorSpace
()
const
154
{
155
return
vec_space_
;
156
}
157
158
SmartPtr<const ExpansionMatrix>
GetExpansionMatrix
()
const
159
{
160
return
exp_matrix_
;
161
}
162
163
private
:
164
SmartPtr<const VectorSpace>
vec_space_
;
165
166
SmartPtr<const ExpansionMatrix>
exp_matrix_
;
167
};
168
169
inline
170
SmartPtr<ExpandedMultiVectorMatrix>
ExpandedMultiVectorMatrix::MakeNewExpandedMultiVectorMatrix
()
const
171
{
172
return
owner_space_
->
MakeNewExpandedMultiVectorMatrix
();
173
}
174
175
inline
176
SmartPtr<const VectorSpace>
ExpandedMultiVectorMatrix::RowVectorSpace
()
const
177
{
178
return
owner_space_
->
RowVectorSpace
();
179
}
180
181
inline
182
SmartPtr<const ExpansionMatrix>
ExpandedMultiVectorMatrix::GetExpansionMatrix
()
const
183
{
184
return
owner_space_
->
GetExpansionMatrix
();
185
}
186
187
inline
188
SmartPtr<const ExpandedMultiVectorMatrixSpace>
189
ExpandedMultiVectorMatrix::ExpandedMultiVectorMatrixOwnerSpace
()
const
190
{
191
return
owner_space_
;
192
}
193
194
}
// namespace Ipopt
195
#endif
Generated on Mon Oct 21 2013 19:08:15 for Ipopt by
1.8.4