# 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: IpIterativeWsmpSolverInterface.hpp 1861 2010-12-21 21:34:47Z andreasw $
    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