CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
ConfigIOStrain.hh
Go to the documentation of this file.
1 #ifndef CONFIGIOSTRAIN_HH
2 #define CONFIGIOSTRAIN_HH
3 
5 #include "casm/clex/PrimClex.hh"
7 
8 
9 namespace CASM {
10 
11  class Configuration;
12 
13  namespace ConfigIO {
14 
31  class RelaxationStrain: public VectorXdAttribute<Configuration> {
32  public:
34  VectorXdAttribute<Configuration>("relaxation_strain", "The strain of the configuration due to relaxation, measured relative to ideal lattice vectors. Ordered as [E(0,0), E(1,1), E(2,2), E(1,2), E(0,2), E(0,1)]. Accepts strain convention as argument ('GL' [Green-Lagrange, Default], 'EA' [Euler-Almansi], 'B' [Biot], or 'H' [Hencky]). Accepts index as argument on interval [0,5]"),
35  m_straincalc(true) {};
36 
37 
38  // --- Required implementations -----------
39 
40  std::unique_ptr<RelaxationStrain> clone()const {
41  return std::unique_ptr<RelaxationStrain>(this->_clone());
42  }
43 
44  Eigen::VectorXd evaluate(const Configuration &_config) const override;
45 
46 
47  // --- Specialized implementation -----------
48 
49  void init(const Configuration &_tmplt) const override;
50 
51  bool validate(const Configuration &_config) const override;
52 
53  std::string short_header(const Configuration &_config) const override;
54 
55  std::vector<std::string> col_header(const Configuration &_config) const override;
56  /*
57  void inject(const Configuration &_config, DataStream &_stream, Index) const override;
58 
59  void print(const Configuration &_config, std::ostream &_stream, Index) const override;
60 
61  jsonParser &to_json(const Configuration &_config, jsonParser &json)const override;
62  */
63  bool parse_args(const std::string &args) override;
64 
65  protected:
67  mutable std::string m_metric_name;
68 
69  private:
71  RelaxationStrain *_clone() const override {
72  return new RelaxationStrain(*this);
73  }
74 
75  };
76 
77 
94  class DoFStrain: public VectorXdAttribute<Configuration> {
95  public:
97  VectorXdAttribute<Configuration>("dof_strain", "The imposed strain of the configuration due to relaxation, measured relative to ideal lattice vectors. Ordered as [E(0,0), E(1,1), E(2,2), E(1,2), E(0,2), E(0,1)]. Accepts strain convention as argument ('GL' [Green-Lagrange, Default], 'EA' [Euler-Almansi], 'B' [Biot], or 'H' [Hencky]). Accepts index as argument on interval [0,5]"),
98  m_straincalc(true) {};
99 
100 
101  // --- Required implementations -----------
102 
103  std::unique_ptr<DoFStrain> clone()const {
104  return std::unique_ptr<DoFStrain>(this->_clone());
105  }
106 
107  Eigen::VectorXd evaluate(const Configuration &_config) const override;
108 
109 
110  // --- Specialized implementation -----------
111 
112  void init(const Configuration &_tmplt) const override;
113 
114  std::string short_header(const Configuration &_config) const override;
115 
116  std::vector<std::string> col_header(const Configuration &_config) const override;
117  /*
118  void inject(const Configuration &_config, DataStream &_stream, Index) const override;
119 
120  void print(const Configuration &_config, std::ostream &_stream, Index) const override;
121 
122  jsonParser &to_json(const Configuration &_config, jsonParser &json)const override;
123  */
124  bool parse_args(const std::string &args) override;
125 
126  protected:
128  mutable std::string m_metric_name;
129 
130  private:
132  DoFStrain *_clone() const override {
133  return new DoFStrain(*this);
134  }
135 
136  };
137 
138  }
139 }
140 #endif
141 
std::unique_ptr< DoFStrain > clone() const
void init(const Configuration &_tmplt) const override
DoFStrain * _clone() const override
Clone.
std::unique_ptr< RelaxationStrain > clone() const
Eigen::VectorXd evaluate(const Configuration &_config) const override
Abstract base class for creating 1D DatumFormatter.
void init(const Configuration &_tmplt) const override
Main CASM namespace.
Definition: complete.cpp:8
Eigen::VectorXd evaluate(const Configuration &_config) const override
bool parse_args(const std::string &args) override
Default implementation calls _parse_index_expression.
std::string short_header(const Configuration &_config) const override
std::string short_header(const Configuration &_config) const override
std::vector< std::string > col_header(const Configuration &_config) const override
StrainConverter m_straincalc
Eigen::VectorXd VectorXd
RelaxationStrain * _clone() const override
Clone.
std::vector< std::string > col_header(const Configuration &_config) const override
The strain of the configuration due to relaxation, measured relative to ideal lattice vectors...
The strain of the configuration due to relaxation, measured relative to ideal lattice vectors...
bool validate(const Configuration &_config) const override
bool parse_args(const std::string &args) override
Default implementation calls _parse_index_expression.
A Configuration represents the values of all degrees of freedom in a Supercell.