/build/buildd/coinor-ipopt-3.10.1/Ipopt/contrib/sIPOPT/src/SensIndexSchurData.hpp
Go to the documentation of this file.
00001 // Copyright 2009, 2011 Hans Pirnay
00002 // All Rights Reserved.
00003 // This code is published under the Eclipse Public License.
00004 //
00005 // Date   : 2009-05-08
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