mcpele  1.0.0
The Monte Carlo Python Energy Landscape Explorer
mcpele/gaussian_coords_displacement.h
00001 #ifndef _MCPELE_GAUSSIAN_COORDS_DISPLACEMENT_H__
00002 #define _MCPELE_GAUSSIAN_COORDS_DISPLACEMENT_H__
00003 
00004 #include <random>
00005 
00006 #include "mc.h"
00007 
00008 namespace mcpele {
00009 
00015 class GaussianCoordsDisplacement : public TakeStep {
00016 protected:
00017     size_t m_seed;
00018     double m_mean;
00019     double m_stdev;
00020     std::mt19937_64 m_generator;
00021     std::normal_distribution<double> m_distribution;
00022     double m_stepsize;
00023     size_t m_count;
00024 public:
00025     GaussianCoordsDisplacement(const size_t rseed, const double stepsize);
00026     virtual ~GaussianCoordsDisplacement() {}
00027     virtual void displace(pele::Array<double>& coords, MC* mc);
00028     size_t get_seed() const { return m_seed; }
00029     void set_generator_seed(const size_t inp) { m_generator.seed(inp); }
00030     double expected_mean() const { return 0; }
00034     double expected_variance(const double ss) const { return ss * ss; }
00035     double get_stepsize() const { return m_stepsize; }
00036     void set_stepsize(const double input) { m_stepsize = input; }
00037     size_t get_count() const { return m_count; }
00038 };
00039 
00040 } // namespace mcpele
00041 
00042 #endif // #ifndef _MCPELE_GAUSSIAN_COORDS_DISPLACEMENT_H__
 All Classes Namespaces Functions Variables Typedefs