Main Page
Namespaces
Classes
Files
File List
File Members
build
buildd
coinor-ipopt-3.10.2
Ipopt
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 Fri Jun 29 2012 06:35:13 by
1.8.1.1