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

ProductOfCyclicGroups expands a bit on the explanations given in CyclicGroup. More...

#include <ProductOfCyclicGroups.h>

Inheritance diagram for Mantid::Geometry::ProductOfCyclicGroups:
Mantid::Geometry::Group

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< 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< Group_const_sptrgetFactorGroups (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< SymmetryOperationm_allOperations
 
CoordinateSystem m_axisSystem
 
std::set< SymmetryOperationm_operationSet
 

Detailed Description

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

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

Definition at line 48 of file ProductOfCyclicGroups.h.

Constructor & Destructor Documentation

◆ ProductOfCyclicGroups() [1/2]

Mantid::Geometry::ProductOfCyclicGroups::ProductOfCyclicGroups ( const std::string &  generators)

String constructor with semicolon-separated symmetry operations.

Definition at line 16 of file ProductOfCyclicGroups.cpp.

◆ ProductOfCyclicGroups() [2/2]

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.

Member Function Documentation

◆ getFactorGroups()

std::vector< Group_const_sptr > Mantid::Geometry::ProductOfCyclicGroups::getFactorGroups ( const std::vector< SymmetryOperation > &  symmetryOperations) const
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().

◆ getGeneratedGroup()

Group_const_sptr Mantid::Geometry::ProductOfCyclicGroups::getGeneratedGroup ( const std::string &  generators) const
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().

◆ getProductOfCyclicGroups()

Group_const_sptr Mantid::Geometry::ProductOfCyclicGroups::getProductOfCyclicGroups ( const std::vector< Group_const_sptr > &  factorGroups) const
protected

Multiplies all supplied groups and returns the result.

Definition at line 45 of file ProductOfCyclicGroups.cpp.

Referenced by getGeneratedGroup().


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