|
Mantid
|
A cyclic group G has the property that it can be represented by powers of one symmetry operation S of order n: More...
#include <CyclicGroup.h>
Public Member Functions | |
| CyclicGroup (const std::string &symmetryOperationString) | |
| Construct cyclic group from one symmetry operation by applying it to itself until identity is obtained. More... | |
| CyclicGroup (const SymmetryOperation &symmetryOperation) | |
| Construct CyclicGroup from a SymmetryOperation object. 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< SymmetryOperation > | generateAllOperations (const SymmetryOperation &operation) const |
| Returns a vector with all symmetry operations that are part of the cyclic group defined by the generating operation. 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 |
A cyclic group G has the property that it can be represented by powers of one symmetry operation S of order n:
G = { S^1, S^2, ..., S^n = S^0 = I }
The operation S^m is defined as carrying out the multiplication S * S * ... * S. To illustrate this, a four-fold rotation around the z-axis is considered. The symmetry operation representing the transformation by this symmetry element is "-y,x,z". This is also the first member of the resulting group:
S^1 = S = -y,x,z
Then, multiplying this by itself:
S^2 = S * S = -x,-y,z S^3 = S * S * S = y,-x,z S^4 = S * S * S * S = x,y,z = I
Thus, the cyclic group G resulting from the operation "-y,x,z" contains the following members:
G = { S^1, S^2, S^3, I } = { -y,x,z; -x,-y,z; y,-x,z; x,y,z }
This example shows in fact how the point group "4" can be generated as a cyclic group by the generator S = -y,x,z. Details about this are given for example in [1].
In code, the example is very concise:
Group_const_sptr pointGroup4 =
GroupFactory::create<CyclicGroup>("-y,x,z");
This is much more convenient than having to construct a Group, where all four symmetry operations would have to be supplied.
Related to this class is ProductOfCyclicGroups, which provides an easy way to express a group that is the product of multiple cyclic groups (such as some point groups).
[1] Shmueli, U. Acta Crystallogr. A 40, 559–567 (1984). http://dx.doi.org/10.1107/S0108767384001161
Definition at line 67 of file CyclicGroup.h.
| Mantid::Geometry::CyclicGroup::CyclicGroup | ( | const std::string & | symmetryOperationString | ) |
Construct cyclic group from one symmetry operation by applying it to itself until identity is obtained.
Definition at line 15 of file CyclicGroup.cpp.
| Mantid::Geometry::CyclicGroup::CyclicGroup | ( | const SymmetryOperation & | symmetryOperation | ) |
Construct CyclicGroup from a SymmetryOperation object.
Definition at line 19 of file CyclicGroup.cpp.
|
protected |
Returns a vector with all symmetry operations that are part of the cyclic group defined by the generating operation.
Definition at line 24 of file CyclicGroup.cpp.
References Mantid::Geometry::SymmetryOperation::order().