Bridge++  Ver. 1.2.x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
randomNumbers.h
Go to the documentation of this file.
1 
15 #ifndef RANDOMNUMBERS_INCLUDED
16 #define RANDOMNUMBERS_INCLUDED
17 
18 #include <cmath>
19 #include <string>
20 
21 #include "defs.h"
22 #include "commonParameters.h"
23 #include "bridgeIO.h"
24 #include "field.h"
25 
27 
41 {
42  public:
43  static const std::string class_name;
44 
45  protected:
47 
48  public:
49 
51  : m_vl(CommonParameters::Vlevel()) {}
52 
53  virtual ~RandomNumbers() {}
54 
56 
57  virtual double get() = 0;
58 
59  void gauss(double& rn1, double& rn2);
60 
61 
63  virtual void gauss_lex_global(Field&);
64 
66  virtual void gauss_eo_global(Field&);
67 
69  virtual void uniform_lex_global(Field&);
70 
71  protected:
72 
74  {
75  public:
77  : m_rng(rng), m_ptr(f.ptr(0)), m_block(f.nin()) {}
78  void operator()(const bool do_fill);
79  size_t block_size() const;
80 
81  private:
83  double *m_ptr;
84  size_t m_block;
85  };
86 
88  {
89  public:
91  : m_rng(rng), m_ptr(f.ptr(0)), m_block(f.nin()) {}
92  void operator()(const bool do_fill);
93  size_t block_size() const;
94 
95  private:
97  double *m_ptr;
98  size_t m_block;
99  };
100 
102  {
103  public:
105  : m_rng(rng), m_ptr(f.ptr(0)), m_block(f.nin()) {}
106  void operator()(const bool do_fill);
107  size_t block_size() const;
108 
109  private:
111  double *m_ptr;
112  size_t m_block;
113  };
114 
115  private:
116  template<typename InnerGenerator>
117  void generate_global(Field& f);
118 };
119 #endif
void set_parameter_verboselevel(const Bridge::VerboseLevel vl)
Definition: randomNumbers.h:55
virtual void uniform_lex_global(Field &)
uniform random number defined on global lattice.
Container of Field-type object.
Definition: field.h:37
rand_gauss_odd(Field &f, RandomNumbers *rng)
Definition: randomNumbers.h:90
static const std::string class_name
Definition: randomNumbers.h:43
virtual ~RandomNumbers()
Definition: randomNumbers.h:53
virtual void gauss_lex_global(Field &)
gaussian random number defined on global lattice.
Bridge::VerboseLevel m_vl
Definition: randomNumbers.h:46
rand_uniform(Field &f, RandomNumbers *rng)
void operator()(const bool do_fill)
virtual void gauss_eo_global(Field &)
gaussian noise for even-odd perconditioned field (S.UEDA)
Common parameter class: provides parameters as singleton.
void operator()(const bool do_fill)
void operator()(const bool do_fill)
Base class of random number generators.
Definition: randomNumbers.h:40
Bridge::VerboseLevel vl
Definition: checker.cpp:18
VerboseLevel
Definition: bridgeIO.h:25
void generate_global(Field &f)
rand_gauss_even(Field &f, RandomNumbers *rng)
Definition: randomNumbers.h:76
void gauss(double &rn1, double &rn2)