00001
00043 #ifndef ABA_ROW_H
00044 #define ABA_ROW_H
00045
00046 #include "abacus/sparvec.h"
00047 #include "abacus/csense.h"
00048 class ABA_ROW : public ABA_SPARVEC {
00049 public:
00050
00061 ABA_ROW(ABA_GLOBAL *glob,
00062 int nnz,
00063 const ABA_ARRAY<int> &s,
00064 const ABA_ARRAY<double> &c,
00065 const ABA_CSENSE sense, double r);
00066
00072 ABA_ROW(ABA_GLOBAL *glob,
00073 int nnz,
00074 const ABA_ARRAY<int> &s,
00075 const ABA_ARRAY<double> &c,
00076 const ABA_CSENSE::SENSE sense, double r);
00077
00081 ABA_ROW(ABA_GLOBAL *glob,
00082 int nnz,
00083 int *s,
00084 double *c,
00085 ABA_CSENSE::SENSE sense,
00086 double r);
00087
00093 ABA_ROW(ABA_GLOBAL *glob, int size);
00094
00096 ~ABA_ROW();
00097 #ifdef ABACUS_PARALLEL
00098
00107 ABA_ROW(ABA_GLOBAL *glob, ABA_MESSAGE &msg);
00108
00114 void pack(ABA_MESSAGE &msg) const;
00115 #endif
00116
00130 friend ostream &operator<<(ostream& out, const ABA_ROW &rhs);
00131
00134 double rhs() const;
00135
00141 void rhs(double r);
00142
00145 ABA_CSENSE *sense();
00146
00152 void sense(ABA_CSENSE &s);
00153
00159 void sense(ABA_CSENSE::SENSE s);
00160
00167 void copy(const ABA_ROW &row);
00168
00176 void delInd(ABA_BUFFER<int> &buf, double rhsDelta);
00177
00178 protected:
00179
00182 ABA_CSENSE sense_;
00183
00186 double rhs_;
00187 };
00188
00189
00190 inline double ABA_ROW::rhs() const
00191 {
00192 return rhs_;
00193 }
00194
00195 inline void ABA_ROW::rhs(double r)
00196 {
00197 rhs_ = r;
00198 }
00199
00200 inline ABA_CSENSE *ABA_ROW::sense()
00201 {
00202 return &sense_;
00203 }
00204
00205 inline void ABA_ROW::sense(ABA_CSENSE &s)
00206 {
00207 sense_ = s;
00208 }
00209
00210 inline void ABA_ROW::sense(ABA_CSENSE::SENSE s)
00211 {
00212 sense_.sense(s);
00213 }
00214
00215
00216 #endif // ABA_ROW_H
00217