Ipopt  3.12.12
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 2269 2013-05-05 11:32:40Z stefan $
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 
15 namespace 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 
54  ~SymTMatrix();
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 
88  Number* Values();
93  const Number* Values() const;
95 
99  void FillStruct(ipfint* Irn, ipfint* Jcn) const;
100 
102  void FillValues(Number* Values) const;
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:
135  SymTMatrix();
136 
138  SymTMatrix(const SymTMatrix&);
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 
183  virtual SymMatrix* MakeNewSymMatrix() const
184  {
185  return MakeNewSymTMatrix();
186  }
187 
190  {
191  return new SymTMatrix(this);
192  }
193 
197  Index Nonzeros() const
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
240  const Index* SymTMatrix::Irows() const
241  {
242  return owner_space_->Irows();
243  }
244 
245  inline
246  const Index* SymTMatrix::Jcols() const
247  {
248  return owner_space_->Jcols();
249  }
250 
251 
252 } // namespace Ipopt
253 #endif
virtual bool HasValidNumbersImpl() const
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
Number * x
Input: Starting point Output: Optimal solution.
Number * AllocateInternalStorage() const
Allocate internal storage for the SymTMatrix values.
FORTRAN_INTEGER_TYPE ipfint
Definition: IpTypes.hpp:26
virtual void MultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix-vector multiply.
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Vector Base Class.
Definition: IpVector.hpp:47
virtual SymMatrix * MakeNewSymMatrix() const
Overloaded MakeNew method for the sYMMatrixSpace base class.
EJournalLevel
Print Level Enum.
void FillStruct(ipfint *Irn, ipfint *Jcn) const
Copy the nonzero structure into provided space.
SymTMatrix * MakeNewSymTMatrix() const
Method for creating a new matrix of this specific type.
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
const Index * Irows() const
Obtain pointer to the internal Index array irn_ without the intention to change the matrix data (USE ...
virtual void ComputeRowAMaxImpl(Vector &rows_norms, bool init) const
Compute the max-norm of the rows in the matrix.
Index Nonzeros() const
Number of nonzero entries.
~SymTMatrix()
Destructor.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
const Index * Jcols() const
Column index of each non-zero element.
Index Nonzeros() const
Number of non-zeros in the sparse matrix.
void SetValues(const Number *Values)
Set values of nonzero elements.
void operator=(const SymTMatrix &)
Overloaded Equals Operator.
SymMatrixSpace base class, corresponding to the SymMatrix base class.
Definition: IpSymMatrix.hpp:81
Class responsible for all message output.
const Index * Jcols() const
Obtain pointer to the internal Index array jcn_ without the intention to change the matrix data (USE ...
Class for symmetric matrices stored in triplet format.
const Index * Irows() const
Row index of each non-zero element.
const SymTMatrixSpace * owner_space_
Copy of the owner_space ptr as a SymTMatrixSpace insteaqd of a MatrixSpace.
Number * Values()
Obtain pointer to the internal Number array values_ with the intention to change the matrix data (USE...
void FillValues(Number *Values) const
Copy the value data into provided space.
This is the matrix space for a SymTMatrix with fixed sparsity structure.
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.
EJournalCategory
Category Selection Enum.
~SymTMatrixSpace()
Destructor.
bool initialized_
Flag for Initialization.
SymTMatrix()
Default Constructor.
Number * values_
Values of nonzeros.
void FreeInternalStorage(Number *values) const
Deallocate internal storage for the SymTMatrix values.
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...