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().