CASM  1.1.0
A Clusters Approach to Statistical Mechanics
SymBasisPermute.hh
Go to the documentation of this file.
1 #ifndef SYMBASISPERMUTE_HH
2 #define SYMBASISPERMUTE_HH
3 
4 #include <vector>
5 
7 #include "casm/symmetry/SymOp.hh"
9 
10 namespace CASM {
11 namespace xtal {
12 class Lattice;
13 }
14 using xtal::Lattice;
15 using xtal::UnitCellCoord;
16 
17 class MasterSymGroup;
18 
54  private:
57  std::vector<UnitCellCoord> m_ucc_permute;
58 
61 
62  public:
63  typedef Index size_type;
64 
66  SymBasisPermute(SymOp const &_op, Lattice const &_lat,
67  std::vector<UnitCellCoord> const &_ucc_permute);
68 
70  SymOpRepresentation *copy() const override {
71  return new SymBasisPermute(*this);
72  };
73 
75  size_type size() const { return m_ucc_permute.size(); }
76 
78  UnitCellCoord operator[](Index b) const { return m_ucc_permute[b]; }
79 
81  UnitCellCoord at(Index b) const { return m_ucc_permute.at(b); }
82 
84  SymBasisPermute const *ucc_permutation() const override { return this; };
85 
87  const std::vector<UnitCellCoord> &data() const { return m_ucc_permute; }
88 
90  const Eigen::Matrix3l &matrix() const { return m_point_mat; }
91 };
92 
93 } // namespace CASM
94 #endif
SymBasisPermute describes how a symmetry operation permutes atoms in a basis.
const Eigen::Matrix3l & matrix() const
Get underlying integer transformation amtrix.
Eigen::Matrix3l m_point_mat
Transform fractional coordinates, integer version of SymOp::matrix()
SymBasisPermute(SymOp const &_op, Lattice const &_lat, std::vector< UnitCellCoord > const &_ucc_permute)
Construct SymBasisPermute.
const std::vector< UnitCellCoord > & data() const
Get underlying data (data()[b] is the result of transforming (b,0,0,0))
UnitCellCoord operator[](Index b) const
Return UnitCellCoord that (b,0,0,0) transforms to.
SymOpRepresentation * copy() const override
Return pointer to a copy of this SymBasisPermute.
UnitCellCoord at(Index b) const
Return UnitCellCoord that (b,0,0,0) transforms to.
SymBasisPermute const * ucc_permutation() const override
Get this from a SymOp.
size_type size() const
Return number of basis sites.
std::vector< UnitCellCoord > m_ucc_permute
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
Definition: SymOp.hh:28
SymOpRepresentation is the base class for anything describes a symmetry operation.
Unit Cell Coordinates.
Main CASM namespace.
Definition: APICommand.hh:8
INDEX_TYPE Index
For long integer indexing:
Definition: definitions.hh:39
Matrix< long int, 3, 3 > Matrix3l
Definition: eigen.hh:12