Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

NlpLinsysSol.hh

00001 #ifndef NLPLINSYSSOL
00002 #define NLPLINSYSSOL
00003 
00004 #include "IotrRefCount.hh"
00005 #include "IotrHandle.hh"
00006 #include "IotrVector.hh"
00007 
00008 class NlpIterate;
00009 class NlpResiduals;
00010 class NlpResidualShift;
00011 class NlpLinsysDiag;
00012 class IotrVector;
00013 class NlpGrads; 
00014 
00015 typedef Handle<IotrVector> IotrVectorHandle;
00016 
00021 class NlpLinsysSol : public IotrRefCount {
00022 protected:
00023   IotrVectorHandle mXsol;
00024   IotrVectorHandle mYsol;
00025   IotrVectorHandle mLambdaSol;
00026   IotrVectorHandle mPiSol;
00027   IotrVectorHandle mGammaSol;
00028   IotrVectorHandle mPhiSol;
00029 public:
00030   IotrVector & x()      { return *mXsol; }
00031   IotrVector & y()      { return *mYsol; }
00032   IotrVector & lambda() { return *mLambdaSol; }
00033   IotrVector & pi()     { return *mPiSol; }
00034   IotrVector & gamma()  { return *mGammaSol; }
00035   IotrVector & phi()    { return *mPhiSol; }
00036 
00037   NlpLinsysSol( IotrVector * x,      IotrVector * y,
00038                 IotrVector * lambda, IotrVector * pi,
00039                 IotrVector * gamma,  IotrVector * phi );
00040   virtual ~NlpLinsysSol();
00041   virtual void calcRhs( NlpIterate & vars, 
00042                         NlpResiduals & resids, NlpResidualShift & shift,
00043                         NlpGrads & grads );
00044   // Scales multipliers by -1/(1+2sigma)
00045   virtual void getp( double sigma );
00046   virtual void scaleWithID( NlpLinsysDiag & diag );
00047   virtual void scaleWithIDinv( NlpLinsysDiag &diag );
00048   virtual void copyFrom( NlpLinsysSol & sol );
00049   virtual void copyInto( IotrVector & vec );
00050   virtual void copyFrom( IotrVector & vec );
00051   virtual double dot( NlpLinsysSol & sol );
00052   virtual void negateMultipliers();
00053   virtual void scale( double factor );
00054   virtual void axpy( double alpha, NlpLinsysSol & sol );
00055 
00056   double dualFeasibility() { return mXsol->infnorm(); };
00057   double penaltyNorm() { return mYsol->infnorm(); }
00058 
00059   virtual void inspect();
00060   virtual void inspectAsMatlab();
00061 };
00062 
00063 typedef Handle<NlpLinsysSol> NlpLinsysSolHandle;
00064 
00065 #endif

Generated on Wed Aug 27 10:03:41 2003 for iotr by doxygen1.2.18