Ipopt Documentation  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 
13 namespace Ipopt
14 {
15 
16 /* forward declarations */
17 class GenTMatrixSpace;
18 
35 {
36 public:
40  GenTMatrix(
41  const GenTMatrixSpace* owner_space
42  );
43 
45  ~GenTMatrix();
47 
58  void SetValues(
59  const Number* Values
60  );
62 
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 
93 protected:
96  virtual void MultVectorImpl(
97  Number alpha,
98  const Vector& x,
99  Number beta,
100  Vector& y
101  ) const;
102 
103  virtual void TransMultVectorImpl(
104  Number alpha,
105  const Vector& x,
106  Number beta,
107  Vector& y
108  ) const;
109 
110  virtual bool HasValidNumbersImpl() const;
111 
112  virtual void ComputeRowAMaxImpl(
113  Vector& rows_norms,
114  bool init
115  ) const;
116 
117  virtual void ComputeColAMaxImpl(
118  Vector& cols_norms,
119  bool init
120  ) const;
121 
122  virtual void PrintImpl(
123  const Journalist& jnlst,
124  EJournalLevel level,
125  EJournalCategory category,
126  const std::string& name,
127  Index indent,
128  const std::string& prefix
129  ) const
130  {
131  PrintImplOffset(jnlst, level, category, name, indent, prefix, 0);
132  }
134 
135  void PrintImplOffset(
136  const Journalist& jnlst,
137  EJournalLevel level,
138  EJournalCategory category,
139  const std::string& name,
140  Index indent,
141  const std::string& prefix,
142  Index offset
143  ) const;
144 
145  friend class ParGenMatrix;
146 
147 private:
158  GenTMatrix();
159 
161  GenTMatrix(
162  const GenTMatrix&
163  );
164 
166  void operator=(
167  const GenTMatrix&
168  );
170 
175 
178 
181 
182 };
183 
189 {
190 public:
203  Index nRows,
204  Index nCols,
205  Index nonZeros,
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 
232  Index Nonzeros() const
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 
250 private:
257 
261  Number* AllocateInternalStorage() const;
262 
266  void FreeInternalStorage(
267  Number* values
268  ) const;
269 
270  friend class GenTMatrix;
271 };
272 
273 /* inline methods */
275 {
276  return owner_space_->Nonzeros();
277 }
278 
279 inline const Index* GenTMatrix::Irows() const
280 {
281  return owner_space_->Irows();
282 }
283 
284 inline const Index* GenTMatrix::Jcols() const
285 {
286  return owner_space_->Jcols();
287 }
288 
289 } // namespace Ipopt
290 #endif
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.
This is the matrix space for a GenTMatrix with fixed sparsity structure.
const Index * Irows() const
Row index of each non-zero element (counting starts at 1)
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
Vector Base Class.
Definition: IpVector.hpp:47
EJournalLevel
Print Level Enum.
virtual Matrix * MakeNew() const
Pure virtual method for creating a new Matrix of the corresponding type.
const Number * Values() const
Array with nonzero values (const version).
Index Nonzeros() const
Number of non-zeros in the sparse matrix.
const Index * Jcols() const
Array with Column indices (counting starts at 1)
Matrix Base Class.
Definition: IpMatrix.hpp:27
bool initialized_
Flag for Initialization.
const Index * Jcols() const
Column index of each non-zero element (counting starts at 1)
MatrixSpace base class, corresponding to the Matrix base class.
Definition: IpMatrix.hpp:326
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
const Index * Irows() const
Array with Row indices (counting starts at 1)
const GenTMatrixSpace * owner_space_
Copy of the owner space as a GenTMatrixSpace instead of a MatrixSpace.
Class for general matrices stored in triplet format.
#define IPOPTLIB_EXPORT
Class responsible for all message output.
~GenTMatrixSpace()
Destructor.
Index Nonzeros() const
Number of nonzero entries.
Number * values_
Values of nonzeros.
Number * Values()
Array with the nonzero values of this matrix (non-const version).
GenTMatrix * MakeNewGenTMatrix() const
Method for creating a new matrix of this specific type.
EJournalCategory
Category Selection Enum.