CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
MonteIO.hh
Go to the documentation of this file.
1 #ifndef CASM_MonteIO_HH
2 #define CASM_MonteIO_HH
3 
4 #include <string>
8 
9 namespace CASM {
10 
12 
13  public:
14 
16  m_output_dir(fs::absolute(output_dir)) {}
17 
19  fs::path output_dir() const {
20  return m_output_dir;
21  }
22 
25  return m_output_dir / "results.csv";
26  }
27 
30  return m_output_dir / "results.json";
31  }
32 
33 
35  fs::path conditions_dir(int cond_index) const {
36  return m_output_dir / (std::string("conditions.") + std::to_string(cond_index));
37  }
38 
40  fs::path conditions_json(int cond_index) const {
41  return conditions_dir(cond_index) / "conditions.json";
42  }
43 
45  fs::path observations_csv(int cond_index) const {
46  return conditions_dir(cond_index) / "observations.csv";
47  }
48 
50  fs::path observations_json(int cond_index) const {
51  return conditions_dir(cond_index) / "observations.json";
52  }
53 
54 
56  fs::path trajectory_csv(int cond_index) const {
57  return conditions_dir(cond_index) / "trajectory.csv";
58  }
59 
61  fs::path trajectory_json(int cond_index) const {
62  return conditions_dir(cond_index) / "trajectory.json";
63  }
64 
66  fs::path trajectory_dir(int cond_index) const {
67  return conditions_dir(cond_index) / "trajectory";
68  }
69 
71  fs::path POSCAR_initial(int cond_index) {
72  return trajectory_dir(cond_index) / std::string("POSCAR.initial");
73  }
74 
76  fs::path POSCAR_final(int cond_index) {
77  return trajectory_dir(cond_index) / std::string("POSCAR.final");
78  }
79 
81  fs::path POSCAR_snapshot(int cond_index, MonteSampler::size_type sample_index) {
82  return trajectory_dir(cond_index) / (std::string("POSCAR.") + std::to_string(sample_index));
83  }
84 
88  fs::path initial_state_firstruneq_json(int cond_index) const {
89  return conditions_dir(cond_index) / "initial_state_firstruneq.json";
90  }
91 
95  fs::path initial_state_runeq_json(int cond_index) const {
96  return conditions_dir(cond_index) / "initial_state_runeq.json";
97  }
98 
102  fs::path initial_state_json(int cond_index) const {
103  return conditions_dir(cond_index) / "initial_state.json";
104  }
105 
107  fs::path final_state_json(int cond_index) const {
108  return conditions_dir(cond_index) / "final_state.json";
109  }
110 
113  return output_dir() / "occupation_key.csv";
114  }
115 
118  return output_dir() / "occupation_key.json";
119  }
120 
121  private:
122 
124 
125  };
126 
127  class Log;
128  template<typename ValueType, typename DataObject> class GenericDatumFormatter;
129  template<typename DataObject> class DataFormatter;
130 
131  class MonteCarlo;
132  class MonteSettings;
133 
135  typedef const MonteCarlo *ConstMonteCarloPtr;
136 
139 
142 
144  struct CovEvaluator {
145 
146  CovEvaluator(std::string _prop_name1, std::string _prop_name2):
147  prop_name1(_prop_name1), prop_name2(_prop_name2) {}
148 
149  double operator()(const ConstMonteCarloPtr &mc);
150 
151  std::string prop_name1;
152  std::string prop_name2;
153 
154  };
155 
157  GenericDatumFormatter<double, ConstMonteCarloPtr> MonteCarloCovFormatter(std::string prop_name1, std::string prop_name2);
158 
161 
164 
166  template<typename MonteType>
168 
170  template<typename MonteType>
172 
174  template<typename MonteType>
176 
178  template<typename MonteType>
180 
182  template<typename MonteType>
184 
186  template<typename MonteType>
188 
190  template<typename MonteType>
192 
194  template<typename MonteType>
196  MonteCarloSuscXFormatter(std::string comp_var_i, std::string comp_var_j);
197 
199  template<typename MonteType>
201  MonteCarloSuscNFormatter(std::string species_i, std::string species_j);
202 
204  template<typename MonteType>
206  MonteCarloThermoChemSuscXFormatter(std::string comp_var_i);
207 
209  template<typename MonteType>
211  MonteCarloThermoChemSuscNFormatter(std::string species_i);
212 
215 
218 
221 
224 
227 
230 
233 
236 
238  template<typename MonteType>
239  void write_results(const MonteSettings &settings, const MonteType &mc, Log &_log);
240 
242  template<typename MonteType>
243  void write_conditions_json(const MonteSettings &settings, const MonteType &mc, Index cond_index, Log &_log);
244 
246  void write_observations(const MonteSettings &settings, const MonteCarlo &mc, Index cond_index, Log &_log);
247 
249  void write_trajectory(const MonteSettings &settings, const MonteCarlo &mc, Index cond_index, Log &_log);
250 
252  void write_POSCAR_initial(const MonteCarlo &mc, Index cond_index, Log &_log);
253 
255  void write_POSCAR_final(const MonteCarlo &mc, Index cond_index, Log &_log);
256 
258  void write_POSCAR_trajectory(const MonteCarlo &mc, Index cond_index, Log &_log);
259 
260 }
261 
262 #endif
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloThermoChemSuscXFormatter(std::string comp_var_i)
Print parametric thermo-chemical susceptibility, 'susc_x(S,a)'.
void write_results(const MonteSettings &settings, const MonteType &mc, Log &_log)
Will create new file or append to existing file results of the latest run.
fs::path observations_json(int cond_index) const
"output_dir/conditions.cond_index/observations.json"
Definition: MonteIO.hh:50
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloParamChemPotFormatter(const MonteType &mc, int index)
Print param_chem_pot(x)
Definition: MonteIO_impl.hh:32
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloBetaFormatter()
Print Beta.
Definition: MonteIO_impl.hh:22
fs::path conditions_dir(int cond_index) const
"output_dir/conditions.cond_index/"
Definition: MonteIO.hh:35
fs::path trajectory_dir(int cond_index) const
"output_dir/conditions.cond_index/trajectory"
Definition: MonteIO.hh:66
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloCompFormatter(const MonteType &mc, int index)
Print comp(x)
Definition: MonteIO_impl.hh:54
void write_conditions_json(const MonteSettings &settings, const MonteType &mc, Index cond_index, Log &_log)
Write conditions to conditions.cond_index directory.
fs::path initial_state_json(int cond_index) const
"output_dir/conditions.cond_index/initial_state.json"
Definition: MonteIO.hh:102
fs::path occupation_key_csv() const
"output_dir/occupation_key.csv"
Definition: MonteIO.hh:112
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloMeanFormatter(std::string prop_name)
Print mean property values:
Definition: MonteIO.cc:10
void write_POSCAR_trajectory(const MonteCarlo &mc, Index cond_index, Log &_log)
For every snapshot taken, write a POSCAR file.
Definition: MonteIO.cc:427
fs::path final_state_json(int cond_index) const
"output_dir/conditions.cond_index/final_state.json"
Definition: MonteIO.hh:107
fs::path conditions_json(int cond_index) const
"output_dir/conditions.cond_index/conditions.json"
Definition: MonteIO.hh:40
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloCovFormatter(std::string prop_name1, std::string prop_name2)
Print covariance: cov(prop_name1, prop_name2)
Definition: MonteIO.cc:69
fs::path trajectory_json(int cond_index) const
"output_dir/conditions.cond_index/trajectory.json"
Definition: MonteIO.hh:61
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloCompNFormatter(const MonteType &mc, int index)
Print comp_n(N)
Definition: MonteIO_impl.hh:65
CovEvaluator(std::string _prop_name1, std::string _prop_name2)
Definition: MonteIO.hh:146
GenericDatumFormatter< bool, ConstMonteCarloPtr > MonteCarloIsConvergedFormatter()
Print if converged.
Definition: MonteIO.cc:93
GenericDatumFormatter< MonteCounter::size_type, std::pair< ConstMonteCarloPtr, Index > > MonteCarloStepFormatter()
Print Step number of observation.
Definition: MonteIO.cc:133
Main CASM namespace.
Definition: complete.cpp:8
std::string to_string(ENUM val)
Return string representation of enum class.
Definition: EnumIO.hh:83
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloHeatCapacityFormatter()
Print heat capacity, 'heat_capacity'.
fs::path results_json() const
Results summary: "output_dir/results.json".
Definition: MonteIO.hh:29
fs::path trajectory_csv(int cond_index) const
"output_dir/conditions.cond_index/trajectory.csv"
Definition: MonteIO.hh:56
fs::path results_csv() const
Results summary: "output_dir/results.csv".
Definition: MonteIO.hh:24
GenericDatumFormatter< double, std::pair< ConstMonteCarloPtr, Index > > MonteCarloObservationFormatter(std::string prop_name)
Print value of observation.
Definition: MonteIO.cc:143
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloSuscXFormatter(std::string comp_var_i, std::string comp_var_j)
Print parametric susceptibility, 'susc_x(a,b)'.
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloChemPotFormatter(const MonteType &mc, int index)
Print chem_pot(N)
Definition: MonteIO_impl.hh:43
fs::path POSCAR_snapshot(int cond_index, MonteSampler::size_type sample_index)
"output_dir/conditions.cond_index/trajectory/POSCAR.sample"
Definition: MonteIO.hh:81
DataFormatter< std::pair< ConstMonteCarloPtr, Index > > make_observation_formatter(const MonteCarlo &mc)
Make a observation formatter.
Definition: MonteIO.cc:177
GenericDatumFormatter< MonteCounter::size_type, std::pair< ConstMonteCarloPtr, Index > > MonteCarloPassFormatter()
Print Pass number of observation.
Definition: MonteIO.cc:123
fs::path output_dir() const
"output_dir/"
Definition: MonteIO.hh:19
MonteCarloDirectoryStructure(fs::path output_dir)
Definition: MonteIO.hh:15
void write_POSCAR_initial(const MonteCarlo &mc, Index cond_index, Log &_log)
For the initial state, write a POSCAR file.
Definition: MonteIO.cc:372
void write_trajectory(const MonteSettings &settings, const MonteCarlo &mc, Index cond_index, Log &_log)
Will create (and possibly overwrite) new file with all observations from run with conditions...
Definition: MonteIO.cc:269
EigenIndex Index
For long integer indexing:
DataFormatter< std::pair< ConstMonteCarloPtr, Index > > make_trajectory_formatter(const MonteCarlo &mc)
Make a trajectory formatter.
Definition: MonteIO.cc:200
GenericDatumFormatter< MonteSampler::size_type, ConstMonteCarloPtr > MonteCarloNAvgSamplesFormatter()
Print number of samples used in calculating means.
Definition: MonteIO.cc:113
void write_observations(const MonteSettings &settings, const MonteCarlo &mc, Index cond_index, Log &_log)
Will create (and possibly overwrite) new file with all observations from run with conditions...
Definition: MonteIO.cc:213
MCData::size_type size_type
Definition: MonteSampler.hh:26
fs::path POSCAR_initial(int cond_index)
"output_dir/conditions.cond_index/trajectory/POSCAR.initial"
Definition: MonteIO.hh:71
std::string prop_name2
Definition: MonteIO.hh:152
Interface base class for all types of Monte Carlo simulations (not meant to be used polymorphically) ...
Definition: MonteCarlo.hh:32
fs::path POSCAR_final(int cond_index)
"output_dir/conditions.cond_index/trajectory/POSCAR.final"
Definition: MonteIO.hh:76
Extract data from objects of 'DataObject' class.
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloSuscNFormatter(std::string species_i, std::string species_j)
Print susceptibility, 'susc_n(A,B)'.
fs::path initial_state_runeq_json(int cond_index) const
"output_dir/conditions.cond_index/final_state.json"
Definition: MonteIO.hh:95
void write_POSCAR_final(const MonteCarlo &mc, Index cond_index, Log &_log)
For the final state, write a POSCAR file.
Definition: MonteIO.cc:399
Functor to help evaluate covariance.
Definition: MonteIO.hh:144
GenericDatumFormatter< bool, ConstMonteCarloPtr > MonteCarloIsEquilibratedFormatter()
Print if equilibrated (not counting explicitly requested equilibration)
Definition: MonteIO.cc:83
GenericDatumFormatter< int, std::pair< ConstMonteCarloPtr, Index > > MonteCarloOccFormatter(Index occ_index)
Print value of a particular occupation variable.
Definition: MonteIO.cc:154
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloTFormatter()
Print Temperature.
Definition: MonteIO_impl.hh:12
fs::path occupation_key_json() const
"output_dir/occupation_key.csv"
Definition: MonteIO.hh:117
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloThermoChemSuscNFormatter(std::string species_i)
Print thermo-chemical susceptibility, 'susc_n(S,A)'.
double operator()(const ConstMonteCarloPtr &mc)
Definition: MonteIO.cc:41
GenericDatumFormatter< MonteSampler::size_type, ConstMonteCarloPtr > MonteCarloNEquilSamplesFormatter()
Print number of samples used for equilibration (not counting explicitly requested equilibration) ...
Definition: MonteIO.cc:103
std::string prop_name1
Definition: MonteIO.hh:151
Settings for Monte Carlo calculations.
Definition: Log.hh:9
GenericDatumFormatter< double, ConstMonteCarloPtr > MonteCarloPrecFormatter(std::string prop_name)
Print calculated precision of property values: prec()
Definition: MonteIO.cc:26
fs::path observations_csv(int cond_index) const
"output_dir/conditions.cond_index/observations.csv"
Definition: MonteIO.hh:45
const MonteCarlo * ConstMonteCarloPtr
const pointer to const MonteCarlo
Definition: CanonicalIO.hh:9
A DatumFormatter that returns a value of specified type, via functions that may be specified at runti...
fs::path initial_state_firstruneq_json(int cond_index) const
"output_dir/conditions.cond_index/initial_state_firstruneq.json"
Definition: MonteIO.hh:88