• Main Page
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

/build/buildd/coinor-ipopt-3.8.3/Ipopt/src/LinAlg/IpIdentityMatrix.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2008 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpIdentityMatrix.hpp 1280 2008-08-10 21:19:31Z andreasw $
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
00008 
00009 #ifndef __IPIDENTITYMATRIX_HPP__
00010 #define __IPIDENTITYMATRIX_HPP__
00011 
00012 #include "IpUtils.hpp"
00013 #include "IpSymMatrix.hpp"
00014 
00015 namespace Ipopt
00016 {
00017 
00021   class IdentityMatrix : public SymMatrix
00022   {
00023   public:
00024 
00027 
00031     IdentityMatrix(const SymMatrixSpace* owner_space);
00032 
00034     ~IdentityMatrix();
00036 
00038     void SetFactor(Number factor)
00039     {
00040       factor_ = factor;
00041     }
00042 
00044     Number GetFactor() const
00045     {
00046       return factor_;
00047     }
00048 
00050     Index Dim() const;
00051 
00052   protected:
00055     virtual void MultVectorImpl(Number alpha, const Vector& x,
00056                                 Number beta, Vector& y) const;
00057 
00058     virtual void AddMSinvZImpl(Number alpha, const Vector& S,
00059                                const Vector& Z, Vector& X) const;
00060 
00063     virtual bool HasValidNumbersImpl() const;
00064 
00065     virtual void ComputeRowAMaxImpl(Vector& rows_norms, bool init) const;
00066 
00067     virtual void PrintImpl(const Journalist& jnlst,
00068                            EJournalLevel level,
00069                            EJournalCategory category,
00070                            const std::string& name,
00071                            Index indent,
00072                            const std::string& prefix) const;
00074 
00075   private:
00085     IdentityMatrix();
00086 
00088     IdentityMatrix(const IdentityMatrix&);
00089 
00091     void operator=(const IdentityMatrix&);
00093 
00095     Number factor_;
00096   };
00097 
00099   class IdentityMatrixSpace : public SymMatrixSpace
00100   {
00101   public:
00105     IdentityMatrixSpace(Index dim)
00106         :
00107         SymMatrixSpace(dim)
00108     {}
00109 
00111     virtual ~IdentityMatrixSpace()
00112     {}
00114 
00117     virtual SymMatrix* MakeNewSymMatrix() const
00118     {
00119       return MakeNewIdentityMatrix();
00120     }
00121 
00123     IdentityMatrix* MakeNewIdentityMatrix() const
00124     {
00125       return new IdentityMatrix(this);
00126     }
00127 
00128   private:
00138     IdentityMatrixSpace();
00139 
00141     IdentityMatrixSpace(const IdentityMatrixSpace&);
00142 
00144     void operator=(const IdentityMatrixSpace&);
00146   };
00147 
00148 } // namespace Ipopt
00149 #endif

Generated on Sat Oct 16 2010 02:54:51 by  doxygen 1.7.1