/home/coin/SVN-release/CoinAll-1.1.0/Ipopt/src/Algorithm/LinearSolvers/IpSparseSymLinearSolverInterface.hpp

Go to the documentation of this file.
00001 // Copyright (C) 2004, 2007 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpSparseSymLinearSolverInterface.hpp 959 2007-04-19 22:45:03Z 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
00111     };
00114     SparseSymLinearSolverInterface()
00115     {}
00116 
00117     virtual ~SparseSymLinearSolverInterface()
00118     {}
00120 
00122     virtual bool InitializeImpl(const OptionsList& options,
00123                                 const std::string& prefix) = 0;
00124 
00133     virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
00134         const Index* ia,
00135         const Index* ja) = 0;
00136 
00143     virtual double* GetValuesArrayPtr() = 0;
00144 
00177     virtual ESymSolverStatus MultiSolve(bool new_matrix,
00178                                         const Index* ia,
00179                                         const Index* ja,
00180                                         Index nrhs,
00181                                         double* rhs_vals,
00182                                         bool check_NegEVals,
00183                                         Index numberOfNegEVals)=0;
00184 
00191     virtual Index NumberOfNegEVals() const =0;
00193 
00194     //* @name Options of Linear solver */
00196 
00202     virtual bool IncreaseQuality() =0;
00203 
00207     virtual bool ProvidesInertia() const =0;
00208 
00212     virtual EMatrixFormat MatrixFormat() const =0;
00214 
00220     virtual bool ProvidesDegeneracyDetection() const
00221     {
00222       return false;
00223     }
00226     virtual ESymSolverStatus DetermineDependentRows(const Index* ia,
00227         const Index* ja,
00228         std::list<Index>& c_deps)
00229     {
00230       return SYMSOLVER_FATAL_ERROR;
00231     }
00232   };
00233 
00234 } // namespace Ipopt
00235 
00236 #endif

Generated on Sun Nov 14 14:06:35 2010 for Coin-All by  doxygen 1.4.7