lqelems.hpp

Go to the documentation of this file.
00001 /* $Id: lqelems.hpp 154 2009-06-16 18:52:53Z pbelotti $ */
00011 #ifndef COUENNE_LQELEMS_H
00012 #define COUENNE_LQELEMS_H
00013 
00014 #include <map>
00015 
00016 #include "CouenneTypes.hpp"
00017 
00018 class quadElem {
00019 
00020 private:
00021   exprVar   *varI_;
00022   exprVar   *varJ_;
00023   CouNumber  coeff_;
00024 
00025 public:
00026 
00027   quadElem (exprVar *i, exprVar *j, CouNumber c):
00028     varI_ (i),
00029     varJ_ (j),
00030     coeff_ (c) {}
00031 
00032   quadElem (const quadElem &src):
00033     varI_ (src.varI_),
00034     varJ_ (src.varJ_),
00035     coeff_ (src.coeff_) {}
00036 
00037   quadElem *clone ()
00038   {return new quadElem (*this);}
00039 
00040   inline exprVar   *varI  () {return varI_;}
00041   inline exprVar   *varJ  () {return varJ_;}
00042   inline CouNumber  coeff () {return coeff_;}
00043 };
00044 
00045 
00046 class LinMap {
00047 
00048 private:
00049   std::map <int, CouNumber> lmap_;
00050 
00051 public:
00052 
00054   std::map <int, CouNumber> &Map () 
00055   {return lmap_;}
00056 
00058   void insert (int index, CouNumber coe) {
00059 
00060     std::map <int, CouNumber>::iterator i = lmap_.find (index);
00061 
00062     if (i != lmap_.end()) {
00063       if (fabs (i -> second += coe) < COUENNE_EPS)
00064         lmap_.erase (i);
00065     } else {
00066       std::pair <int, CouNumber> npair (index, coe);
00067       lmap_.insert (npair);
00068     }
00069   }
00070 };
00071 
00072 
00073 class QuadMap {
00074 
00075 private:
00076   std::map <std::pair <int, int>, CouNumber> qmap_;
00077 
00078 public:
00079 
00081   std::map <std::pair <int, int>, CouNumber> &Map () 
00082   {return qmap_;}
00083 
00085   void insert (int indI, int indJ, CouNumber coe) {
00086 
00087     std::pair <int, int> nind (indI, indJ);
00088     std::map  <std::pair <int, int>, CouNumber>::iterator i = qmap_.find (nind);
00089 
00090     if (i != qmap_.end()) {
00091       if (fabs (i -> second += coe) < COUENNE_EPS)
00092         qmap_.erase (i);
00093     } else {
00094       std::pair <std::pair <int, int>, CouNumber> npair (nind, coe);
00095       qmap_.insert (npair);
00096     }
00097   }
00098 };
00099 
00100 #endif

Generated on Wed Jul 8 03:05:41 2009 for Couenne by  doxygen 1.4.7