CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
CASM::MCDataConvergence Class Reference

#include <MCData.hh>

Detailed Description

Checks if a range of observations have converged.

Definition at line 97 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

Constructor & Destructor Documentation

CASM::MCDataConvergence::MCDataConvergence ( )
inline

Default constructor.

Definition at line 105 of file MCData.hh.

CASM::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 127 of file MCData.cc.

Member Function Documentation

std::tuple< bool, double, double > CASM::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 165 of file MCData.cc.

double CASM::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 139 of file MCData.hh.

bool CASM::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)

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

Definition at line 118 of file MCData.hh.

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

<X>

Definition at line 123 of file MCData.hh.

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

<X*X>

Definition at line 128 of file MCData.hh.

Member Data Documentation

double CASM::MCDataConvergence::m_calculated_prec
private

Definition at line 151 of file MCData.hh.

bool CASM::MCDataConvergence::m_is_converged
private

Definition at line 148 of file MCData.hh.

double CASM::MCDataConvergence::m_mean
private

Definition at line 149 of file MCData.hh.

double CASM::MCDataConvergence::m_squared_norm
private

Definition at line 150 of file MCData.hh.


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