CASM  1.1.0
A Clusters Approach to Statistical Mechanics
SupercellClusterOrbits.hh
Go to the documentation of this file.
1 #ifndef CASM_SupercellClusterOrbits
2 #define CASM_SupercellClusterOrbits
3 
4 #include <set>
5 #include <vector>
6 
8 
9 namespace CASM {
10 
11 class IntegralCluster;
12 class Structure;
13 class SupercellSymInfo;
14 class Permutation;
15 class PermuteIterator;
16 
18 std::set<Index> make_cluster_site_indices(IntegralCluster const &cluster,
19  SupercellSymInfo const &sym_info);
20 
22 IntegralCluster make_cluster(std::set<Index> const &cluster_site_indices,
23  Structure const &prim,
24  SupercellSymInfo const &sym_info);
25 
27 template <typename PermuteIteratorIt>
28 std::vector<Permutation> make_inverse_permutations(PermuteIteratorIt begin,
29  PermuteIteratorIt end);
30 
32 std::set<Index> permute_cluster_site_indices(
33  Permutation const &inverse_permute,
34  std::set<Index> const &cluster_site_indices);
35 
38 template <typename InversePermutationIterator>
40  InversePermutationIterator inverse_permutations_begin,
41  InversePermutationIterator inverse_permutations_end,
42  std::set<Index> const &cluster_site_indices);
43 
46  bool operator()(std::set<Index> const &LHS, std::set<Index> const &RHS) const;
47 };
48 
50 template <typename InversePermutationIterator, typename ElementIterator>
51 std::set<std::set<Index>, ClusterSiteIndicesCompare>
53  SupercellSymInfo const &sym_info,
54  InversePermutationIterator inverse_permutations_begin,
55  InversePermutationIterator inverse_permutations_end,
56  ElementIterator element_begin, ElementIterator element_end);
57 
58 } // namespace CASM
59 
60 #endif
A class that collects all symmetry information for for performing symmetry transformations on the sit...
Main CASM namespace.
Definition: APICommand.hh:8
std::set< std::set< Index >, ClusterSiteIndicesCompare > make_orbit_generators_under_periodic_boundary_conditions(SupercellSymInfo const &sym_info, InversePermutationIterator inverse_permutations_begin, InversePermutationIterator inverse_permutations_end, ElementIterator element_begin, ElementIterator element_end)
Return "within_scel" orbit generators, as sets of cluster site indices.
std::set< Index > make_canonical_cluster_site_indices(InversePermutationIterator inverse_permutations_begin, InversePermutationIterator inverse_permutations_end, std::set< Index > const &cluster_site_indices)
std::set< Index > make_cluster_site_indices(IntegralCluster const &cluster, SupercellSymInfo const &sym_info)
Return site indices of cluster sites.
IntegralCluster make_cluster(std::set< Index > const &cluster_site_indices, Structure const &prim, SupercellSymInfo const &sym_info)
Return cluster from cluster site indices.
std::vector< Permutation > make_inverse_permutations(PermuteIteratorIt begin, PermuteIteratorIt end)
Make inverse permutations.
std::set< Index > permute_cluster_site_indices(Permutation const &inverse_permute, std::set< Index > const &cluster_site_indices)
Rather than permute values, here we want to permute cluster site indices.
Sort std::set<Index> by size, then value (lexicographical compare)
bool operator()(std::set< Index > const &LHS, std::set< Index > const &RHS) const
Sort std::set<Index> by size, then value (lexicographical compare)