CASM
AClustersApproachtoStatisticalMechanics
|
#include <GrandCanonical.hh>
Derives from base MonteCarlo class, to be used for simulations at constant temperature and chemical potential.
As with all the other derived Monte Carlo classes, member functions must follow a specific naming convention to be used with templated routines currently defined in MonteDriver.hh: -conditions -set_conditions -propose -check -accept -reject -write_results
Definition at line 31 of file GrandCanonical.hh.
Public Types | |
typedef GrandCanonicalEvent | EventType |
typedef GrandCanonicalConditions | CondType |
typedef GrandCanonicalSettings | SettingsType |
typedef MonteSampler::size_type | size_type |
typedef std::map< std::string, double > | ScalarPropertyMap |
a map of keyname to property value More... | |
typedef std::map< std::string, Eigen::VectorXd > | VectorPropertyMap |
a map of keyname to property value Eigen::VectorXd More... | |
typedef std::map< std::string, notstd::cloneable_ptr < MonteSampler > , SamplerNameCompare > | SamplerMap |
a map of keyname to MonteSampler More... | |
typedef std::vector< std::pair < MonteCounter::size_type, MonteCounter::size_type > > | SampleTimes |
a vector of std::pair(pass, step) indicating when samples were taken More... | |
Public Member Functions | |
GrandCanonical (PrimClex &primclex, const SettingsType &settings, Log &_log) | |
Constructs a GrandCanonical object and prepares it for running based on MonteSettings. More... | |
Index | steps_per_pass () const |
Return number of steps per pass. Equals number of sites with variable occupation. More... | |
const CondType & | conditions () const |
Return current conditions. More... | |
void | set_conditions (const CondType &new_conditions) |
Set conditions and clear previously collected data. More... | |
void | set_configdof (const ConfigDoF &configdof, const std::string &msg="") |
Set configdof and clear previously collected data. More... | |
std::pair< ConfigDoF, std::string > | set_state (const GrandCanonicalConditions &new_conditions, const GrandCanonicalSettings &settings) |
Set configdof and conditions and clear previously collected data. More... | |
void | set_state (const CondType &new_conditions, const ConfigDoF &configdof, const std::string &msg="") |
Set configdof and conditions and clear previously collected data. More... | |
const EventType & | propose () |
Propose a new event, calculate delta properties, and return reference to it. More... | |
bool | check (const EventType &event) |
Based on a random number, decide if the change in energy from the proposed event is low enough to be accepted. More... | |
void | accept (const EventType &event) |
Accept proposed event. Change configuration accordingly and update energies etc. More... | |
void | reject (const EventType &event) |
Nothing needs to be done to reject a GrandCanonicalEvent. More... | |
void | check_corr () |
void | write_results (Index cond_index) const |
Write results to files. More... | |
double | lte_grand_canonical_free_energy () const |
Calculate the single spin flip low temperature expansion of the grand canonical potential. More... | |
const double & | formation_energy () const |
Formation energy, normalized per primitive cell. More... | |
const double & | potential_energy () const |
Potential energy, normalized per primitive cell. More... | |
const Eigen::VectorXd & | corr () const |
Correlations, normalized per primitive cell. More... | |
const Eigen::VectorXd & | comp_n () const |
Number of atoms of each type, normalized per primitive cell. More... | |
double | potential_energy (const Configuration &config) const |
Get potential energy. More... | |
const MonteSettings & | settings () const |
const Access settings used for construction More... | |
const PrimClex & | primclex () const |
const Access the PrimClex that *this is based on More... | |
const Supercell & | supercell () const |
const Access the Supercell that *this is based on More... | |
void | set_nlist () |
Set a pointer to the SuperNeighborList once it is ready. More... | |
const SuperNeighborList & | nlist () const |
const Access the SuperNeighborList via pointer stored by 'set_nlist' More... | |
const Configuration & | config () const |
const Access current microstate More... | |
const ConfigDoF & | configdof () const |
const Access current microstate More... | |
void | reset (const ConfigDoF &dof) |
Set current microstate and clear samplers. More... | |
const ScalarPropertyMap & | scalar_properties () const |
const Access scalar properties map More... | |
const double & | scalar_property (std::string property_name) const |
const Access a particular scalar property More... | |
const VectorPropertyMap & | vector_properties () const |
const Access vector properties map More... | |
const Eigen::VectorXd & | vector_property (std::string property_name) const |
const Access a particular vector property More... | |
void | sample_data (const MonteCounter &counter) |
Samples all requested property data, and stores pass and step number sample was taken at. More... | |
void | clear_samples () |
Clear all data from all samplers. More... | |
bool | must_converge () const |
Return true if convergence is requested. More... | |
std::pair< bool, MonteSampler::size_type > | is_equilibrated () const |
Returns pair(true, equil_samples) if required equilibration has occured for all samplers that must converge. More... | |
bool | check_convergence_time () const |
Returns true if a convergence check is due. More... | |
bool | is_converged () const |
Check to see if all the properties required to converge have converged. More... | |
const SamplerMap & | samplers () const |
const Access sampler map More... | |
const SampleTimes & | sample_times () const |
const Access a vector of std::pair<pass, step> indicating when samples were taken More... | |
const std::vector< ConfigDoF > & | trajectory () const |
const Access snapshots of the Monte Carlo calculation More... | |
bool | debug () const |
return true if running in debug mode More... | |
Static Public Attributes | |
static const Monte::ENSEMBLE | ensemble = Monte::ENSEMBLE::GrandCanonical |
Protected Member Functions | |
PrimClex & | _primclex () const |
Access the PrimClex that *this is based on. More... | |
Supercell & | _supercell () const |
Access the Supercell that *this is based on. More... | |
Configuration & | _config () const |
Access current microstate. More... | |
ConfigDoF & | _configdof () const |
Access current microstate. More... | |
Log & | _log () const |
MTRand & | _mtrand () |
ScalarPropertyMap & | _scalar_properties () |
Access scalar properties map. More... | |
double & | _scalar_property (std::string property_name) |
Access a particular scalar property. More... | |
VectorPropertyMap & | _vector_properties () |
const Access vector properties map More... | |
Eigen::VectorXd & | _vector_property (std::string property_name) |
const Access a particular vector property More... | |
Private Member Functions | |
double & | _formation_energy () |
Formation energy, normalized per primitive cell. More... | |
double & | _potential_energy () |
Potential energy, normalized per primitive cell. More... | |
Eigen::VectorXd & | _corr () |
Correlations, normalized per primitive cell. More... | |
Eigen::VectorXd & | _comp_n () |
Number of atoms of each type, normalized per primitive cell. More... | |
Clexulator & | _clexulator () const |
const ECIContainer & | _eci () const |
void | _set_dCorr (GrandCanonicalEvent &event, Index mutating_site, int sublat, int current_occupant, int new_occupant, bool use_deltas, bool all_correlations) const |
Calculate delta correlations for an event. More... | |
void | _print_correlations (const Eigen::VectorXd &corr, std::string title, std::string colheader, bool all_correlations) const |
Print correlations to _log() More... | |
void | _update_deltas (GrandCanonicalEvent &event, Index mutating_site, int sublat, int current_occupant, int new_occupant) const |
Calculate delta properties for an event and update the event with those properties. More... | |
void | _update_properties () |
Calculate properties given current conditions. More... | |
ConfigDoF | _default_motif () const |
Generate supercell filling ConfigDoF from default configuration. More... | |
std::pair< ConfigDoF, std::string > | _auto_motif (const GrandCanonicalConditions &cond) const |
Generate minimum potential energy ConfigDoF. More... | |
std::pair< ConfigDoF, std::string > | _restricted_auto_motif (const GrandCanonicalConditions &cond) const |
Generate minimum potential energy ConfigDoF for this supercell. More... | |
ConfigDoF | _configname_motif (const std::string &configname) const |
Generate supercell filling ConfigDoF from configuration. More... | |
Private Attributes | |
const SiteExchanger | m_site_swaps |
Keeps track of what sites can change to what. More... | |
GrandCanonicalConditions | m_condition |
Conditions (T, mu). Initially determined by m_settings, but can be changed halfway through the run. More... | |
Clex | m_formation_energy_clex |
Holds Clexulator and ECI references. More... | |
bool | m_all_correlations |
If true, calculate all correlations; if false, calculate correlations with non-zero eci. More... | |
EventType | m_event |
Event to propose, check, accept/reject: More... | |
bool | m_use_deltas |
If the supercell is large enough, calculate delta correlations directly. More... | |
double * | m_formation_energy |
Formation energy, normalized per primitive cell. More... | |
double * | m_potential_energy |
Potential energy, normalized per primitive cell. More... | |
Eigen::VectorXd * | m_corr |
Correlations, normalized per primitive cell. More... | |
Eigen::VectorXd * | m_comp_n |
Number of atoms of each type, normalized per primitive cell. More... | |
Definition at line 37 of file GrandCanonical.hh.
Definition at line 36 of file GrandCanonical.hh.
|
inherited |
a map of keyname to MonteSampler
Definition at line 54 of file MonteCarlo.hh.
|
inherited |
a vector of std::pair(pass, step) indicating when samples were taken
Definition at line 57 of file MonteCarlo.hh.
|
inherited |
a map of keyname to property value
Definition at line 42 of file MonteCarlo.hh.
Definition at line 38 of file GrandCanonical.hh.
|
inherited |
Definition at line 37 of file MonteCarlo.hh.
|
inherited |
a map of keyname to property value Eigen::VectorXd
Definition at line 47 of file MonteCarlo.hh.
CASM::GrandCanonical::GrandCanonical | ( | PrimClex & | primclex, |
const SettingsType & | settings, | ||
Log & | log | ||
) |
Constructs a GrandCanonical object and prepares it for running based on MonteSettings.
Definition at line 17 of file GrandCanonical.cc.
|
private |
Generate minimum potential energy ConfigDoF.
Raises exception if it doesn't tile the supercell
Definition at line 644 of file GrandCanonical.cc.
|
inlineprivate |
Definition at line 139 of file GrandCanonical.hh.
|
inlineprivate |
Number of atoms of each type, normalized per primitive cell.
Definition at line 135 of file GrandCanonical.hh.
|
inlineprotectedinherited |
Access current microstate.
Definition at line 196 of file MonteCarlo.hh.
|
inlineprotectedinherited |
Access current microstate.
Definition at line 204 of file MonteCarlo.hh.
|
private |
Generate supercell filling ConfigDoF from configuration.
Definition at line 763 of file GrandCanonical.cc.
|
inlineprivate |
Correlations, normalized per primitive cell.
Definition at line 130 of file GrandCanonical.hh.
|
private |
Generate supercell filling ConfigDoF from default configuration.
Definition at line 634 of file GrandCanonical.cc.
|
inlineprivate |
Definition at line 143 of file GrandCanonical.hh.
|
inlineprivate |
Formation energy, normalized per primitive cell.
Definition at line 120 of file GrandCanonical.hh.
|
inlineprotectedinherited |
Definition at line 208 of file MonteCarlo.hh.
|
inlineprotectedinherited |
Definition at line 212 of file MonteCarlo.hh.
|
inlineprivate |
Potential energy, normalized per primitive cell.
Definition at line 125 of file GrandCanonical.hh.
|
inlineprotectedinherited |
Access the PrimClex that *this is based on.
Definition at line 183 of file MonteCarlo.hh.
|
private |
Print correlations to _log()
Definition at line 511 of file GrandCanonical.cc.
|
private |
Generate minimum potential energy ConfigDoF for this supercell.
Definition at line 686 of file GrandCanonical.cc.
|
inlineprotectedinherited |
Access scalar properties map.
Definition at line 217 of file MonteCarlo.hh.
|
inlineprotectedinherited |
Access a particular scalar property.
Definition at line 222 of file MonteCarlo.hh.
|
private |
Calculate delta correlations for an event.
Definition at line 432 of file GrandCanonical.cc.
|
inlineprotectedinherited |
Access the Supercell that *this is based on.
Definition at line 188 of file MonteCarlo.hh.
|
private |
Calculate delta properties for an event and update the event with those properties.
Update delta properties in 'event'.
Definition at line 549 of file GrandCanonical.cc.
|
private |
Calculate properties given current conditions.
Definition at line 586 of file GrandCanonical.cc.
|
inlineprotectedinherited |
const Access vector properties map
Definition at line 227 of file MonteCarlo.hh.
|
inlineprotectedinherited |
const Access a particular vector property
Definition at line 232 of file MonteCarlo.hh.
void CASM::GrandCanonical::accept | ( | const EventType & | event | ) |
Accept proposed event. Change configuration accordingly and update energies etc.
Once you've found an event that passes the random number test, you want to accept it. This routine will apply all the changes in the event to *this (change occupation of one atom) and update the formation energy, generalized enthalpy, number of species and correlations values.
Definition at line 262 of file GrandCanonical.cc.
bool CASM::GrandCanonical::check | ( | const EventType & | event | ) |
Based on a random number, decide if the change in energy from the proposed event is low enough to be accepted.
Definition at line 233 of file GrandCanonical.cc.
|
inherited |
Returns true if a convergence check is due.
Currently set to every 10 samples
Definition at line 188 of file MonteCarlo.cc.
|
inline |
Definition at line 80 of file GrandCanonical.hh.
|
inherited |
Clear all data from all samplers.
Definition at line 46 of file MonteCarlo.cc.
|
inline |
Number of atoms of each type, normalized per primitive cell.
Definition at line 109 of file GrandCanonical.hh.
const GrandCanonical::CondType & CASM::GrandCanonical::conditions | ( | ) | const |
Return current conditions.
Definition at line 66 of file GrandCanonical.cc.
|
inlineinherited |
const Access current microstate
Definition at line 88 of file MonteCarlo.hh.
|
inlineinherited |
const Access current microstate
Definition at line 93 of file MonteCarlo.hh.
|
inline |
Correlations, normalized per primitive cell.
Definition at line 104 of file GrandCanonical.hh.
|
inlineinherited |
return true if running in debug mode
Definition at line 171 of file MonteCarlo.hh.
|
inline |
Formation energy, normalized per primitive cell.
Definition at line 94 of file GrandCanonical.hh.
|
inherited |
Check to see if all the properties required to converge have converged.
Definition at line 122 of file MonteCarlo.cc.
|
inherited |
Returns pair(true, equil_samples) if required equilibration has occured for all samplers that must converge.
Definition at line 63 of file MonteCarlo.cc.
double CASM::GrandCanonical::lte_grand_canonical_free_energy | ( | ) | const |
Calculate the single spin flip low temperature expansion of the grand canonical potential.
Returns low temperature expansion estimate of the grand canonical free energy. Works with the current ConfigDoF as groundstate.
Quick derivation: Z: partition function boltz(x): exp(-x/kBT) : (E-SUM(chem_pot*comp_n))*N N: number of unit cells in supercell
The partition function is Z=SUM(boltz()) summing over all microstates s
can be split into groundstate and a delta energy D =+D Z=boltz()*SUM(boltz(D)) summing over all microstates
For low temperatures we can approximate Z by truncating the sum after microstates that only involve point defects and no defects Z=boltz()*SUM(boltz(D)) summing over all states with only point defects or no defects
The free energy is Phi=-kB*T*ln(Z) Phi=-kB*T*(-/kBT+ln(SUM(boltz(D)) Sum is over point defects and no defects (in which case D == 0) Phi=(-kB*T(ln(SUM(boltz(D)))))/N
Definition at line 317 of file GrandCanonical.cc.
|
inlineinherited |
Return true if convergence is requested.
Definition at line 139 of file MonteCarlo.hh.
|
inlineinherited |
const Access the SuperNeighborList via pointer stored by 'set_nlist'
Definition at line 83 of file MonteCarlo.hh.
|
inline |
Potential energy, normalized per primitive cell.
Definition at line 99 of file GrandCanonical.hh.
double CASM::GrandCanonical::potential_energy | ( | const Configuration & | config | ) | const |
Get potential energy.
Definition at line 422 of file GrandCanonical.cc.
|
inlineinherited |
const Access the PrimClex that *this is based on
Definition at line 68 of file MonteCarlo.hh.
const GrandCanonical::EventType & CASM::GrandCanonical::propose | ( | ) |
Propose a new event, calculate delta properties, and return reference to it.
Randomly picks a site that's allowed more than one occupant, and randomly picks what occupant it changes to. Then calculates delta properties associated with that change.
Definition at line 174 of file GrandCanonical.cc.
void CASM::GrandCanonical::reject | ( | const EventType & | event | ) |
Nothing needs to be done to reject a GrandCanonicalEvent.
Definition at line 282 of file GrandCanonical.cc.
|
inlineinherited |
Set current microstate and clear samplers.
Definition at line 101 of file MonteCarlo.hh.
|
inherited |
Samples all requested property data, and stores pass and step number sample was taken at.
Definition at line 29 of file MonteCarlo.cc.
|
inlineinherited |
const Access a vector of std::pair<pass, step> indicating when samples were taken
Definition at line 158 of file MonteCarlo.hh.
|
inlineinherited |
const Access sampler map
Definition at line 153 of file MonteCarlo.hh.
|
inlineinherited |
const Access scalar properties map
Definition at line 110 of file MonteCarlo.hh.
|
inlineinherited |
const Access a particular scalar property
Definition at line 115 of file MonteCarlo.hh.
void CASM::GrandCanonical::set_conditions | ( | const CondType & | new_conditions | ) |
Set conditions and clear previously collected data.
Definition at line 72 of file GrandCanonical.cc.
void CASM::GrandCanonical::set_configdof | ( | const ConfigDoF & | configdof, |
const std::string & | msg = "" |
||
) |
Set configdof and clear previously collected data.
Definition at line 85 of file GrandCanonical.cc.
|
inlineinherited |
Set a pointer to the SuperNeighborList once it is ready.
Definition at line 78 of file MonteCarlo.hh.
std::pair< ConfigDoF, std::string > CASM::GrandCanonical::set_state | ( | const GrandCanonicalConditions & | new_conditions, |
const GrandCanonicalSettings & | settings | ||
) |
Set configdof and conditions and clear previously collected data.
Definition at line 100 of file GrandCanonical.cc.
void CASM::GrandCanonical::set_state | ( | const CondType & | new_conditions, |
const ConfigDoF & | configdof, | ||
const std::string & | msg = "" |
||
) |
Set configdof and conditions and clear previously collected data.
Definition at line 148 of file GrandCanonical.cc.
|
inlineinherited |
const Access settings used for construction
Definition at line 63 of file MonteCarlo.hh.
Index CASM::GrandCanonical::steps_per_pass | ( | ) | const |
Return number of steps per pass. Equals number of sites with variable occupation.
Definition at line 60 of file GrandCanonical.cc.
|
inlineinherited |
const Access the Supercell that *this is based on
Definition at line 73 of file MonteCarlo.hh.
|
inlineinherited |
const Access snapshots of the Monte Carlo calculation
If requested, snapshots are taken at the same time as samples. So examine sample_times for pass and step information.
Definition at line 166 of file MonteCarlo.hh.
|
inlineinherited |
const Access vector properties map
Definition at line 120 of file MonteCarlo.hh.
|
inlineinherited |
const Access a particular vector property
Definition at line 125 of file MonteCarlo.hh.
void CASM::GrandCanonical::write_results | ( | Index | cond_index | ) | const |
Write results to files.
Definition at line 410 of file GrandCanonical.cc.
|
static |
Definition at line 35 of file GrandCanonical.hh.
|
private |
If true, calculate all correlations; if false, calculate correlations with non-zero eci.
Definition at line 195 of file GrandCanonical.hh.
|
private |
Number of atoms of each type, normalized per primitive cell.
Definition at line 216 of file GrandCanonical.hh.
|
private |
Conditions (T, mu). Initially determined by m_settings, but can be changed halfway through the run.
Definition at line 189 of file GrandCanonical.hh.
|
private |
Correlations, normalized per primitive cell.
Definition at line 213 of file GrandCanonical.hh.
|
private |
Event to propose, check, accept/reject:
Definition at line 198 of file GrandCanonical.hh.
|
private |
Formation energy, normalized per primitive cell.
Definition at line 207 of file GrandCanonical.hh.
|
private |
Holds Clexulator and ECI references.
Definition at line 192 of file GrandCanonical.hh.
|
private |
Potential energy, normalized per primitive cell.
Definition at line 210 of file GrandCanonical.hh.
|
private |
Keeps track of what sites can change to what.
Definition at line 186 of file GrandCanonical.hh.
|
private |
If the supercell is large enough, calculate delta correlations directly.
Definition at line 201 of file GrandCanonical.hh.