00001 #ifndef NLPLINSYSDIAG 00002 #define NLPLINSYSDIAG 00003 00004 #include "IotrRefCount.hh" 00005 #include "IotrHandle.hh" 00006 00007 class NlpIterate; 00008 class NlpResiduals; 00009 class NlpResidualShift; 00010 class NlpLinsysDiag; 00011 class NlpLinsysSol; 00012 class IotrVector; 00013 00014 typedef Handle<IotrVector> IotrVectorHandle; 00015 00037 class NlpLinsysDiag : public IotrRefCount { 00038 protected: 00039 IotrVectorHandle mDx; 00040 IotrVectorHandle mDy; 00041 IotrVectorHandle mDgamma; 00042 IotrVectorHandle mDphi; 00043 IotrVectorHandle mDlambda; 00044 IotrVectorHandle mDpi; 00045 public: 00046 IotrVector & Dx() { return *mDx; } 00047 IotrVector & Dy() { return *mDy; } 00048 IotrVector & Dgamma() { return *mDgamma; } 00049 IotrVector & Dphi() { return *mDphi; } 00050 IotrVector & Dlambda() { return *mDlambda; } 00051 IotrVector & Dpi() { return *mDpi; } 00052 00053 NlpLinsysDiag( IotrVector * x, IotrVector * y, 00054 IotrVector * lambda, IotrVector * pi, 00055 IotrVector * gamma, IotrVector * phi ); 00056 00057 virtual ~NlpLinsysDiag(); 00058 virtual void calcDiagonal( NlpIterate & vars, NlpResiduals & resids, 00059 NlpResidualShift & rshift ); 00060 virtual void calcTrustDiagonal( NlpLinsysDiag & diag, double sigma ); 00061 00062 virtual void copyFrom( NlpLinsysDiag & diag ); 00063 virtual void invertDual(); 00064 virtual void squareRoot(); 00065 virtual void copyInto( IotrVector & avec ); 00066 virtual void inspect(); 00067 }; 00068 00069 typedef Handle<NlpLinsysDiag> NlpLinsysDiagHandle; 00070 00071 #endif