Ipopt  trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
IpIterativeWsmpSolverInterface.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2009 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Eclipse Public License.
00004 //
00005 // $Id$
00006 //
00007 // Authors:  Andreas Waechter              IBM    2009-09-18
00008 //               based on IpWsmpSolverInterface.hpp (rev 1483)
00009 
00010 
00011 #ifndef __IPITERATIVEWSMPSOLVERINTERFACE_HPP__
00012 #define __IPITERATIVEWSMPSOLVERINTERFACE_HPP__
00013 
00014 #include "IpSparseSymLinearSolverInterface.hpp"
00015 
00016 namespace Ipopt
00017 {
00018 
00023   class IterativeWsmpSolverInterface: public SparseSymLinearSolverInterface
00024   {
00025   public:
00029     IterativeWsmpSolverInterface();
00030 
00032     virtual ~IterativeWsmpSolverInterface();
00034 
00036     bool InitializeImpl(const OptionsList& options,
00037                         const std::string& prefix);
00038 
00039 
00043     virtual ESymSolverStatus InitializeStructure(Index dim, Index nonzeros,
00044         const Index *ia,
00045         const Index *ja);
00046 
00049     virtual double* GetValuesArrayPtr();
00050 
00052     virtual ESymSolverStatus MultiSolve(bool new_matrix,
00053                                         const Index* ia,
00054                                         const Index* ja,
00055                                         Index nrhs,
00056                                         double* rhs_vals,
00057                                         bool check_NegEVals,
00058                                         Index numberOfNegEVals);
00059 
00063     virtual Index NumberOfNegEVals() const;
00065 
00066     //* @name Options of Linear solver */
00068 
00070     virtual bool IncreaseQuality();
00071 
00075     virtual bool ProvidesInertia() const
00076     {
00077       return false;
00078     }
00082     EMatrixFormat MatrixFormat() const
00083     {
00084       return CSR_Format_1_Offset;
00085     }
00087 
00090     static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
00092 
00093   private:
00103     IterativeWsmpSolverInterface(const IterativeWsmpSolverInterface&);
00104 
00106     void operator=(const IterativeWsmpSolverInterface&);
00108 
00112     Index dim_;
00113 
00115     double* a_;
00117 
00121     Index wsmp_num_threads_;
00123     Number wsmp_pivtol_;
00125     Number wsmp_pivtolmax_;
00127     Index wsmp_scaling_;
00129     Index wsmp_write_matrix_iteration_;
00130     Number wsmp_inexact_droptol_;
00131     Number wsmp_inexact_fillin_limit_;
00133 
00135     Index matrix_file_number_;
00136 
00139 #if 0
00140 
00141     Index negevals_;
00142 #endif
00143 
00144 
00149     bool initialized_;
00152     bool pivtol_changed_;
00155     bool have_symbolic_factorization_;
00157 
00161     ipfint* IPARM_;
00163     double* DPARM_;
00165 
00170     ESymSolverStatus SymbolicFactorization(const Index* ia, const Index* ja);
00171 
00173     ESymSolverStatus InternalSymFact(const Index* ia, const Index* ja);
00174 
00177     ESymSolverStatus Factorization(const Index* ia,
00178                                    const Index* ja,
00179                                    bool check_NegEVals,
00180                                    Index numberOfNegEVals);
00181 
00184     ESymSolverStatus Solve(const Index* ia,
00185                            const Index* ja,
00186                            Index nrhs,
00187                            double *rhs_vals);
00189   };
00190 
00191 } // namespace Ipopt
00192 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines