CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
MCData.hh
Go to the documentation of this file.
1 #ifndef MCData_HH
2 #define MCData_HH
3 
5 
6 namespace CASM {
7 
9  class MCData {
10 
11  public:
12 
13  typedef unsigned long int size_type;
14 
16  MCData() :
17  MCData(1) {}
18 
20  MCData(size_type count) :
21  m_observation(Eigen::VectorXd::Zero(count)),
22  m_size(0) {}
23 
25  void clear() {
26  m_size = 0;
27  }
28 
30  void push_back(double value) {
31 
32  m_observation(m_size) = value;
33  ++m_size;
34 
35  // re-size as necessary by doubling reserved space
36  if(m_size == m_observation.size()) {
37  Eigen::VectorXd tmp = Eigen::VectorXd::Zero(m_observation.size() * 2);
38  tmp.head(m_observation.size()) = m_observation;
39  m_observation = tmp;
40  }
41  }
42 
44  Eigen::VectorBlock<const Eigen::VectorXd> observations() const {
45  return m_observation.head(m_size);
46  }
47 
49  size_type size() const {
50  return m_size;
51  }
52 
53 
54  private:
55 
58 
60  size_type m_size;
61 
62  };
63 
67 
68  public:
69 
71 
72 
75 
77  MCDataEquilibration(const Eigen::VectorXd &observations, double prec);
78 
79  bool is_equilibrated() const {
80  return m_is_equilibrated;
81  }
82 
83  size_type equilibration_samples() const {
84  return m_equil_samples;
85  }
86 
87 
88  private:
89 
91  size_type m_equil_samples;
92 
93  };
94 
98 
99  public:
100 
102 
103 
106 
108  MCDataConvergence(const Eigen::VectorXd &observations, double conf);
109 
118  bool is_converged(double prec) const {
119  return m_calculated_prec <= prec;
120  }
121 
123  double mean() const {
124  return m_mean;
125  }
126 
128  double squared_norm() const {
129  return m_squared_norm;
130  }
131 
139  double calculated_precision() const {
140  return m_calculated_prec;
141  }
142 
143  private:
144 
146  std::tuple<bool, double, double> _calc_rho(const Eigen::VectorXd &observations);
147 
149  double m_mean;
152 
153  };
154 
155 }
156 
157 #endif
Checks if a range of observations have converged.
Definition: MCData.hh:97
Eigen::VectorBlock< const Eigen::VectorXd > observations() const
Return all observations.
Definition: MCData.hh:44
double mean() const
Definition: MCData.hh:123
Eigen::VectorXd m_observation
vector of all observations (includes m_size observations, and the rest is reserved space) ...
Definition: MCData.hh:57
MCDataConvergence()
Default constructor.
Definition: MCData.hh:105
void push_back(double value)
Add an observation.
Definition: MCData.hh:30
double squared_norm() const
Definition: MCData.hh:128
bool is_equilibrated() const
Definition: MCData.hh:79
MCData(size_type count)
Constructor with initial buffer size 'count'.
Definition: MCData.hh:20
Main CASM namespace.
Definition: complete.cpp:8
size_type m_size
The number of observations.
Definition: MCData.hh:60
MCData::size_type size_type
Definition: MCData.hh:70
bool is_converged(double prec) const
Returns true if converged to the requested level.
Definition: MCData.hh:118
MCDataEquilibration()
Default constructor.
Definition: MCData.hh:74
MCData()
Default constructor.
Definition: MCData.hh:16
size_type equilibration_samples() const
Definition: MCData.hh:83
MCData::size_type size_type
Definition: MCData.hh:101
Eigen::VectorXd VectorXd
MCData stores observations of properties.
Definition: MCData.hh:9
Checks if a range of observations have equilibrated.
Definition: MCData.hh:66
size_type m_equil_samples
Definition: MCData.hh:91
unsigned long int size_type
Definition: MCData.hh:13
size_type size() const
Number of observations.
Definition: MCData.hh:49
void clear()
Forget all the observed values (does not resize reserved space)
Definition: MCData.hh:25
double calculated_precision() const
Calculated precision of
Definition: MCData.hh:139
std::tuple< bool, double, double > _calc_rho(const Eigen::VectorXd &observations)
Try to find rho = pow(2.0, -1.0/i), using min i such that CoVar[i]/CoVar[0] <= 0.5.
Definition: MCData.cc:165