CASM  1.1.0
A Clusters Approach to Statistical Mechanics
SpeciesAttribute.hh
Go to the documentation of this file.
1 #ifndef CASM_SpeciesAttribute
2 #define CASM_SpeciesAttribute
3 
6 #include "casm/global/eigen.hh"
10 
11 namespace CASM {
12 class jsonParser;
13 namespace xtal {
14 struct SymOp;
15 class SpeciesAttribute;
16 
17 namespace SpeciesAttribute_impl {
18 
19 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20 
24 
25 } // namespace SpeciesAttribute_impl
26 
27 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28 
30  public:
32  using KeyType = std::string;
33 
34  BasicTraits const &traits(KeyType const &key);
35 
37  Eigen::Ref<const Eigen::VectorXd> const &_value)
38  : m_traits(_traits), m_value(_value) {}
39 
41  : SpeciesAttribute(_traits, Eigen::VectorXd::Zero(_traits.dim())) {}
42 
43  std::string const &name() const { return traits().name(); }
44 
45  Eigen::VectorXd const &value() const { return m_value; }
46 
47  void set_value(Eigen::Ref<const Eigen::VectorXd> const &_value) {
48  m_value = _value;
49  }
50 
51  bool identical(SpeciesAttribute const &other, double _tol) const;
52 
53  BasicTraits const &traits() const { return m_traits; }
54 
55  private:
58 };
59 
60 } // namespace xtal
61 } // namespace CASM
62 
63 namespace CASM {
64 namespace sym {
65 xtal::SpeciesAttribute &apply(const xtal::SymOp &op,
66  xtal::SpeciesAttribute &mutating_attribute);
67 xtal::SpeciesAttribute copy_apply(const xtal::SymOp &op,
68  xtal::SpeciesAttribute attribute);
69 
70 template <typename ExternSymOp>
71 xtal::SpeciesAttribute copy_apply(const ExternSymOp &op,
72  xtal::SpeciesAttribute attribute) {
74  attribute);
75 }
76 } // namespace sym
77 } // namespace CASM
78 #endif
Specifies traits of (possibly) anisotropic crystal properties.
std::string const & name() const
Const access of name.
Parsing dictionary for obtaining the correct MoleculeAttribute given a name.
void set_value(Eigen::Ref< const Eigen::VectorXd > const &_value)
std::string const & name() const
BasicTraits const & traits(KeyType const &key)
BasicTraits const & traits() const
SpeciesAttribute(AnisoValTraits const &_traits)
Eigen::VectorXd const & value() const
bool identical(SpeciesAttribute const &other, double _tol) const
SpeciesAttribute(AnisoValTraits const &_traits, Eigen::Ref< const Eigen::VectorXd > const &_value)
xtal::Coordinate copy_apply(const xtal::SymOp &op, xtal::Coordinate coord)
Copy and apply SymOp to a Coordinate.
Definition: Coordinate.cc:354
xtal::Coordinate & apply(const xtal::SymOp &op, xtal::Coordinate &coord)
apply SymOp to a Coordinate
Definition: Coordinate.cc:347
Main CASM namespace.
Definition: APICommand.hh:8
Eigen::VectorXd VectorXd