CASM  1.1.0
A Clusters Approach to Statistical Mechanics
CASM::Monte::MCDataConvergence Class Reference

#include <MCData.hh>

Detailed Description

Checks if a range of observations have converged.

Definition at line 79 of file MCData.hh.

Public Types

typedef MCData::size_type size_type
 

Public Member Functions

 MCDataConvergence ()
 Default constructor. More...
 
 MCDataConvergence (const Eigen::VectorXd &observations, double conf)
 Construct a MCDataConvergence object. More...
 
bool is_converged (double prec) const
 Returns true if converged to the requested level. More...
 
double mean () const
 <X> More...
 
double squared_norm () const
 <X*X> More...
 
double calculated_precision () const
 Calculated precision of <X> More...
 

Private Member Functions

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. More...
 

Private Attributes

bool m_is_converged
 
double m_mean
 
double m_squared_norm
 
double m_calculated_prec
 

Member Typedef Documentation

◆ size_type

Constructor & Destructor Documentation

◆ MCDataConvergence() [1/2]

CASM::Monte::MCDataConvergence::MCDataConvergence ( )
inline

Default constructor.

Definition at line 84 of file MCData.hh.

◆ MCDataConvergence() [2/2]

CASM::Monte::MCDataConvergence::MCDataConvergence ( const Eigen::VectorXd &  observations,
double  conf 
)

Construct a MCDataConvergence object.

Check convergence of a range of observations.

Parameters
observationsAn Eigen::VectorXd of observations
confDesired confidence level

We check for convergence using the algorithm of: Van de Walle and Asta, Modelling Simul. Mater. Sci. Eng. 10 (2002) 521–538.

The observations are considered converged to the desired prec and conf if:

  • calculated_prec <= prec,

where:

  • calculated_prec = sqrt(Var)*z_alpha,
  • z_alpha = sqrt(2.0)*inv_erf(1.0-conf)
  • var_of_mean = (CoVar[0]/observations.size())*((1.0+rho)/(1.0-rho))
  • CoVar[i] = ( (1.0/(observations.size()-i))*sum_j(j=0:L-i-1, observations(j)*observations(j+1)) ) - sqr(observations.mean());
  • rho = pow(2.0, -1.0/i), using min i such that CoVar[i]/CoVar[0] < 0.5

Definition at line 132 of file MCData.cc.

Member Function Documentation

◆ _calc_rho()

std::tuple< bool, double, double > CASM::Monte::MCDataConvergence::_calc_rho ( const Eigen::VectorXd &  observations)
private

Try to find rho = pow(2.0, -1.0/i), using min i such that CoVar[i]/CoVar[0] <= 0.5.

Returns
std::tuple<bool, double> : (found_rho?, rho)

Definition at line 170 of file MCData.cc.

◆ calculated_precision()

double CASM::Monte::MCDataConvergence::calculated_precision ( ) const
inline

Calculated precision of <X>

Returns
sqrt(2.0*Var(<X>))*inv_erf(1.0-conf)
  • This is the critical value is used for comparison in is_converged
  • Var(<X>), the variance in the mean of X, is calculated as described by MCDataConvergence

Definition at line 114 of file MCData.hh.

◆ is_converged()

bool CASM::Monte::MCDataConvergence::is_converged ( double  prec) const
inline

Returns true if converged to the requested level.

Parameters
precDesired absolute precision (<X> +/- prec)
Returns
true if Var(<X>) <= pow(prec/(sqrt(2.0)*inv_erf(1.0-conf)), 2.0)

\seealso MCDataConvergence(const Eigen::VectorXd& observations, double conf)

Definition at line 98 of file MCData.hh.

◆ mean()

double CASM::Monte::MCDataConvergence::mean ( ) const
inline

<X>

Definition at line 101 of file MCData.hh.

◆ squared_norm()

double CASM::Monte::MCDataConvergence::squared_norm ( ) const
inline

<X*X>

Definition at line 104 of file MCData.hh.

Member Data Documentation

◆ m_calculated_prec

double CASM::Monte::MCDataConvergence::m_calculated_prec
private

Definition at line 125 of file MCData.hh.

◆ m_is_converged

bool CASM::Monte::MCDataConvergence::m_is_converged
private

Definition at line 122 of file MCData.hh.

◆ m_mean

double CASM::Monte::MCDataConvergence::m_mean
private

Definition at line 123 of file MCData.hh.

◆ m_squared_norm

double CASM::Monte::MCDataConvergence::m_squared_norm
private

Definition at line 124 of file MCData.hh.


The documentation for this class was generated from the following files: