/home/coin/SVN-release/Ipopt-3.5.3/Ipopt/src/LinAlg/TMatrices/IpTripletHelper.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: IpTripletHelper.hpp 1327 2008-09-18 19:01:17Z andreasw $
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2004-08-13
00008 
00009 #ifndef __IPTRIPLETHELPER_HPP__
00010 #define __IPTRIPLETHELPER_HPP__
00011 
00012 #include "IpTypes.hpp"
00013 #include "IpException.hpp"
00014 
00015 namespace Ipopt
00016 {
00017 
00019   class Matrix;
00020   class GenTMatrix;
00021   class SymTMatrix;
00022   class DiagMatrix;
00023   class IdentityMatrix;
00024   class ExpansionMatrix;
00025   class ScaledMatrix;
00026   class SymScaledMatrix;
00027   class SumMatrix;
00028   class SumSymMatrix;
00029   class ZeroMatrix;
00030   class CompoundMatrix;
00031   class CompoundSymMatrix;
00032   class TransposeMatrix;
00033   class Vector;
00034 
00035   class TripletHelper
00036   {
00037   public:
00041     static Index GetNumberEntries(const Matrix& matrix);
00042 
00044     static void FillRowCol(Index n_entries, const Matrix& matrix, Index* iRow, Index* jCol, Index row_offset=0, Index col_offset=0);
00045 
00047     static void FillValues(Index n_entries, const Matrix& matrix, Number* values);
00048 
00050     static void FillValuesFromVector(Index dim, const Vector& vector, Number* values);
00051 
00053     static void PutValuesInVector(Index dim, const double* values, Vector& vector);
00055 
00056     DECLARE_STD_EXCEPTION(UNKNOWN_MATRIX_TYPE);
00057     DECLARE_STD_EXCEPTION(UNKNOWN_VECTOR_TYPE);
00058 
00059   private:
00061     static Index GetNumberEntries_(const SumMatrix& matrix);
00062 
00064     static Index GetNumberEntries_(const SumSymMatrix& matrix);
00065 
00067     static Index GetNumberEntries_(const CompoundMatrix& matrix);
00068 
00070     static Index GetNumberEntries_(const CompoundSymMatrix& matrix);
00071 
00073     static Index GetNumberEntries_(const TransposeMatrix& matrix);
00074 
00075     static void FillRowCol_(Index n_entries, const GenTMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00076 
00077     static void FillValues_(Index n_entries, const GenTMatrix& matrix, Number* values);
00078 
00079     static void FillRowCol_(Index n_entries, const SymTMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00080 
00081     static void FillValues_(Index n_entries, const SymTMatrix& matrix, Number* values);
00082 
00083     static void FillRowCol_(Index n_entries, const DiagMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00084 
00085     static void FillValues_(Index n_entries, const DiagMatrix& matrix, Number* values);
00086 
00087     static void FillRowCol_(Index n_entries, const IdentityMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00088 
00089     static void FillValues_(Index n_entries, const IdentityMatrix& matrix, Number* values);
00090 
00091     static void FillRowCol_(Index n_entries, const ExpansionMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00092 
00093     static void FillValues_(Index n_entries, const ExpansionMatrix& matrix, Number* values);
00094 
00095     static void FillRowCol_(Index n_entries, const SumMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00096 
00097     static void FillValues_(Index n_entries, const SumMatrix& matrix, Number* values);
00098 
00099     static void FillRowCol_(Index n_entries, const SumSymMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00100 
00101     static void FillValues_(Index n_entries, const SumSymMatrix& matrix, Number* values);
00102 
00103     static void FillRowCol_(Index n_entries, const CompoundMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00104 
00105     static void FillValues_(Index n_entries, const CompoundMatrix& matrix, Number* values);
00106 
00107     static void FillRowCol_(Index n_entries, const CompoundSymMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00108 
00109     static void FillValues_(Index n_entries, const CompoundSymMatrix& matrix, Number* values);
00110 
00111     static void FillRowCol_(Index n_entries, const ScaledMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00112 
00113     static void FillValues_(Index n_entries, const ScaledMatrix& matrix, Number* values);
00114 
00115     static void FillRowCol_(Index n_entries, const SymScaledMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00116 
00117     static void FillValues_(Index n_entries, const SymScaledMatrix& matrix, Number* values);
00118 
00119     static void FillRowCol_(Index n_entries, const TransposeMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
00120 
00121     static void FillValues_(Index n_entries, const TransposeMatrix& matrix, Number* values);
00122 
00123   };
00124 } // namespace Ipopt
00125 
00126 #endif

Generated on Sat Sep 20 03:01:03 2008 by  doxygen 1.4.7