1#ifndef PSCF_SYMMETRY_GROUP_H
2#define PSCF_SYMMETRY_GROUP_H
35 template <
class Symmetry>
72 bool add(Symmetry& symmetry);
92 const Symmetry*
find(
const Symmetry& symmetry)
const;
146 std::vector<Symmetry> elements_;
159 template <
class Symmetry>
162 {
return elements_.size(); }
167 template <
class Symmetry>
170 {
return identity_; }
175 template <
class Symmetry>
178 {
return elements_[i]; }
183 template <
class Symmetry>
186 {
return elements_[i]; }
188 #ifndef PSCF_SYMMETRY_GROUP_TPP
A SpaceSymmetry represents a crystallographic space group symmetry.
Class template for a group of elements.
bool operator!=(SymmetryGroup< Symmetry > const &other) const
Inequality operator.
const Symmetry & identity() const
Return a reference to the identity element.
void clear()
Remove all elements except the identity.
bool operator==(SymmetryGroup< Symmetry > const &other) const
Equality operator.
~SymmetryGroup()
Destructor.
SymmetryGroup()
Default constructor.
const Symmetry * find(const Symmetry &symmetry) const
Find a symmetry within a group.
Symmetry & operator[](int i)
Element access operator (by reference).
bool isValid() const
Return true if valid complete group, or throw an Exception.
int size() const
Return number of elements in group (i.e., the order of the group).
SymmetryGroup< Symmetry > & operator=(const SymmetryGroup< Symmetry > &other)
Assignment operator.
bool add(Symmetry &symmetry)
Add a new element to the group.
void makeCompleteGroup()
Generate a complete group from the current elements.
C++ namespace for polymer self-consistent field theory (PSCF).