/home/coin/SVN-release/CoinAll-1.1.0/Ipopt/src/Algorithm/LinearSolvers/IpMa27TSolverInterface.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: IpMa27TSolverInterface.hpp 832 2007-01-30 21:41:35Z andreasw $
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2005-03-17
00008 
00009 #ifndef __IPMA27TSOLVERINTERFACE_HPP__
00010 #define __IPMA27TSOLVERINTERFACE_HPP__
00011 
00012 #include "IpSparseSymLinearSolverInterface.hpp"
00013 
00014 namespace Ipopt
00015 {
00019   class Ma27TSolverInterface: public SparseSymLinearSolverInterface
00020   {
00021   public:
00025     Ma27TSolverInterface();
00026 
00028     virtual ~Ma27TSolverInterface();
00030 
00032     bool InitializeImpl(const OptionsList& options,
00033                         const std::string& prefix);
00034 
00035 
00043     virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
00044         const Index *airn,
00045         const Index *ajcn);
00046 
00052     virtual double* GetValuesArrayPtr();
00053 
00057     virtual ESymSolverStatus MultiSolve(bool new_matrix,
00058                                         const Index* airn,
00059                                         const Index* ajcn,
00060                                         Index nrhs,
00061                                         double* rhs_vals,
00062                                         bool check_NegEVals,
00063                                         Index numberOfNegEVals);
00064 
00071     virtual Index NumberOfNegEVals() const;
00073 
00074     //* @name Options of Linear solver */
00076 
00081     virtual bool IncreaseQuality();
00082 
00086     virtual bool ProvidesInertia() const
00087     {
00088       return true;
00089     }
00093     EMatrixFormat MatrixFormat() const
00094     {
00095       return Triplet_Format;
00096     }
00098 
00101     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00103 
00104   private:
00114     Ma27TSolverInterface(const Ma27TSolverInterface&);
00115 
00117     void operator=(const Ma27TSolverInterface&);
00119 
00123     Index dim_;
00124 
00126     Index nonzeros_;
00128 
00132     Index negevals_;
00134 
00139     bool initialized_;
00142     bool pivtol_changed_;
00146     bool refactorize_;
00148 
00152     Number pivtol_;
00153 
00155     Number pivtolmax_;
00156 
00158     Number liw_init_factor_;
00160     Number la_init_factor_;
00162     Number meminc_factor_;
00165     bool warm_start_same_structure_;
00168     bool skip_inertia_check_;
00171     bool ignore_singularity_;
00173 
00179     ipfint icntl_[30];
00181     double cntl_[5];
00182 
00184     ipfint liw_;
00186     ipfint* iw_;
00187 
00189     ipfint* ikeep_;
00191     ipfint nsteps_;
00193     ipfint maxfrt_;
00194 
00196     ipfint la_;
00198     double* a_;
00199 
00202     bool la_increase_;
00205     bool liw_increase_;
00207 
00214     ESymSolverStatus SymbolicFactorization(const Index* airn,
00215                                            const Index* ajcn);
00216 
00221     ESymSolverStatus Factorization(const Index* airn,
00222                                    const Index* ajcn,
00223                                    bool check_NegEVals,
00224                                    Index numberOfNegEVals);
00225 
00228     ESymSolverStatus Backsolve(Index nrhs,
00229                                double *rhs_vals);
00231   };
00232 
00233 } // namespace Ipopt
00234 #endif

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