# 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 Eclipse Public License.
    00004 //
    00005 // $Id: IpMa27TSolverInterface.hpp 1861 2010-12-21 21:34:47Z 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

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines