CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
LatticeEnumEquivalents.cc
Go to the documentation of this file.
3 
4 namespace CASM {
5 
6  namespace {
7 
8  struct MakeInvariantSubgroup {
9 
10  MakeInvariantSubgroup(double _tol) : tol(_tol) {}
11 
12  template<typename SymOpIterator, typename SymOpOutputIterator>
13  SymOpOutputIterator operator()(
14  const Lattice &lat,
15  SymOpIterator begin,
16  SymOpIterator end,
17  SymOpOutputIterator result) {
18  return lat.find_invariant_subgroup(begin, end, result, tol);
19  }
20 
21  double tol;
22  };
23 
24  }
25 
26  const std::string LatticeEnumEquivalents::enumerator_name = "LatticeEnumEquivalents";
27 
38  lat.canonical_form(super_g, tol), super_g.begin(), super_g.end(), MakeInvariantSubgroup(tol)) {
39 
40  if(!super_g.begin()->has_valid_master()) {
41  throw std::runtime_error("Error constructing LatticeEnumEquivalents: SymGroup has no MasterSymGroup");
42  }
43 
44  }
45 
46 }
Main CASM namespace.
Definition: complete.cpp:8
SymGroup is a collection of symmetry operations that satisfy the group property The symmetry operatio...
Definition: SymGroup.hh:33
double tol
LatticeEnumEquivalents(const Lattice &lat, const SymGroup &super_g, double tol)
Constructor.
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
Definition: SymOp.hh:28
static const std::string enumerator_name
Enumerate over all equivalents.
T const * begin() const
Definition: Array.hh:185
Basic std::vector like container (deprecated)