Ipopt 3.11.9
Loading...
Searching...
No Matches
IpSymTMatrix.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2006 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// $Id: IpSymTMatrix.hpp 1861 2010-12-21 21:34:47Z andreasw $
6//
7// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9#ifndef __IPSYMTMATRIX_HPP__
10#define __IPSYMTMATRIX_HPP__
11
12#include "IpUtils.hpp"
13#include "IpSymMatrix.hpp"
14
15namespace Ipopt
16{
17
18 /* forward declarations */
19 class SymTMatrixSpace;
20
42 class SymTMatrix : public SymMatrix
43 {
44 public:
45
48
51 SymTMatrix(const SymTMatrixSpace* owner_space);
52
56
64 void SetValues(const Number* Values);
66
70 Index Nonzeros() const;
71
76 const Index* Irows() const;
77
82 const Index* Jcols() const;
83
93 const Number* Values() const;
95
99 void FillStruct(ipfint* Irn, ipfint* Jcn) const;
100
104
105 protected:
108 virtual void MultVectorImpl(Number alpha, const Vector& x, Number beta,
109 Vector& y) const;
110
113 virtual bool HasValidNumbersImpl() const;
114
115 virtual void ComputeRowAMaxImpl(Vector& rows_norms, bool init) const;
116
117 virtual void PrintImpl(const Journalist& jnlst,
118 EJournalLevel level,
119 EJournalCategory category,
120 const std::string& name,
121 Index indent,
122 const std::string& prefix) const;
124
125 private:
136
139
141 void operator=(const SymTMatrix&);
143
148
151
154
155 };
156
162 {
163 public:
174 SymTMatrixSpace(Index dim, Index nonZeros, const Index* iRows,
175 const Index* jCols);
176
180
184 {
185 return MakeNewSymTMatrix();
186 }
187
190 {
191 return new SymTMatrix(this);
192 }
193
198 {
199 return nonZeros_;
200 }
201
203 const Index* Irows() const
204 {
205 return iRows_;
206 }
207
209 const Index* Jcols() const
210 {
211 return jCols_;
212 }
214
215 private:
220
222 void FreeInternalStorage(Number* values) const;
224
228
229 friend class SymTMatrix;
230 };
231
232 /* Inline Methods */
233 inline
235 {
236 return owner_space_->Nonzeros();
237 }
238
239 inline
241 {
242 return owner_space_->Irows();
243 }
244
245 inline
247 {
248 return owner_space_->Jcols();
249 }
250
251
252} // namespace Ipopt
253#endif
Number * x
Input: Starting point Output: Optimal solution.
FORTRAN_INTEGER_TYPE ipfint
Definition IpTypes.hpp:26
Class responsible for all message output.
SymMatrixSpace base class, corresponding to the SymMatrix base class.
This is the base class for all derived symmetric matrix types.
This is the matrix space for a SymTMatrix with fixed sparsity structure.
Index Nonzeros() const
Number of non-zeros in the sparse matrix.
void FreeInternalStorage(Number *values) const
Deallocate internal storage for the SymTMatrix values.
~SymTMatrixSpace()
Destructor.
SymTMatrixSpace(Index dim, Index nonZeros, const Index *iRows, const Index *jCols)
Constructor, given the number of rows and columns (both as dim), as well as the number of nonzeros an...
const Index * Irows() const
Row index of each non-zero element.
virtual SymMatrix * MakeNewSymMatrix() const
Overloaded MakeNew method for the sYMMatrixSpace base class.
SymTMatrix * MakeNewSymTMatrix() const
Method for creating a new matrix of this specific type.
const Index * Jcols() const
Column index of each non-zero element.
Number * AllocateInternalStorage() const
Allocate internal storage for the SymTMatrix values.
Class for symmetric matrices stored in triplet format.
void operator=(const SymTMatrix &)
Overloaded Equals Operator.
const Index * Jcols() const
Obtain pointer to the internal Index array jcn_ without the intention to change the matrix data (USE ...
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 ComputeRowAMaxImpl(Vector &rows_norms, bool init) const
Compute the max-norm of the rows in the matrix.
const SymTMatrixSpace * owner_space_
Copy of the owner_space ptr as a SymTMatrixSpace insteaqd of a MatrixSpace.
virtual bool HasValidNumbersImpl() const
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
const Number * Values() const
Obtain pointer to the internal Number array values_ without the intention to change the matrix data (...
Index Nonzeros() const
Number of nonzero entries.
void FillStruct(ipfint *Irn, ipfint *Jcn) const
Copy the nonzero structure into provided space.
Number * values_
Values of nonzeros.
~SymTMatrix()
Destructor.
const Index * Irows() const
Obtain pointer to the internal Index array irn_ without the intention to change the matrix data (USE ...
Number * Values()
Obtain pointer to the internal Number array values_ with the intention to change the matrix data (USE...
SymTMatrix(const SymTMatrixSpace *owner_space)
Constructor, taking the corresponding matrix space.
bool initialized_
Flag for Initialization.
SymTMatrix()
Default Constructor.
virtual void MultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix-vector multiply.
void SetValues(const Number *Values)
Set values of nonzero elements.
void FillValues(Number *Values) const
Copy the value data into provided space.
SymTMatrix(const SymTMatrix &)
Copy Constructor.
Vector Base Class.
Definition IpVector.hpp:48
EJournalCategory
Category Selection Enum.
int Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:19
EJournalLevel
Print Level Enum.
double Number
Type of all numbers.
Definition IpTypes.hpp:17