# 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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines