Mantid
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | List of all members
Mantid::Geometry::CyclicGroup Class Reference

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>

Inheritance diagram for Mantid::Geometry::CyclicGroup:
Mantid::Geometry::Group

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< SymmetryOperationgetSymmetryOperations () 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::V3Doperator* (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< SymmetryOperationgenerateAllOperations (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< SymmetryOperationm_allOperations
 
CoordinateSystem m_axisSystem
 
std::set< SymmetryOperationm_operationSet
 

Detailed Description

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

Author
Michael Wedel, Paul Scherrer Institut - SINQ
Date
03/10/2014

Definition at line 67 of file CyclicGroup.h.

Constructor & Destructor Documentation

◆ CyclicGroup() [1/2]

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.

◆ CyclicGroup() [2/2]

Mantid::Geometry::CyclicGroup::CyclicGroup ( const SymmetryOperation symmetryOperation)

Construct CyclicGroup from a SymmetryOperation object.

Definition at line 19 of file CyclicGroup.cpp.

Member Function Documentation

◆ generateAllOperations()

std::vector< SymmetryOperation > Mantid::Geometry::CyclicGroup::generateAllOperations ( const SymmetryOperation operation) const
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().


The documentation for this class was generated from the following files: