CASM  1.1.0
A Clusters Approach to Statistical Mechanics
ScelEnumEquivalents.cc
Go to the documentation of this file.
2 
4 #include "casm/clex/PrimClex.hh"
9 
10 namespace CASM {
11 
12 namespace {
13 
14 struct MakeInvariantSubgroup {
15  MakeInvariantSubgroup() {}
16 
17  template <typename SymOpIterator, typename SymOpOutputIterator>
18  SymOpOutputIterator operator()(const Supercell &scel, SymOpIterator begin,
19  SymOpIterator end,
20  SymOpOutputIterator result) {
21  return sym::invariant_subgroup(std::vector<SymOp>(begin, end),
22  scel.lattice(), result);
23  }
24 };
25 
26 } // namespace
27 
28 const std::string ScelEnumEquivalents::enumerator_name = "ScelEnumEquivalents";
29 
31  : EnumEquivalents<Supercell, std::vector<SymOp>::const_iterator, SymOp,
33  scel.canonical_form(), scel.prim().point_group().begin(),
34  scel.prim().point_group().end(), MakeInvariantSubgroup()) {}
35 
36 } // namespace CASM
Enumerate over all equivalents.
static const std::string enumerator_name
ScelEnumEquivalents(const Supercell &scel)
Represents a supercell of the primitive parent crystal structure.
Definition: Supercell.hh:51
SymOp is the Coordinate representation of a symmetry operation it keeps fraction (FRAC) and Cartesian...
Definition: SymOp.hh:28
SymGroup invariant_subgroup(const SymGroup &super_group, const xtal::Lattice &lat)
Returns the subgroup of the given group that keeps the lattice invariant.
Definition: SymTools.cc:34
Main CASM namespace.
Definition: APICommand.hh:8
Definition: stream_io.hh:24