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 }
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 }
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 }
00312
00313
00314
00315
00316
00317
00318 #endif