Generated on Tue Dec 16 13:34:01 2008 for ell-3.0.0 by doxygen 1.5.1

src/ell/Basin.hh

Go to the documentation of this file.
00001 #ifndef BASIN_HH_
00002 #define BASIN_HH_
00003 
00004 //##############################################################################
00005 //##############################################################################
00006 
00007 #include "ell/State.hh"
00008 #include "ell/StateCollector.hh" 
00009 #include "ell/StatePairCollector.hh" 
00010 
00011 namespace ell
00012 {
00013 
00014 
00027     class Basin {
00028 
00029         
00030     public:
00031         
00033         virtual
00034         ~Basin();
00035         
00049         virtual
00050         double enumerate(   const State* const localMin,
00051                             StateCollector* scBasin,
00052                             StatePairCollector* scSurface = NULL) = 0;
00053         
00054     };
00055     
00056 } // namespace ell
00057 
00058 //##############################################################################
00059 //##############################################################################
00060 
00061 
00062 namespace ell {
00063     
00086     class Basin_FME : public Basin {
00087     protected:
00089         const double maxE;
00091         const double deltaE;
00094         const size_t maxToStore;
00095         
00096     public:
00097         
00099         class QueueVal {
00100         public:
00101         
00103             CSequence minNeigh;
00105             double minNeighE;
00108             size_t minNeighGWE;
00109             
00110             QueueVal();
00111             ~QueueVal();
00112         };
00113 
00114         
00115     public:
00116         
00124         Basin_FME(  const double maxE
00125                     , const double deltaE 
00126                     , const size_t maxToStore 
00127                 );
00128         
00130         virtual
00131         ~Basin_FME();
00132         
00145         virtual
00146         double enumerate(   const State* const localMin,
00147                             StateCollector* scBasin,
00148                             StatePairCollector* scSurface = NULL);
00149         
00150         
00175         static double flood(    const State* const localMin, 
00176                                 StateCollector* scBasin,
00177                                 const double maxE, 
00178                                 const double deltaE, 
00179                                 const size_t maxToStore, 
00180                                 StatePairCollector* scSurface = NULL
00181                             );
00182     };
00183     
00184 } // namespace ell
00185 
00186 
00187 //##############################################################################
00188 //##############################################################################
00189 
00190 
00191 
00192 namespace ell {
00193     
00213     class Basin_F : public Basin {
00214     protected:
00216         const double maxE;
00218         const double deltaE;
00221         const size_t maxToStore;
00222         
00223     public:
00224         
00226         class QueueVal {
00227         public:
00228         
00230             CSequence minNeigh;
00232             double minNeighE;
00235             size_t minNeighGWE;
00236             
00237             QueueVal();
00238             ~QueueVal();
00239         };
00240 
00241         
00242     public:
00243         
00251         Basin_F(    const double maxE
00252                     , const double deltaE 
00253                     , const size_t maxToStore 
00254                 );
00255         
00257         virtual
00258         ~Basin_F();
00259         
00272         virtual
00273         double enumerate(   const State* const localMin,
00274                             StateCollector* scBasin,
00275                             StatePairCollector* scSurface = NULL);
00276         
00277         
00302         static double flood(    const State* const localMin, 
00303                                 StateCollector* scBasin,
00304                                 const double maxE, 
00305                                 const double deltaE, 
00306                                 const size_t maxToStore, 
00307                                 StatePairCollector* scSurface = NULL
00308                             );
00309     };
00310     
00311 } // namespace ell
00312 
00313 
00314 //##############################################################################
00315 //##############################################################################
00316 
00317 
00318 #endif /*BASIN_HH_*/