mcpele
1.0.0
The Monte Carlo Python Energy Landscape Explorer
|
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__