Ipopt  trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
SensIndexPCalculator.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-06
00006 
00007 #ifndef __ASINDEXPCALCULATOR_HPP__
00008 #define __ASINDEXPCALCULATOR_HPP__
00009 
00010 #include "SensPCalculator.hpp"
00011 
00012 namespace Ipopt
00013 {
00014   /* Forward declarations */
00015   class PColumn;
00016 
00017   class IndexPCalculator : public PCalculator
00018   {
00022   public:
00023 
00024     IndexPCalculator(SmartPtr<SensBacksolver> backsolver,
00025                      SmartPtr<SchurData> A_data);
00026 
00027     virtual ~IndexPCalculator();
00028 
00030     virtual bool InitializeImpl(const OptionsList& options,
00031                                 const std::string& prefix);
00032 
00033     virtual bool ComputeP();
00034 
00035     virtual bool GetSchurMatrix(const SmartPtr<const SchurData>& B, SmartPtr<Matrix>& S);
00036 
00037     virtual void PrintImpl(const Journalist& jnlst,
00038                            EJournalLevel level,
00039                            EJournalCategory category,
00040                            const std::string& name,
00041                            Index indent,
00042                            const std::string& prefix) const;
00043 
00044   private:
00045 
00047     Index nrows_;
00048 
00050     Index ncols_;
00051 
00052     std::map< Index, SmartPtr<PColumn> > cols_;
00053 
00054   };
00055 
00056   class PColumn : public ReferencedObject
00057   {
00061   public:
00062     PColumn(Index nrows, Number* values);
00063 
00064     virtual ~PColumn();
00065 
00066     virtual void GetSchurMatrixRows(const std::vector<Index>* row_idx_B, Number* S) const;
00067 
00068     virtual const Number* Values() const;
00069 
00070   private:
00071 
00072     Index nrows_;
00073     Number* val_;
00074   };
00075 
00076 }
00077 
00078 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines