Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

QpGenLinsys.h

00001 /* OOQP                                                               *
00002  * Authors: E. Michael Gertz, Stephen J. Wright                       *
00003  * (C) 2001 University of Chicago. See Copyright Notification in OOQP */
00004 
00005 #ifndef QPGENLINSYS
00006 #define QPGENLINSYS
00007 
00008 #include "LinearSystem.h"
00009 #include "DoubleMatrixHandle.h"
00010 #include "OoqpVectorHandle.h"
00011 #include "OoqpVector.h"
00012 
00013 class Data;
00014 class QpGenData;
00015 class QpGen;
00016 class Variables;
00017 class Residuals;
00018 class DoubleLinearSolver;
00019 class LinearAlgebraPackage;
00020 
00021 
00035 class QpGenLinsys : public LinearSystem {
00036 protected:
00037 
00039   OoqpVectorHandle nomegaInv;
00040 
00042   OoqpVectorHandle rhs;
00043 
00044   QpGen * factory;
00045 
00046   QpGenLinsys() {};
00047 
00049   int nx, my, mz;
00050 
00052   OoqpVectorHandle dd, dq;
00053 
00055   OoqpVectorHandle ixupp, icupp, ixlow, iclow;
00056 
00058   int nxupp, nxlow, mcupp, mclow;
00059 
00060 public:
00061   QpGenLinsys(  QpGen * factory,
00062                 QpGenData * data,
00063                 LinearAlgebraPackage * la );
00064 
00065   virtual ~QpGenLinsys() {}
00066 
00067 
00075   virtual void factor(Data *prob, Variables *vars);
00076 
00087   virtual void solve(Data *prob, Variables *vars, Residuals *res,
00088                      Variables *step);
00089 
00097   virtual void joinRHS( OoqpVector& rhs,  OoqpVector& rhs1,
00098                         OoqpVector& rhs2, OoqpVector& rhs3 );
00099 
00107   virtual void separateVars( OoqpVector& vars1, OoqpVector& vars2,
00108                              OoqpVector& vars3, OoqpVector& vars );
00109 
00112   virtual void solveXYZS( OoqpVector& stepx, OoqpVector& stepy,
00113                           OoqpVector& stepz, OoqpVector& steps,
00114                           OoqpVector& ztemp, QpGenData * data );
00115 
00125   virtual void solveCompressed( OoqpVector& rhs ) = 0;
00126 
00129   virtual void putXDiagonal( OoqpVector& xdiag ) = 0;
00130 
00133   virtual void putZDiagonal( OoqpVector& zdiag ) = 0;
00134 
00137   virtual void computeDiagonals( OoqpVector& dd, OoqpVector& omega,
00138                                  OoqpVector& t,  OoqpVector& lambda,
00139                                  OoqpVector& u,  OoqpVector& pi,
00140                                  OoqpVector& v,  OoqpVector& gamma,
00141                                  OoqpVector& w,  OoqpVector& phi );
00142 };
00143 
00144 #endif

Generated on Mon May 24 17:40:46 2004 for OOQP by doxygen1.2.18