00001 #ifndef NLPVARIABLES
00002 #define NLPVARIABLES
00003
00013 #include "IotrRefCount.hh"
00014 #include "IotrHandle.hh"
00015 #include "ElementGather.hh"
00016
00017 #include <iostream>
00018
00019 class IotrVector;
00020 class NlpBounds;
00021 class ElementGather;
00022 class NlpBounds;
00023 class NlpLinsysSol;
00024 class NlpResiduals;
00025 class NlpResidualShift;
00026
00027 typedef Handle<IotrVector> IotrVectorHandle;
00028 typedef Handle<ElementGather> ElementGatherHandle;
00029 typedef Handle<NlpBounds> NlpBoundsHandle;
00030
00037 class NlpIterate : public IotrRefCount {
00038 protected:
00041 IotrVectorHandle mX;
00042 IotrVectorHandle mY;
00043
00044 IotrVectorHandle mLambda;
00045 IotrVectorHandle mPi;
00046 IotrVectorHandle mGamma;
00047 IotrVectorHandle mPhi;
00048 public:
00050 NlpIterate( NlpBounds & bounds );
00051 NlpIterate( IotrVector * x,
00052 IotrVector * gamma, IotrVector * phi,
00053 IotrVector * y,
00054 IotrVector * lambda, IotrVector * pi );
00055
00058 virtual void axpy( double alpha, NlpLinsysSol & step );
00059
00060 IotrVector & x() { return *mX; }
00061 IotrVector & y() { return *mY; }
00062
00063 IotrVector & lambda() { return *mLambda; }
00064 IotrVector & pi() { return *mPi; }
00065 IotrVector & gamma() { return *mGamma; }
00066 IotrVector & phi() { return *mPhi; }
00067
00069 virtual void getX( IotrVector& x );
00071 virtual void startingPoint( NlpBounds& bounds );
00073 virtual void asMfile( std::ostream & out );
00074 virtual double dualStepbound( NlpLinsysSol &step, double maxstep );
00075 virtual void inspect();
00076 virtual void inspectAsMatlab();
00077 virtual void copyFrom( NlpIterate & v );
00078 virtual void setToConstant( double xVal, double yVal, double lamVal,
00079 double piVal, double gamVal, double phiVal );
00080 virtual void setToIotrPi( NlpIterate & vnew, NlpResiduals & resids,
00081 NlpResidualShift & rshift );
00082 };
00083
00084 typedef Handle<NlpIterate> NlpIterateHandle;
00085
00086 #endif