Ipopt  3.11.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SensIndexSchurData.hpp
Go to the documentation of this file.
1 // Copyright 2009, 2011 Hans Pirnay
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Date : 2009-05-08
6 
7 #ifndef __ASINDEXSCHURDATA_HPP__
8 #define __ASINDEXSCHURDATA_HPP__
9 
10 #include "SensSchurData.hpp"
11 
12 namespace Ipopt
13 {
14 
15  class IndexSchurData : public SchurData
16  {
20  public:
21 
23 
24  IndexSchurData(const std::vector<Index> idx, const std::vector<Index> val);
25 
26  virtual ~IndexSchurData();
27 
29 
30  virtual Index GetNRowsAdded() const;
31 
32  virtual void SetData_Flag(Index dim, const Index* flags, Number v=1.0);
33 
34  virtual void SetData_Flag(Index dim, const Index* flags, const Number* values);
35 
36  virtual Index SetData_Index(Index dim, const Index* index, Number v=1.0);
37 
38  virtual void SetData_List(const std::vector<Index>& list, Number v=1.0);
39 
40  virtual void GetRow(Index i, IteratesVector& v) const;
41 
42  virtual void GetMultiplyingVectors(Index i, std::vector<Index>& indices, std::vector<Number>& factors) const;
43 
44  virtual void Multiply(const IteratesVector& v, Vector& u) const;
45 
46  virtual void TransMultiply(const Vector& u, IteratesVector& v) const;
47 
48  virtual void PrintImpl(const Journalist& jnlst,
49  EJournalLevel level,
50  EJournalCategory category,
51  const std::string& name,
52  Index indent,
53  const std::string& prefix) const;
54 
64  void AddData_Flag(Index dim, Index* flags, std::vector<Index>& delta_u_sort, Index v);
65 
66  void AddData_List(std::vector<Index> cols, std::vector<Index>& delta_u_sort, Index& new_du_size, Index v);
67 
68  const std::vector<Index>* GetColIndices() const;
69 
70  private:
71 
75  Index* GetVectorLengths(const IteratesVector& v) const;
76 
77  std::vector<Index> idx_;
78  std::vector<Index> val_;
79  };
80 
81 }
82 
83 #endif