CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
ConfigIO.hh
Go to the documentation of this file.
1 #ifndef CONFIGIO_HH
2 #define CONFIGIO_HH
3 
9 
10 namespace CASM {
11 
17 
18 
19  class Configuration;
20  template<typename DataObject>
21  class Norm;
22 
24  template<bool IsConst>
25  class ConfigSelection;
26 
31  namespace ConfigIO_impl {
32 
38  class MolDependent : public VectorXdAttribute<Configuration> {
39 
40  public:
41 
42  MolDependent(const std::string &_name, const std::string &_desc) :
43  VectorXdAttribute<Configuration>(_name, _desc) {}
44 
45 
46  // --- Specialized implementation -----------
47 
49  bool parse_args(const std::string &args) override;
50 
52  void init(const Configuration &_tmplt) const override;
53 
55  std::vector<std::string> col_header(const Configuration &_tmplt) const override;
56 
57  private:
58  mutable std::vector<std::string> m_mol_names;
59 
60  };
61 
62  }
63 
65  namespace ConfigIO {
66 
67  class Selected;
68 
71  template<typename ValueType>
73 
74 
75  template<typename ValueType>
77 
80  class Comp : public VectorXdAttribute<Configuration> {
81 
82  public:
83 
84  static const std::string Name;
85 
86  static const std::string Desc;
87 
88 
89  Comp() :
90  Base1DDatumFormatter(Name, Desc) {}
91 
92 
93  // --- Required implementations -----------
94 
96  Eigen::VectorXd evaluate(const Configuration &config) const override;
97 
99  std::unique_ptr<Comp> clone() const {
100  return std::unique_ptr<Comp>(this->_clone());
101  }
102 
103 
104  // --- Specialized implementation -----------
105 
107  bool validate(const Configuration &config) const override;
108 
110  bool parse_args(const std::string &args) override;
111 
113  std::vector<std::string> col_header(const Configuration &_tmplt) const override;
114 
115  private:
116 
118  Comp *_clone() const override {
119  return new Comp(*this);
120  }
121 
122  };
123 
124 
128 
129  public:
130 
131  static const std::string Name;
132 
133  static const std::string Desc;
134 
135 
136  CompN() :
137  MolDependent(Name, Desc) {}
138 
139 
140  // --- Required implementations -----------
141 
143  Eigen::VectorXd evaluate(const Configuration &config) const override;
144 
146  std::unique_ptr<CompN> clone() const {
147  return std::unique_ptr<CompN>(this->_clone());
148  }
149 
150  private:
151 
153  CompN *_clone() const override {
154  return new CompN(*this);
155  }
156 
157  };
158 
159 
166 
167  public:
168 
169  static const std::string Name;
170 
171  static const std::string Desc;
172 
173 
174  SiteFrac() : MolDependent(Name, Desc) {}
175 
176 
177  // --- Required implementations -----------
178 
180  Eigen::VectorXd evaluate(const Configuration &config) const override;
181 
183  std::unique_ptr<SiteFrac> clone() const {
184  return std::unique_ptr<SiteFrac>(this->_clone());
185  }
186 
187  private:
188 
190  SiteFrac *_clone() const override {
191  return new SiteFrac(*this);
192  }
193 
194  };
195 
196 
203 
204  public:
205 
206  static const std::string Name;
207 
208  static const std::string Desc;
209 
210 
211  AtomFrac() : MolDependent(Name, Desc) {}
212 
213 
214  // --- Required implementations -----------
215 
217  Eigen::VectorXd evaluate(const Configuration &config) const override;
218 
220  std::unique_ptr<AtomFrac> clone() const {
221  return std::unique_ptr<AtomFrac>(this->_clone());
222  }
223 
224  private:
226  AtomFrac *_clone() const override {
227  return new AtomFrac(*this);
228  }
229 
230  };
231 
234 
239 
241  /* class MagBase : public VectorXdAttribute<Configuration> { */
242 
243  public:
244 
245  static const std::string Name;
246 
247  static const std::string Desc;
248 
249 
250  MagBase() : MolDependent(Name, Desc) {}
251 
252  // --- Required implementations -----------
253 
255  Eigen::VectorXd evaluate(const Configuration &config) const override;
256 
258  std::unique_ptr<MagBase> clone() const {
259  return std::unique_ptr<MagBase>(this->_clone());
260  }
261 
262  // --- Specialized implementation -----------
263 
265  bool validate(const Configuration &config) const override;
266 
267  private:
268 
270  MagBase *_clone() const override {
271  return new MagBase(*this);
272  }
273 
274  };
275 
276 
281  class Corr : public VectorXdAttribute<Configuration> {
282 
283  public:
284 
285  static const std::string Name;
286 
287  static const std::string Desc;
288 
289 
291 
292  Corr(const Clexulator &clexulator) :
293  VectorXdAttribute<Configuration>(Name, Desc),
294  m_clexulator(clexulator) {}
295 
296 
297  // --- Required implementations -----------
298 
300  Eigen::VectorXd evaluate(const Configuration &config) const override;
301 
303  std::unique_ptr<Corr> clone() const {
304  return std::unique_ptr<Corr>(this->_clone());
305  }
306 
307 
308  // --- Specialized implementation -----------
309 
311  void init(const Configuration &_tmplt) const override;
312 
315  bool parse_args(const std::string &args) override;
316 
317 
318  private:
319 
321  Corr *_clone() const override {
322  return new Corr(*this);
323  }
324 
326  mutable std::string m_clex_name;
327 
328  };
329 
334  class Clex : public ScalarAttribute<Configuration> {
335 
336  public:
337 
338  static const std::string Name;
339 
340  static const std::string Desc;
341 
342 
343  Clex();
344 
346  Clex(const Clexulator &clexulator, const ECIContainer &eci, const Norm<Configuration> &norm);
347 
348 
349  // --- Required implementations -----------
350 
352  double evaluate(const Configuration &config) const override;
353 
355  std::unique_ptr<Clex> clone() const;
356 
357 
358  // --- Specialized implementation -----------
359 
360  // validate: predicted property can always be calculated if clexulator and
361  // eci were obtained ok
362 
364  void init(const Configuration &_tmplt) const override;
365 
367  bool parse_args(const std::string &args) override;
368 
370  std::string short_header(const Configuration &_tmplt) const override {
371  return "clex(" + m_clex_name + ")";
372  }
373 
374  private:
375 
377  double _norm(const Configuration &config) const;
378 
380  Clex *_clone() const override;
381 
382  mutable std::string m_clex_name;
386  };
387 
388  }
389 
390  namespace ConfigIO {
391 
393  //void initialize_formatting_dictionary(DataFormatterDictionary<Configuration> &dict);
394 
395 
397 
399 
401 
403 
405 
407 
409 
410  template<bool IsConst>
412 
414 
416 
418 
420 
422 
424 
426 
428 
430 
432 
434 
436 
438 
440 
442 
444 
446 
447  }
448 
449  template<>
450  StringAttributeDictionary<Configuration> make_string_dictionary<Configuration>();
451 
452  template<>
453  BooleanAttributeDictionary<Configuration> make_boolean_dictionary<Configuration>();
454 
455  template<>
456  IntegerAttributeDictionary<Configuration> make_integer_dictionary<Configuration>();
457 
458  template<>
459  ScalarAttributeDictionary<Configuration> make_scalar_dictionary<Configuration>();
460 
461  template<>
462  VectorXdAttributeDictionary<Configuration> make_vectorxd_dictionary<Configuration>();
463 
466 }
467 
468 #endif
469 
bool parse_args(const std::string &args) override
Expects arguments of the form 'name' or 'name(Au)', 'name(Pt)', etc.
Definition: ConfigIO.cc:18
std::unique_ptr< Comp > clone() const
Clone using copy constructor.
Definition: ConfigIO.hh:99
pair_type eci
Definition: settings.cc:112
AtomFrac SpeciesFrac
In the future, AtomFrac will actually be atoms only.
Definition: ConfigIO.hh:233
void init(const Configuration &_tmplt) const override
Adds index rules corresponding to the parsed args.
Definition: ConfigIO.cc:25
Eigen::VectorXd evaluate(const Configuration &config) const override
Returns the mag sites.
Definition: ConfigIO.cc:156
std::string m_clex_name
Definition: ConfigIO.hh:382
static const std::string Name
Definition: ConfigIO.hh:206
ConfigIO::GenericConfigFormatter< std::string > failure_type()
Definition: ConfigIO.cc:365
Eigen::VectorXd evaluate(const Configuration &config) const override
Returns the parametric composition.
Definition: ConfigIO.cc:111
Returns fraction of all species that are a particular species, excluding vacancies.
Definition: ConfigIO.hh:202
void init(const Configuration &_tmplt) const override
If not yet initialized, use the global clexulator and eci from the PrimClex.
Definition: ConfigIO.cc:258
std::vector< std::string > col_header(const Configuration &_tmplt) const override
col_header returns: {'comp(a)', 'comp(b)', ...'}
Definition: ConfigIO.cc:93
static const std::string Desc
Definition: ConfigIO.hh:287
static const std::string Desc
Definition: ConfigIO.hh:247
notstd::cloneable_ptr< Norm< Configuration > > m_norm
Definition: ConfigIO.hh:385
std::string short_header(const Configuration &_tmplt) const override
Short header returns: 'clex(formation_energy)', 'clex(formation_energy_per_species)', etc.
Definition: ConfigIO.hh:370
Abstract base class for creating 1D DatumFormatter.
static const std::string Desc
Definition: ConfigIO.hh:133
ConfigIO::Selected selected_in(const ConfigSelection< IsConst > &_selection)
std::unique_ptr< SiteFrac > clone() const
Clone using copy constructor.
Definition: ConfigIO.hh:183
std::unique_ptr< Corr > clone() const
Clone using copy constructor.
Definition: ConfigIO.hh:303
ConfigIO::GenericConfigFormatter< std::string > calc_status()
Definition: ConfigIO.cc:358
ConfigIO::GenericConfigFormatter< double > relaxed_energy()
Definition: ConfigIO.cc:407
ConfigIO::GenericConfigFormatter< double > relaxed_magmom()
Definition: ConfigIO.cc:513
IntegerAttributeDictionary< Configuration > make_integer_dictionary< Configuration >()
Definition: ConfigIO.cc:569
static const std::string Desc
Definition: ConfigIO.hh:86
Returns fraction of sites occupied by a species, including vacancies.
Definition: ConfigIO.hh:165
ConfigIO::GenericConfigFormatter< std::string > subgroup_name()
ECIContainer m_eci
Definition: ConfigIO.hh:384
Main CASM namespace.
Definition: complete.cpp:8
Prints a string value specified at construction. A header string can also be passed.
bool parse_args(const std::string &args) override
Expects 'clex', 'clex(formation_energy)', or 'clex(formation_energy_per_species)'.
Definition: ConfigIO.cc:276
MagBase * _clone() const override
Clone using copy constructor.
Definition: ConfigIO.hh:270
Base class for creating scalar DatumFormatter.
MolDependent(const std::string &_name, const std::string &_desc)
Definition: ConfigIO.hh:42
Calculate number of each species per unit cell.
Definition: ConfigIO.hh:127
static const std::string Desc
Definition: ConfigIO.hh:340
Calculate param composition of a Configuration.
Definition: ConfigIO.hh:80
ConfigIO::GenericConfigFormatter< double > lattice_deformation()
Definition: ConfigIO.cc:499
ConfigIO::GenericConfigFormatter< double > rms_force()
Definition: ConfigIO.cc:485
ConfigIO::GenericConfigFormatter< double > relaxed_magmom_per_species()
Definition: ConfigIO.cc:520
Corr(const Clexulator &clexulator)
Definition: ConfigIO.hh:292
Eigen::VectorXd evaluate(const Configuration &config) const override
Returns the atom fraction.
Definition: ConfigIO.cc:139
ConfigIO::GenericConfigFormatter< double > reference_energy()
Definition: ConfigIO.cc:423
A DatumFormatter that returns a 1D value of specified type, via functions that may be specified at ru...
double evaluate(const Configuration &config) const override
Returns the atom fraction.
Definition: ConfigIO.cc:248
Clexulator m_clexulator
Definition: ConfigIO.hh:325
double _norm(const Configuration &config) const
Returns the normalization.
Definition: ConfigIO.cc:310
void init(const Configuration &_tmplt) const override
If not yet initialized, use the global clexulator from the PrimClex.
Definition: ConfigIO.cc:183
ConfigIO::GenericConfigFormatter< bool > is_primitive()
Definition: ConfigIO.cc:473
T norm(const Tensor< T > &ttens)
Definition: Tensor.hh:968
Generic1DDatumFormatter< std::vector< double >, Configuration > relaxation_strain()
Evaluates correlations.
Definition: Clexulator.hh:240
static const std::string Name
Definition: ConfigIO.hh:131
static const std::string Desc
Definition: ConfigIO.hh:208
bool parse_args(const std::string &args) override
Expects arguments of the form 'comp' or 'comp(a)', 'comp(b)', etc.
Definition: ConfigIO.cc:81
StringAttributeDictionary< Configuration > make_string_dictionary< Configuration >()
Definition: ConfigIO.cc:533
Clexulator m_clexulator
Definition: ConfigIO.hh:383
Eigen::VectorXd evaluate(const Configuration &config) const override
Returns the site fraction.
Definition: ConfigIO.cc:125
Eigen::VectorXd VectorXd
BooleanAttributeDictionary< Configuration > make_boolean_dictionary< Configuration >()
Definition: ConfigIO.cc:550
CompN * _clone() const override
Clone using copy constructor.
Definition: ConfigIO.hh:153
ConfigIO::GenericConfigFormatter< double > volume_relaxation()
Definition: ConfigIO.cc:506
ConfigIO::GenericConfigFormatter< double > formation_energy()
Definition: ConfigIO.cc:439
SiteFrac * _clone() const override
Clone using copy constructor.
Definition: ConfigIO.hh:190
std::vector< std::string > col_header(const Configuration &_tmplt) const override
col_header returns: {'name(Au)', 'name(Pt)', ...}
Definition: ConfigIO.cc:51
std::unique_ptr< MagBase > clone() const
Clone using copy constructor.
Definition: ConfigIO.hh:258
std::vector< std::string > m_mol_names
Definition: ConfigIO.hh:58
ConfigIO::GenericConfigFormatter< bool > is_calculated()
Definition: ConfigIO.cc:467
ScalarAttributeDictionary< Configuration > make_scalar_dictionary< Configuration >()
Definition: ConfigIO.cc:583
Comp * _clone() const override
Clone using copy constructor.
Definition: ConfigIO.hh:118
std::unique_ptr< CompN > clone() const
Clone using copy constructor.
Definition: ConfigIO.hh:146
ConfigIO::GenericConfigFormatter< std::string > configname()
Constructs DataFormmaterDictionary containing all Configuration DatumFormatters.
Definition: ConfigIO.cc:340
AtomFrac * _clone() const override
Clone using copy constructor.
Definition: ConfigIO.hh:226
static const std::string Name
Definition: ConfigIO.hh:169
Returns predicted formation energy.
Definition: ConfigIO.hh:334
Returns fraction of sites occupied by a species.
Definition: ConfigIO.hh:38
static const std::string Name
Definition: ConfigIO.hh:84
bool validate(const Configuration &config) const override
Returns true if the Configuration has relaxed_mag.
Definition: ConfigIO.cc:151
bool validate(const Configuration &config) const override
Returns true if the PrimClex has composition axes.
Definition: ConfigIO.cc:76
static const std::string Name
Definition: ConfigIO.hh:285
ConfigIO::GenericConfigFormatter< double > basis_deformation()
Definition: ConfigIO.cc:492
ConfigIO::GenericConfigFormatter< double > reference_energy_per_species()
Definition: ConfigIO.cc:431
static const std::string Name
Definition: ConfigIO.hh:338
std::unique_ptr< AtomFrac > clone() const
Clone using copy constructor.
Definition: ConfigIO.hh:220
static const std::string Name
Definition: ConfigIO.hh:245
A 'cloneable_ptr' can be used in place of 'unique_ptr'.
std::unique_ptr< Clex > clone() const
Clone using copy constructor.
Definition: ConfigIO.cc:253
Clex * _clone() const override
Clone using copy constructor.
Definition: ConfigIO.cc:315
std::string m_clex_name
Definition: ConfigIO.hh:326
ConfigIO::GenericConfigFormatter< Index > scel_size()
Definition: ConfigIO.cc:373
Returns the site-specific magnetic moments.
Definition: ConfigIO.hh:240
A DatumFormatter that returns a value of specified type, via functions that may be specified at runti...
ConfigIO::GenericConfigFormatter< std::string > scelname()
Definition: ConfigIO.cc:348
static const std::string Desc
Definition: ConfigIO.hh:171
ConfigIO::GenericConfigFormatter< Index > multiplicity()
Definition: ConfigIO.cc:381
Returns correlation values.
Definition: ConfigIO.hh:281
Eigen::VectorXd evaluate(const Configuration &config) const override
Returns the atom fraction.
Definition: ConfigIO.cc:178
ConfigIO::GenericConfigFormatter< bool > is_canonical()
Definition: ConfigIO.cc:479
ConfigIO::GenericConfigFormatter< double > relaxed_energy_per_species()
Definition: ConfigIO.cc:415
bool parse_args(const std::string &args) override
Expects 'corr', 'corr(clex_name)', 'corr(index_expression)', or 'corr(clex_name,index_expression)'.
Definition: ConfigIO.cc:197
Corr * _clone() const override
Clone using copy constructor.
Definition: ConfigIO.hh:321
A Configuration represents the values of all degrees of freedom in a Supercell.
Eigen::VectorXd evaluate(const Configuration &config) const override
Returns the parametric composition.
Definition: ConfigIO.cc:71
Returns true if configuration is specified in given selection (default: MASTER)
VectorXdAttributeDictionary< Configuration > make_vectorxd_dictionary< Configuration >()
Definition: ConfigIO.cc:611
ConfigIO::GenericConfigFormatter< double > formation_energy_per_species()
Definition: ConfigIO.cc:448
A sparse container of ECI values and their corresponding orbit indices.
Definition: ECIContainer.hh:12