1 #ifndef CASM_SupercellClusterOrbits
2 #define CASM_SupercellClusterOrbits
11 class IntegralCluster;
13 class SupercellSymInfo;
15 class PermuteIterator;
19 SupercellSymInfo
const &sym_info);
22 IntegralCluster
make_cluster(std::set<Index>
const &cluster_site_indices,
23 Structure
const &prim,
24 SupercellSymInfo
const &sym_info);
27 template <
typename PermuteIteratorIt>
29 PermuteIteratorIt end);
33 Permutation
const &inverse_permute,
34 std::set<Index>
const &cluster_site_indices);
38 template <
typename InversePermutationIterator>
40 InversePermutationIterator inverse_permutations_begin,
41 InversePermutationIterator inverse_permutations_end,
42 std::set<Index>
const &cluster_site_indices);
46 bool operator()(std::set<Index>
const &LHS, std::set<Index>
const &RHS)
const;
50 template <
typename InversePermutationIterator,
typename ElementIterator>
54 InversePermutationIterator inverse_permutations_begin,
55 InversePermutationIterator inverse_permutations_end,
56 ElementIterator element_begin, ElementIterator element_end);
A class that collects all symmetry information for for performing symmetry transformations on the sit...
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)