1 #ifndef CASM_MonteSampler_HH
2 #define CASM_MonteSampler_HH
30 double data_confidence,
31 size_type data_initsize);
36 double data_confidence,
37 size_type data_initsize);
43 throw std::runtime_error(
"Error: MonteSampler base class used to sample");
97 double mean(size_type equil_samples)
const {
140 std::unique_ptr<MonteSampler>
clone()
const {
141 return std::unique_ptr<MonteSampler>(this->
_clone());
200 std::string print_name,
201 double data_confidence,
206 std::string print_name,
208 double data_confidence,
216 std::unique_ptr<ScalarMonteSampler>
clone()
const {
217 return std::unique_ptr<ScalarMonteSampler>(this->
_clone());
241 std::string print_name,
242 double data_confidence,
243 size_type data_initsize);
248 std::string print_name,
250 double data_confidence,
251 size_type data_initsize);
258 std::unique_ptr<VectorMonteSampler>
clone()
const {
259 return std::unique_ptr<VectorMonteSampler>(this->
_clone());
314 std::string print_name,
315 double data_confidence,
316 size_type data_initsize);
321 std::string print_name,
323 double data_confidence,
324 size_type data_initsize);
331 std::unique_ptr<QueryMonteSampler>
clone()
const {
332 return std::unique_ptr<QueryMonteSampler>(this->
_clone());
358 std::string print_name,
359 double data_confidence,
360 size_type data_initsize);
365 std::string print_name,
367 double data_confidence,
368 size_type data_initsize);
375 std::unique_ptr<CompMonteSampler>
clone()
const {
376 return std::unique_ptr<CompMonteSampler>(this->
_clone());
404 size_type _basis_size,
405 std::string print_name,
406 double data_confidence,
407 size_type data_initsize);
411 size_type _basis_size,
412 std::string print_name,
414 double data_confidence,
415 size_type data_initsize);
422 std::unique_ptr<SiteFracMonteSampler>
clone()
const {
423 return std::unique_ptr<SiteFracMonteSampler>(this->
_clone());
451 size_type _vacancy_index,
452 std::string print_name,
453 double data_confidence,
454 size_type data_initsize);
458 size_type _vacancy_index,
459 std::string print_name,
461 double data_confidence,
462 size_type data_initsize);
469 std::unique_ptr<AtomFracMonteSampler>
clone()
const {
470 return std::unique_ptr<AtomFracMonteSampler>(this->
_clone());
virtual VectorMonteSampler * _clone() const
Checks if a range of observations have converged.
void _check_convergence(size_type equil_samples) const
void sample(const MonteCarlo &mc, const MonteCounter &counter)
Sample data from a MonteCarlo calculation.
SiteFracMonteSampler(size_type _index, size_type _basis_size, std::string print_name, double data_confidence, size_type data_initsize)
Construct sampler that does not need to converge.
Eigen::VectorBlock< const Eigen::VectorXd > observations() const
Return all observations.
bool must_converge() const
Returns true if convergence criteria must be met for Monte Carlo calculation to be complete...
Sampler for atom fraction.
virtual SiteFracMonteSampler * _clone() const
void sample(const MonteCarlo &mc, const MonteCounter &counter)
Sample data from a MonteCarlo calculation.
MonteSampler(const std::string &print_name, double data_confidence, size_type data_initsize)
Construct sampler that does not need to converge.
double squared_norm() const
size_type m_convergence_start_sample
bool is_equilibrated() const
std::unique_ptr< AtomFracMonteSampler > clone() const
Clone this object.
std::unique_ptr< QueryMonteSampler > clone() const
Clone this object.
Sampler for a scalar property.
An abstract base class for sampling and storing data observations.
std::string m_property_name
std::shared_ptr< QueryMonteSampler::Formatter > m_formatter
Sampler for individual elements of a vector property.
std::string m_name
Property name for printing.
double m_prec
Requested precision, if must_converge.
Track the number of passes, steps and samples taken in a Monte Carlo calculation. ...
bool is_converged(double prec) const
Returns true if converged to the requested level.
double m_conf
Requested confidence, if must_converge.
double requested_precision() const
Returns requested precision on the mean.
QueryMonteSampler(std::shared_ptr< QueryMonteSampler::Formatter > formatter, size_type _index, std::string print_name, double data_confidence, size_type data_initsize)
Construct sampler that does not need to converge.
std::unique_ptr< ScalarMonteSampler > clone() const
Clone this object.
AtomFracMonteSampler(size_type _index, size_type _vacancy_index, std::string print_name, double data_confidence, size_type data_initsize)
Construct sampler that does not need to converge.
void sample(const MonteCarlo &mc, const MonteCounter &counter)
Sample data from a MonteCarlo calculation.
void clear()
Clear all data observations.
std::unique_ptr< VectorMonteSampler > clone() const
Clone this object.
std::unique_ptr< MonteSampler > clone() const
Clone this object.
std::string name() const
Property name for printing.
EigenIndex Index
For long integer indexing:
CompMonteSampler(size_type _index, const CompositionConverter &_comp_converter, std::string print_name, double data_confidence, size_type data_initsize)
Construct sampler that does not need to converge.
double squared_norm(size_type equil_samples) const
Returns for data sampled in range [equil_samples, end)
void sample(const MonteCarlo &mc, const MonteCounter &counter)
Sample data from a MonteCarlo calculation.
ScalarMonteSampler(std::string _property_name, std::string print_name, double data_confidence, size_type data_initsize)
Construct sampler that does not need to converge.
Sampler for individual elements of a vector property.
void sample(const MonteCarlo &mc, const MonteCounter &counter)
Sample data from a MonteCarlo calculation.
size_type equilibration_samples() const
const MCData & data() const
const Access the raw data observation container
MCData & data()
Access the raw data observation container.
MCData m_data
An array of observations, one for every so many steps or passes.
virtual AtomFracMonteSampler * _clone() const
MCData stores observations of properties.
Checks if a range of observations have equilibrated.
std::string m_property_name
virtual CompMonteSampler * _clone() const
MCData::size_type size_type
Sampler for parametric composition.
MCDataConvergence m_convergence
bool m_equilibration_uptodate
bool m_convergence_uptodate
Interface base class for all types of Monte Carlo simulations (not meant to be used polymorphically) ...
virtual MonteSampler * _clone() const
unsigned long int size_type
size_type size() const
Number of observations.
void clear()
Forget all the observed values (does not resize reserved space)
Convert between number of species per unit cell and parametric composition.
virtual void sample(const MonteCarlo &mc, const MonteCounter &counter)
virtual ScalarMonteSampler * _clone() const
std::unique_ptr< SiteFracMonteSampler > clone() const
Clone this object.
void sample(const MonteCarlo &mc, const MonteCounter &counter)
Sample data from a MonteCarlo calculation.
CompositionConverter m_comp_converter
std::pair< bool, size_type > is_equilibrated() const
Returns pair(true, equil_steps) if equilibration has occured to required precision.
MCDataEquilibration m_equilibration
double mean(size_type equil_samples) const
Returns for data sampled in range [equil_samples, end)
double calculated_precision() const
Calculated precision of
double calculated_precision(size_type equil_samples) const
Returns calculated precision on the mean for data sampled in range [equil_samples, end)
size_type m_vacancy_index
std::unique_ptr< CompMonteSampler > clone() const
Clone this object.
VectorMonteSampler(std::string _property_name, size_type _index, std::string print_name, double data_confidence, size_type data_initsize)
Construct sampler that does not need to converge.
virtual QueryMonteSampler * _clone() const
Sampler for site fraction.
bool is_converged(size_type equil_samples) const
Returns true if convergence criteria have been met for data sampled in range [equil_samples, end)
bool m_must_converge
If false, data observations are recorded but shouldn't be used to determine if Monte Carlo run has co...