Mantid
|
ProductOfCyclicGroups expands a bit on the explanations given in CyclicGroup. More...
#include <ProductOfCyclicGroups.h>
Public Member Functions | |
ProductOfCyclicGroups (const std::string &generators) | |
String constructor with semicolon-separated symmetry operations. More... | |
ProductOfCyclicGroups (const std::vector< Group_const_sptr > &factorGroups) | |
Constructor which directly takes a list of factor groups to form the product. More... | |
Public Member Functions inherited from Mantid::Geometry::Group | |
bool | containsOperation (const SymmetryOperation &operation) const |
Returns true if the group contains the supplied operation. More... | |
bool | fulfillsAxiom (GroupAxiom axiom) const |
Checks whether a certain group axiom is fulfilled, can be used as a more fine-grained alternative to isGroup(). More... | |
CoordinateSystem | getCoordinateSystem () const |
Returns the axis system of the group (either orthogonal or hexagonal). More... | |
std::vector< SymmetryOperation > | getSymmetryOperations () const |
Returns a vector with all symmetry operations. More... | |
Group () | |
Default constructor. Creates a group with one symmetry operation (identity). More... | |
Group (const std::string &symmetryOperationString) | |
Uses SymmetryOperationFactory to create a vector of symmetry operations from the string. More... | |
Group (const std::vector< SymmetryOperation > &symmetryOperations) | |
Constructs a group from the symmetry operations in the vector, duplicates are removed. More... | |
bool | isGroup () const |
Returns whether the group fulfills the four group axioms. More... | |
bool | isInvariant (const Kernel::DblMatrix &tensor, double tolerance=1e-8) const |
Returns true if the tensor is invariant under the group operations. More... | |
bool | operator!= (const Group &other) const |
Returns true if groups are different from eachother. More... | |
Group | operator* (const Group &other) const |
Multiplication operator of two groups. More... | |
std::vector< Kernel::V3D > | operator* (const Kernel::V3D &vector) const |
Returns a unique set of Kernel::V3D resulting from applying all symmetry operations, vectors are wrapped to [0, 1). More... | |
bool | operator== (const Group &other) const |
Returns true if both groups contain the same set of symmetry operations. More... | |
size_t | order () const |
Returns the order of the group, which is the number of symmetry operations. More... | |
virtual | ~Group ()=default |
Protected Member Functions | |
std::vector< Group_const_sptr > | getFactorGroups (const std::vector< SymmetryOperation > &symmetryOperations) const |
Returns a vector of cyclic groups for the given vector of symmetry operations. More... | |
Group_const_sptr | getGeneratedGroup (const std::string &generators) const |
Generates symmetry operations from the string, creates a CyclicGroup from each operation and multiplies them to form a factor group. More... | |
Group_const_sptr | getProductOfCyclicGroups (const std::vector< Group_const_sptr > &factorGroups) const |
Multiplies all supplied groups and returns the result. More... | |
Protected Member Functions inherited from Mantid::Geometry::Group | |
bool | associativityHolds () const |
Checks that associativity holds, i.e. More... | |
bool | eachElementHasInverse () const |
Returns true if the inverse of each element is in the group. More... | |
CoordinateSystem | getCoordinateSystemFromOperations (const std::vector< SymmetryOperation > &symmetryOperations) const |
Returns the axis system based on the given symmetry operations. More... | |
bool | hasIdentity () const |
Returns true if the group has the identity element. More... | |
bool | isClosed () const |
Returns true if the group is closed, i.e. all elements of G * G are in G. More... | |
void | setSymmetryOperations (const std::vector< SymmetryOperation > &symmetryOperations) |
Assigns symmetry operations, throws std::invalid_argument if vector is empty. More... | |
Additional Inherited Members | |
Public Types inherited from Mantid::Geometry::Group | |
enum | CoordinateSystem { Orthogonal , Hexagonal } |
enum | GroupAxiom { Closure , Identity , Inversion , Associativity } |
Protected Attributes inherited from Mantid::Geometry::Group | |
std::vector< SymmetryOperation > | m_allOperations |
CoordinateSystem | m_axisSystem |
std::set< SymmetryOperation > | m_operationSet |
ProductOfCyclicGroups expands a bit on the explanations given in CyclicGroup.
As shown for example in [1], some point groups cannot be expressed solely as a cyclic group. Instead it's necessary to multiply two or three cyclic groups to obtain all symmetry operations of that group.
For this purpose, ProductOfCyclicGroups was created. It takes a set of n symmetry operations, each of which is seen as a generator of a cyclic group C_i. The resulting n groups ("factor groups") are multiplied to form a product group G:
G = C_1 * C_2 * ... * C_n
Where C_i is generated by the symmetry operation S_i. The notation in code to generate even large groups from a few generators becomes very short using this class:
Group_const_sptr pointGroup422 = GroupFactory::create<ProductOfCyclicGroups>("-y,x,z; x,-y,-z");
This is for example used in SpaceGroupFactory to create space groups from a small set of generators supplied in the International Tables for Crystallography A.
[1] Shmueli, U. Acta Crystallogr. A 40, 559–567 (1984). http://dx.doi.org/10.1107/S0108767384001161
Definition at line 48 of file ProductOfCyclicGroups.h.
Mantid::Geometry::ProductOfCyclicGroups::ProductOfCyclicGroups | ( | const std::string & | generators | ) |
String constructor with semicolon-separated symmetry operations.
Definition at line 16 of file ProductOfCyclicGroups.cpp.
Mantid::Geometry::ProductOfCyclicGroups::ProductOfCyclicGroups | ( | const std::vector< Group_const_sptr > & | factorGroups | ) |
Constructor which directly takes a list of factor groups to form the product.
Definition at line 19 of file ProductOfCyclicGroups.cpp.
|
protected |
Returns a vector of cyclic groups for the given vector of symmetry operations.
Definition at line 34 of file ProductOfCyclicGroups.cpp.
Referenced by getGeneratedGroup().
|
protected |
Generates symmetry operations from the string, creates a CyclicGroup from each operation and multiplies them to form a factor group.
Definition at line 24 of file ProductOfCyclicGroups.cpp.
References getFactorGroups(), getProductOfCyclicGroups(), and Mantid::Kernel::SingletonHolder< T >::Instance().
|
protected |
Multiplies all supplied groups and returns the result.
Definition at line 45 of file ProductOfCyclicGroups.cpp.
Referenced by getGeneratedGroup().