Mantid
Loading...
Searching...
No Matches
Protected Member Functions | List of all members
Mantid::Geometry::SymmetryElementWithAxisGenerator Class Referenceabstract

SymmetryElementWithAxisGenerator does not create any elements directly, it serves as a base for SymmetryElementRotationGenerator and SymmetryAxisMirrorGenerator, which have in common that the axis of the symmetry element as well as any potential translations must be determined. More...

#include <SymmetryElementFactory.h>

Inheritance diagram for Mantid::Geometry::SymmetryElementWithAxisGenerator:
Mantid::Geometry::AbstractSymmetryElementGenerator Mantid::Geometry::SymmetryElementMirrorGenerator Mantid::Geometry::SymmetryElementRotationGenerator

Protected Member Functions

V3R determineAxis (const Kernel::IntMatrix &matrix) const
 Returns the symmetry axis for the given matrix. More...
 
virtual std::string determineSymbol (const SymmetryOperation &operation) const =0
 
V3R determineTranslation (const SymmetryOperation &operation) const
 Returns the reduced vector of the operation. More...
 

Additional Inherited Members

- Public Member Functions inherited from Mantid::Geometry::AbstractSymmetryElementGenerator
virtual bool canProcess (const SymmetryOperation &operation) const =0
 Should return true if the generator can produce a valid SymmetryElement from the provided SymmetryOperation. More...
 
virtual SymmetryElement_sptr generateElement (const SymmetryOperation &operation) const =0
 Must generate a valid SymmetryElement from the given operation. More...
 
virtual ~AbstractSymmetryElementGenerator ()=default
 

Detailed Description

SymmetryElementWithAxisGenerator does not create any elements directly, it serves as a base for SymmetryElementRotationGenerator and SymmetryAxisMirrorGenerator, which have in common that the axis of the symmetry element as well as any potential translations must be determined.

These are implemented according to the algorithms found in the International Tables for Crystallography A, section 11.2.

Subclasses must implement the method to determine the Hermann-Mauguin symbol, as that algorithm is different for example for rotation-axes and mirror-planes.

Definition at line 100 of file SymmetryElementFactory.h.

Member Function Documentation

◆ determineAxis()

V3R Mantid::Geometry::SymmetryElementWithAxisGenerator::determineAxis ( const Kernel::IntMatrix matrix) const
protected

Returns the symmetry axis for the given matrix.

According to ITA, 11.2 the axis of a symmetry operation can be determined by solving the Eigenvalue problem \(Wu = u\) for rotations or \(Wu = -u\) for rotoinversions. This is implemented using the general real non-symmetric eigen-problem solver provided by the GSL.

Parameters
matrix:: Matrix of a SymmetryOperation
Returns
Axis of symmetry element.

Definition at line 113 of file SymmetryElementFactory.cpp.

References Mantid::Kernel::Matrix< T >::determinant(), fabs, Mantid::Geometry::getGSLIdentityMatrix(), Mantid::Geometry::getGSLMatrix(), Mantid::Kernel::Matrix< T >::numCols(), Mantid::Kernel::Matrix< T >::numRows(), Mantid::Kernel::V3D::X(), Mantid::Kernel::V3D::Y(), and Mantid::Kernel::V3D::Z().

Referenced by Mantid::Geometry::SymmetryElementRotationGenerator::generateElement(), and Mantid::Geometry::SymmetryElementMirrorGenerator::generateElement().

◆ determineSymbol()

virtual std::string Mantid::Geometry::SymmetryElementWithAxisGenerator::determineSymbol ( const SymmetryOperation operation) const
protectedpure virtual

◆ determineTranslation()

V3R Mantid::Geometry::SymmetryElementWithAxisGenerator::determineTranslation ( const SymmetryOperation operation) const
protected

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