Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpGenTMatrix.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2009 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6
7#ifndef __IPGENTMATRIX_HPP__
8#define __IPGENTMATRIX_HPP__
9
10#include "IpUtils.hpp"
11#include "IpMatrix.hpp"
12
13namespace Ipopt
14{
15
16/* forward declarations */
17class GenTMatrixSpace;
18
35{
36public:
39
42 );
43
47
50
59 const Number* Values
60 );
62
65
66 Index Nonzeros() const;
67
69 const Index* Irows() const;
70
72 const Index* Jcols() const;
73
75 const Number* Values() const
76 {
77 return values_;
78 }
79
86 {
87 ObjectChanged();
88 initialized_ = true;
89 return values_;
90 }
92
93protected:
96 virtual void MultVectorImpl(
98 const Vector& x,
100 Vector& y
101 ) const;
102
105 const Vector& x,
106 Number beta,
107 Vector& y
108 ) const;
109
110 virtual bool HasValidNumbersImpl() const;
111
112 virtual void ComputeRowAMaxImpl(
114 bool init
115 ) const;
116
117 virtual void ComputeColAMaxImpl(
119 bool init
120 ) const;
121
122 virtual void PrintImpl(
123 const Journalist& jnlst,
126 const std::string& name,
128 const std::string& prefix
129 ) const
130 {
131 PrintImplOffset(jnlst, level, category, name, indent, prefix, 0);
132 }
134
136 const Journalist& jnlst,
139 const std::string& name,
141 const std::string& prefix,
143 ) const;
144
145 friend class ParGenMatrix;
146
147private:
157
159
162 const GenTMatrix&
163 );
164
167 const GenTMatrix&
168 );
170
175
178
181
182};
183
189{
190public:
193
203 Index nRows,
204 Index nCols,
206 const Index* iRows,
207 const Index* jCols
208 );
209
212 {
213 delete[] iRows_;
214 delete[] jCols_;
215 }
217
220 {
221 return new GenTMatrix(this);
222 }
223
224 virtual Matrix* MakeNew() const
225 {
226 return MakeNewGenTMatrix();
227 }
228
231
233 {
234 return nonZeros_;
235 }
236
238 const Index* Irows() const
239 {
240 return iRows_;
241 }
242
244 const Index* Jcols() const
245 {
246 return jCols_;
247 }
249
250private:
257
262
268 ) const;
269
270 friend class GenTMatrix;
271};
272
273/* inline methods */
275{
276 return owner_space_->Nonzeros();
277}
278
279inline const Index* GenTMatrix::Irows() const
280{
281 return owner_space_->Irows();
282}
283
284inline const Index* GenTMatrix::Jcols() const
285{
286 return owner_space_->Jcols();
287}
288
289} // namespace Ipopt
290#endif
Templated class which stores one entry for the CachedResult class.
This is the matrix space for a GenTMatrix with fixed sparsity structure.
GenTMatrixSpace(Index nRows, Index nCols, Index nonZeros, const Index *iRows, const Index *jCols)
Constructor, given the number of rows and columns, as well as the number of nonzeros and the position...
Number * AllocateInternalStorage() const
This method is only for the GenTMatrix to call in order to allocate internal storage.
const Index * Jcols() const
Column index of each non-zero element (counting starts at 1)
virtual Matrix * MakeNew() const
Pure virtual method for creating a new Matrix of the corresponding type.
Index Nonzeros() const
Number of non-zeros in the sparse matrix.
const Index * Irows() const
Row index of each non-zero element (counting starts at 1)
void FreeInternalStorage(Number *values) const
This method is only for the GenTMatrix to call in order to de-allocate internal storage.
~GenTMatrixSpace()
Destructor.
GenTMatrix * MakeNewGenTMatrix() const
Method for creating a new matrix of this specific type.
Class for general matrices stored in triplet format.
GenTMatrix(const GenTMatrixSpace *owner_space)
Constructor, taking the owner_space.
bool initialized_
Flag for Initialization.
virtual void PrintImpl(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix) const
Print detailed information about the matrix.
virtual void TransMultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix(transpose) vector multiply.
virtual bool HasValidNumbersImpl() const
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
void PrintImplOffset(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix, Index offset) const
void operator=(const GenTMatrix &)
Default Assignment Operator.
Number * Values()
Array with the nonzero values of this matrix (non-const version).
virtual void ComputeRowAMaxImpl(Vector &rows_norms, bool init) const
Compute the max-norm of the rows in the matrix.
void SetValues(const Number *Values)
Set values of nonzero elements.
Number * values_
Values of nonzeros.
Index Nonzeros() const
Number of nonzero entries.
GenTMatrix()
Default Constructor.
const Index * Jcols() const
Array with Column indices (counting starts at 1)
GenTMatrix(const GenTMatrix &)
Copy Constructor.
const Number * Values() const
Array with nonzero values (const version).
~GenTMatrix()
Destructor.
virtual void ComputeColAMaxImpl(Vector &cols_norms, bool init) const
Compute the max-norm of the columns in the matrix.
const Index * Irows() const
Array with Row indices (counting starts at 1)
virtual void MultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix-vector multiply.
const GenTMatrixSpace * owner_space_
Copy of the owner space as a GenTMatrixSpace instead of a MatrixSpace.
Class responsible for all message output.
MatrixSpace base class, corresponding to the Matrix base class.
Definition IpMatrix.hpp:327
Matrix Base Class.
Definition IpMatrix.hpp:28
Vector Base Class.
Definition IpVector.hpp:48
#define IPOPTLIB_EXPORT
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:20
EJournalCategory
Category Selection Enum.
EJournalLevel
Print Level Enum.
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17