43 formatter.
push_back(MonteCarloTFormatter<GrandCanonical>());
45 std::set<std::string> exclude;
50 formatter.
push_back(MonteCarloBetaFormatter<GrandCanonical>());
51 name =
"potential_energy";
56 name =
"formation_energy";
66 formatter.
push_back(MonteCarloParamChemPotFormatter<GrandCanonical>(mc, i));
79 for(
int i = 0; i < struc_mol_name.size(); ++i) {
80 name = std::string(
"comp_n(") + struc_mol_name[i] +
")";
88 if(exclude.find(it->first) == exclude.end()) {
95 formatter.
push_back(MonteCarloHeatCapacityFormatter<GrandCanonical>());
103 formatter.
push_back(MonteCarloSuscXFormatter<GrandCanonical>(comp_var_i, comp_var_j));
112 formatter.
push_back(MonteCarloThermoChemSuscXFormatter<GrandCanonical>(comp_var_i));
117 for(
int i = 0; i < struc_mol_name.size(); ++i) {
118 for(
int j = i; j < struc_mol_name.size(); ++j) {
120 auto species_i = struc_mol_name[i];
121 auto species_j = struc_mol_name[j];
122 formatter.
push_back(MonteCarloSuscNFormatter<GrandCanonical>(species_i, species_j));
128 for(
int i = 0; i < struc_mol_name.size(); ++i) {
130 auto species_i = struc_mol_name[i];
131 formatter.
push_back(MonteCarloThermoChemSuscNFormatter<GrandCanonical>(species_i));
160 bool print_json =
true;
162 formatter.
push_back(MonteCarloTFormatter<GrandCanonical>());
164 std::set<std::string> exclude;
169 formatter.
push_back(MonteCarloBetaFormatter<GrandCanonical>());
170 name =
"gs_potential_energy";
172 return static_cast<const GrandCanonical *
>(ptr)->potential_energy();
175 exclude.insert(name);
179 name =
"gs_formation_energy";
184 exclude.insert(name);
191 formatter.
push_back(MonteCarloParamChemPotFormatter<GrandCanonical>(mc, i));
202 exclude.insert(name);
207 for(
int i = 0; i < struc_mol_name.size(); ++i) {
208 name = std::string(
"gs_comp_n(") + struc_mol_name[i] +
")";
213 exclude.insert(name);
235 for(
int i = 0; i < param_chem_pot.size(); i++) {
238 json[
"tolerance"] = conditions.
tolerance();
255 double temp = json[
"temperature"].
get<
double>();
256 double tol = json[
"tolerance"].
get<
double>();
261 for(
int i = 0; i < Nparam; i++) {
288 _log <<
"write: " <<
dir.results_csv() <<
"\n";
291 if(!fs::exists(file)) {
293 formatter.print_header(&mc, sout);
296 sout.open(file, std::ios::app);
299 formatter.print(&mc, sout);
307 _log <<
"write: " <<
dir.results_json() <<
"\n";
310 if(fs::exists(file)) {
317 formatter.to_json_arrays(&mc, results);
322 std::cerr <<
"ERROR writing results" << std::endl;
Eigen::VectorXd param_chem_pot() const
parametric chemical potential: dg/dcomp_x
void from_json(ClexDescription &desc, const jsonParser &json)
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloMeanFormatter(std::string prop_name)
Print mean property values:
void write_lte_results(const MonteSettings &settings, const GrandCanonical &mc, const double &phi_LTE1, const std::string &configname, Log &_log)
Will create new file or append to existing results file the results of the latest run...
Eigen::VectorXd param_composition(const Eigen::VectorXd &n) const
Convert number of mol per prim, 'n' to parametric composition 'x'.
void write(const std::string &file_name, unsigned int indent=2, unsigned int prec=12) const
Write json to file.
jsonParser & to_json(const ClexDescription &desc, jsonParser &json)
const Eigen::VectorXd & comp_n() const
Number of atoms of each type, normalized per primitive cell.
GenericDatumFormatter< bool, ConstMonteCarloPtr > MonteCarloIsConvergedFormatter()
Print if converged.
bool read(std::istream &stream)
Reads json from the stream.
const fs::path output_directory() const
Directory where output should go.
double temperature() const
T get(Args...args) const
Get data from json, using one of several alternatives.
std::vector< std::string > get_struc_molecule_name() const
Returns an Array of each possible Molecule in this Structure.
Eigen::VectorXd comp_n(const ConfigDoF &configdof, const Supercell &scel)
Returns comp_n, the number of each molecule per primitive cell, ordered as Structure::get_struc_molec...
static std::string comp_var(size_type i)
Composition variable names: "a", "b", ...
double formation_energy(const Configuration &config)
Returns the formation energy, normalized per unit cell.
DataFormatter< ConstMonteCarloPtr > make_lte_results_formatter(const GrandCanonical &mc, const double &phi_LTE1, const std::string &configname)
Make a results formatter.
const PrimClex & primclex() const
const Access the PrimClex that *this is based on
PrimClex is the top-level data structure for a CASM project.
GenericDatumFormatter< MonteSampler::size_type, ConstMonteCarloPtr > MonteCarloNAvgSamplesFormatter()
Print number of samples used in calculating means.
size_type independent_compositions() const
The dimensionality of the composition space.
const CompositionConverter & composition_axes() const
const Access CompositionConverter object
ConfigIO::GenericConfigFormatter< std::string > configname()
Constructs DataFormmaterDictionary containing all Configuration DatumFormatters.
Interface base class for all types of Monte Carlo simulations (not meant to be used polymorphically) ...
jsonParser & put_obj()
Puts new empty JSON object.
GenericDatumFormatter< bool, ConstMonteCarloPtr > MonteCarloIsEquilibratedFormatter()
Print if equilibrated (not counting explicitly requested equilibration)
bool write_csv() const
Write csv versions of files? (csv is the default format if no 'output_format' given) ...
bool write_json() const
Write json versions of files?
GenericDatumFormatter< double, ConstMonteCarloPtr > GrandCanonicalLTEFormatter(const double &phi_LTE1)
Print single spin flip LTE.
GenericDatumFormatter< MonteSampler::size_type, ConstMonteCarloPtr > MonteCarloNEquilSamplesFormatter()
Print number of samples used for equilibration (not counting explicitly requested equilibration) ...
Settings for Monte Carlo calculations.
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloPrecFormatter(std::string prop_name)
Print calculated precision of property values: prec(
)
static jsonParser object()
Returns an empty json object.
const SamplerMap & samplers() const
const Access sampler map
const Structure & get_prim() const
const Access to primitive Structure
DataFormatter< ConstMonteCarloPtr > make_results_formatter(const GrandCanonical &mc)
Make a LTE results formatter.