IpSparseSymLinearSolverInterface.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2006 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpSparseSymLinearSolverInterface.hpp 759 2006-07-07 03:07:08Z andreasw $
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2004-03-17
00008 
00009 #ifndef __IPSPARSESYMLINEARSOLVERINTERFACE_HPP__
00010 #define __IPSPARSESYMLINEARSOLVERINTERFACE_HPP__
00011 
00012 #include "IpUtils.hpp"
00013 #include "IpAlgStrategy.hpp"
00014 #include "IpSymLinearSolver.hpp"
00015 
00016 namespace Ipopt
00017 {
00018 
00098   class SparseSymLinearSolverInterface: public AlgorithmStrategyObject
00099   {
00100   public:
00102     enum EMatrixFormat {
00104       Triplet_Format,
00107       CSR_Format_0_Offset,
00110       CSR_Format_1_Offset,
00113       Dense_Format 
00114     };
00117     SparseSymLinearSolverInterface()
00118     {}
00119 
00120     virtual ~SparseSymLinearSolverInterface()
00121     {}
00123 
00125     virtual bool InitializeImpl(const OptionsList& options,
00126                                 const std::string& prefix) = 0;
00127 
00136     virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
00137         const Index* ia,
00138         const Index* ja) = 0;
00139 
00146     virtual double* GetValuesArrayPtr() = 0;
00147 
00180     virtual ESymSolverStatus MultiSolve(bool new_matrix,
00181                                         const Index* ia,
00182                                         const Index* ja,
00183                                         Index nrhs,
00184                                         double* rhs_vals,
00185                                         bool check_NegEVals,
00186                                         Index numberOfNegEVals)=0;
00187 
00194     virtual Index NumberOfNegEVals() const =0;
00196 
00197     //* @name Options of Linear solver */
00199 
00205     virtual bool IncreaseQuality() =0;
00206 
00210     virtual bool ProvidesInertia() const =0;
00211 
00215     virtual EMatrixFormat MatrixFormat() const =0;
00217   };
00218 
00219 
00220 } // namespace Ipopt
00221 
00222 #endif

Generated on Fri Sep 26 07:44:12 2008 for SimTKcore by  doxygen 1.5.6