Mantid
|
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>
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 |
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.
|
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.
matrix | :: Matrix of a SymmetryOperation |
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().
|
protectedpure virtual |
|
protected |
Returns the reduced vector of the operation.
Definition at line 57 of file SymmetryElementFactory.cpp.
References Mantid::Geometry::SymmetryOperation::reducedVector().
Referenced by Mantid::Geometry::SymmetryElementRotationGenerator::determineSymbol(), Mantid::Geometry::SymmetryElementMirrorGenerator::determineSymbol(), Mantid::Geometry::SymmetryElementRotationGenerator::generateElement(), and Mantid::Geometry::SymmetryElementMirrorGenerator::generateElement().