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

Go to the documentation of this file.
00001 // Copyright (C) 2005, 2006 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Common Public License.
00004 //
00005 // $Id: IpMa57TSolverInterface.hpp 699 2006-04-05 21:05:18Z andreasw $
00006 //
00007 // Authors:  Michael Hagemann               Univ of Basel 2005-10-28
00008 //               original version (based on MA27TSolverInterface.hpp)
00009 
00010 #ifndef __IPMA57TSOLVERINTERFACE_HPP__
00011 #define __IPMA57TSOLVERINTERFACE_HPP__
00012 
00013 #include "IpSparseSymLinearSolverInterface.hpp"
00014 
00015 namespace Ipopt
00016 {
00020   class Ma57TSolverInterface: public SparseSymLinearSolverInterface
00021   {
00022   public:
00026     Ma57TSolverInterface();
00027 
00029     virtual ~Ma57TSolverInterface();
00031 
00033     bool InitializeImpl(const OptionsList&  options,
00034                         const std::string&  prefix);
00035 
00036 
00044     virtual ESymSolverStatus InitializeStructure(
00045       Index        dim,
00046       Index nonzeros,
00047       const Index     *airn,
00048       const Index     *ajcn);
00049 
00055     virtual double* GetValuesArrayPtr();
00056 
00060     virtual ESymSolverStatus MultiSolve(bool        new_matrix,
00061                                         const Index*    airn,
00062                                         const Index*    ajcn,
00063                                         Index       nrhs,
00064                                         double*     rhs_vals,
00065                                         bool        check_NegEVals,
00066                                         Index       numberOfNegEVals);
00067 
00074     virtual Index NumberOfNegEVals() const;
00076 
00077     //* @name Options of Linear solver */
00079 
00084     virtual bool IncreaseQuality();
00085 
00089     virtual bool ProvidesInertia() const
00090     {
00091       return true;
00092     }
00096     EMatrixFormat MatrixFormat() const
00097     {
00098       return Triplet_Format;
00099     }
00101 
00104     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00106 
00107   private:
00117     Ma57TSolverInterface(const Ma57TSolverInterface&);
00118 
00120     void operator=(const Ma57TSolverInterface&);
00122 
00126     Index dim_;
00127 
00129     Index nonzeros_;
00131 
00135     Index negevals_;
00137 
00142     bool initialized_;
00145     bool pivtol_changed_;
00149     bool refactorize_;
00151 
00155     Number pivtol_;
00157     Number pivtolmax_;
00159     Number ma57_pre_alloc_;
00162     bool warm_start_same_structure_;
00164 
00169     double   wd_cntl_[5];
00170     ipfint   wd_icntl_[20];
00171 
00172     ipfint   wd_info_[40];
00173     double   wd_rinfo_[20];
00174 
00175     ipfint   wd_lkeep_;      /* LKEEP >= 5*N + NE + max(N,NE) + 42. */
00176     ipfint  *wd_keep_;
00177 
00178     ipfint  *wd_iwork_;      /* 5 * N. */
00179 
00180     double  *wd_fact_;
00181     ipfint   wd_lfact_;
00182     ipfint  *wd_ifact_;
00183     ipfint   wd_lifact_;
00184 
00185 
00187     double* a_;
00189 
00196     ESymSolverStatus SymbolicFactorization(const Index* airn,
00197                                            const Index* ajcn);
00198 
00203     ESymSolverStatus Factorization(const Index* airn,
00204                                    const Index* ajcn,
00205                                    bool     check_NegEVals,
00206                                    Index    numberOfNegEVals);
00207 
00210     ESymSolverStatus Backsolve(Index     nrhs,
00211                                double   *rhs_vals);
00213   };
00214 
00215 } // namespace Ipopt
00216 #endif

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