CASM  1.1.0
A Clusters Approach to Statistical Mechanics
SubOrbits.hh
Go to the documentation of this file.
1 #ifndef CASM_SubOrbits
2 #define CASM_SubOrbits
3 
4 namespace CASM {
5 
6 // class SymGroup;
7 
10 template <typename GroupOpIterator, typename SubgroupOpIterator>
12  public:
13  MakeSubOrbitGenerators(GroupOpIterator group_begin, GroupOpIterator group_end,
14  SubgroupOpIterator subgroup_begin,
15  SubgroupOpIterator subgroup_end)
16  : m_group_begin(group_begin),
17  m_group_end(group_end),
18  m_subgroup_begin(subgroup_begin),
19  m_subgroup_end(subgroup_end) {}
20 
21  // /// Output generating elements for the sub-orbits corresponding to group ->
22  // subgroup symmetry breaking template<typename Element, typename
23  // SymCompareType, typename ElementOutputIterator> ElementOutputIterator
24  // operator()(
25  // Element const &element,
26  // SymCompareType const &sym_compare,
27  // ElementOutputIterator result) const;
28 
31  template <typename Element, typename CopyApplyFunctionType,
32  typename PrepareFunctionType, typename InvariantSubgroupOpIterator,
33  typename ElementOutputIterator>
34  ElementOutputIterator operator()(
35  Element const &element, CopyApplyFunctionType copy_apply_f,
36  PrepareFunctionType prepare_f,
37  InvariantSubgroupOpIterator invariant_subgroup_begin,
38  InvariantSubgroupOpIterator invariant_subgroup_end,
39  ElementOutputIterator result) const;
40 
41  private:
42  GroupOpIterator const m_group_begin;
43  GroupOpIterator const m_group_end;
44  SubgroupOpIterator const m_subgroup_begin;
45  SubgroupOpIterator const m_subgroup_end;
46 };
47 
48 template <typename GroupOpIterator, typename SubgroupOpIterator>
50 make_suborbit_generators_f(GroupOpIterator group_begin,
51  GroupOpIterator group_end,
52  SubgroupOpIterator subgroup_begin,
53  SubgroupOpIterator subgroup_end) {
55  group_begin, group_end, subgroup_begin, subgroup_end};
56 }
57 
58 template <typename GroupOpIterator, typename SubgroupOpIterator,
59  typename ElementIterator, typename SymCompareType,
60  typename ElementOutputIterator>
61 ElementOutputIterator make_suborbit_generators(
62  GroupOpIterator group_begin, GroupOpIterator group_end,
63  SubgroupOpIterator subgroup_begin, SubgroupOpIterator subgroup_end,
64  ElementIterator element_begin, ElementIterator element_end,
65  SymCompareType const &sym_compare, ElementOutputIterator result);
66 
67 } // namespace CASM
68 
69 #endif
Output the orbit generators necessary to construct the sub-orbits corresponding to group -> subgroup ...
Definition: SubOrbits.hh:11
MakeSubOrbitGenerators(GroupOpIterator group_begin, GroupOpIterator group_end, SubgroupOpIterator subgroup_begin, SubgroupOpIterator subgroup_end)
Definition: SubOrbits.hh:13
GroupOpIterator const m_group_begin
Definition: SubOrbits.hh:42
SubgroupOpIterator const m_subgroup_begin
Definition: SubOrbits.hh:44
SubgroupOpIterator const m_subgroup_end
Definition: SubOrbits.hh:45
ElementOutputIterator operator()(Element const &element, CopyApplyFunctionType copy_apply_f, PrepareFunctionType prepare_f, InvariantSubgroupOpIterator invariant_subgroup_begin, InvariantSubgroupOpIterator invariant_subgroup_end, ElementOutputIterator result) const
GroupOpIterator const m_group_end
Definition: SubOrbits.hh:43
Main CASM namespace.
Definition: APICommand.hh:8
MakeSubOrbitGenerators< GroupOpIterator, SubgroupOpIterator > make_suborbit_generators_f(GroupOpIterator group_begin, GroupOpIterator group_end, SubgroupOpIterator subgroup_begin, SubgroupOpIterator subgroup_end)
Definition: SubOrbits.hh:50
ElementOutputIterator make_suborbit_generators(GroupOpIterator group_begin, GroupOpIterator group_end, SubgroupOpIterator subgroup_begin, SubgroupOpIterator subgroup_end, ElementIterator element_begin, ElementIterator element_end, SymCompareType const &sym_compare, ElementOutputIterator result)