Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #ifndef __ASINDEXSCHURDATA_HPP__
00008 #define __ASINDEXSCHURDATA_HPP__
00009
00010 #include "SensSchurData.hpp"
00011
00012 namespace Ipopt
00013 {
00014
00015 class IndexSchurData : public SchurData
00016 {
00020 public:
00021
00022 IndexSchurData();
00023
00024 IndexSchurData(const std::vector<Index> idx, const std::vector<Index> val);
00025
00026 virtual ~IndexSchurData();
00027
00028 virtual SmartPtr<SchurData> MakeNewSchurDataCopy() const;
00029
00030 virtual Index GetNRowsAdded() const;
00031
00032 virtual void SetData_Flag(Index dim, const Index* flags, Number v=1.0);
00033
00034 virtual void SetData_Flag(Index dim, const Index* flags, const Number* values);
00035
00036 virtual Index SetData_Index(Index dim, const Index* index, Number v=1.0);
00037
00038 virtual void SetData_List(const std::vector<Index>& list, Number v=1.0);
00039
00040 virtual void GetRow(Index i, IteratesVector& v) const;
00041
00042 virtual void GetMultiplyingVectors(Index i, std::vector<Index>& indices, std::vector<Number>& factors) const;
00043
00044 virtual void Multiply(const IteratesVector& v, Vector& u) const;
00045
00046 virtual void TransMultiply(const Vector& u, IteratesVector& v) const;
00047
00048 virtual void PrintImpl(const Journalist& jnlst,
00049 EJournalLevel level,
00050 EJournalCategory category,
00051 const std::string& name,
00052 Index indent,
00053 const std::string& prefix) const;
00054
00064 void AddData_Flag(Index dim, Index* flags, std::vector<Index>& delta_u_sort, Index v);
00065
00066 void AddData_List(std::vector<Index> cols, std::vector<Index>& delta_u_sort, Index& new_du_size, Index v);
00067
00068 const std::vector<Index>* GetColIndices() const;
00069
00070 private:
00071
00075 Index* GetVectorLengths(const IteratesVector& v) const;
00076
00077 std::vector<Index> idx_;
00078 std::vector<Index> val_;
00079 };
00080
00081 }
00082
00083 #endif