Ipopt  3.11.8
 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 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 
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