Mantid
|
A class containing the Point Groups for a crystal. More...
#include <PointGroup.h>
Public Types | |
enum class | CrystalSystem { Triclinic , Monoclinic , Orthorhombic , Tetragonal , Hexagonal , Trigonal , Cubic } |
enum class | LatticeSystem { Triclinic , Monoclinic , Orthorhombic , Tetragonal , Hexagonal , Rhombohedral , Cubic } |
Public Types inherited from Mantid::Geometry::Group | |
enum | CoordinateSystem { Orthogonal , Hexagonal } |
enum | GroupAxiom { Closure , Identity , Inversion , Associativity } |
Public Member Functions | |
CrystalSystem | crystalSystem () const |
std::vector< Kernel::V3D > | getEquivalents (const Kernel::V3D &hkl) const |
Returns a vector with all equivalent hkls. More... | |
std::string | getName () const |
Name of the point group. More... | |
Kernel::V3D | getReflectionFamily (const Kernel::V3D &hkl) const |
Returns the same hkl for all equivalent hkls. More... | |
std::string | getSymbol () const |
Hermann-Mauguin symbol. More... | |
bool | isEquivalent (const Kernel::V3D &hkl, const Kernel::V3D &hkl2) const |
Return true if the hkls are in same group. More... | |
LatticeSystem | latticeSystem () const |
PointGroup (const std::string &symbolHM, const Group &group, const std::string &description="") | |
Protected constructor - can not be used directly. 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< Kernel::V3D > | getAllEquivalents (const Kernel::V3D &hkl) const |
Generates a set of hkls. More... | |
CrystalSystem | getCrystalSystemFromGroup () const |
Returns the CrystalSystem determined from symmetry elements. More... | |
LatticeSystem | getLatticeSystemFromCrystalSystemAndGroup (const CrystalSystem &crystalSystem) const |
Returns the LatticeSystem of the point group, using the crystal system. 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... | |
Protected Attributes | |
CrystalSystem | m_crystalSystem |
LatticeSystem | m_latticeSystem |
std::string | m_name |
std::string | m_symbolHM |
Protected Attributes inherited from Mantid::Geometry::Group | |
std::vector< SymmetryOperation > | m_allOperations |
CoordinateSystem | m_axisSystem |
std::set< SymmetryOperation > | m_operationSet |
A class containing the Point Groups for a crystal.
Definition at line 31 of file PointGroup.h.
|
strong |
Enumerator | |
---|---|
Triclinic | |
Monoclinic | |
Orthorhombic | |
Tetragonal | |
Hexagonal | |
Trigonal | |
Cubic |
Definition at line 33 of file PointGroup.h.
|
strong |
Enumerator | |
---|---|
Triclinic | |
Monoclinic | |
Orthorhombic | |
Tetragonal | |
Hexagonal | |
Rhombohedral | |
Cubic |
Definition at line 35 of file PointGroup.h.
Mantid::Geometry::PointGroup::PointGroup | ( | const std::string & | symbolHM, |
const Group & | group, | ||
const std::string & | description = "" |
||
) |
Protected constructor - can not be used directly.
Definition at line 68 of file PointGroup.cpp.
References getCrystalSystemFromGroup(), getLatticeSystemFromCrystalSystemAndGroup(), m_crystalSystem, and m_latticeSystem.
|
inline |
Definition at line 43 of file PointGroup.h.
Referenced by export_PointGroup(), getLatticeSystemFromCrystalSystemAndGroup(), and Mantid::Geometry::operator<<().
|
protected |
Generates a set of hkls.
This method applies all transformation matrices to the supplied hkl and puts them into a vector, which is returned in the end. For special reflections such as 100 or 110 or 111, the vector may contain duplicates that need to be filtered out.
The symmetry operations need to be set prior to calling this method by a call to PointGroup::setTransformationMatrices.
hkl | :: Arbitrary hkl |
Definition at line 97 of file PointGroup.cpp.
References Mantid::Geometry::Group::m_allOperations.
Referenced by getEquivalents(), getReflectionFamily(), and isEquivalent().
|
protected |
Returns the CrystalSystem determined from symmetry elements.
This method determines the crystal system of the point group. It makes use of the fact that each crystal system has a characteristic set of symmetry elements. The requirement for the cubic system is for example that four 3-fold axes are present, whereas one 3-fold axis indicates that the group belongs to the trigonal system.
Definition at line 116 of file PointGroup.cpp.
References Cubic, Hexagonal, Mantid::Kernel::SingletonHolder< T >::Instance(), Mantid::Geometry::Group::m_allOperations, Monoclinic, Orthorhombic, Tetragonal, Triclinic, and Trigonal.
Referenced by PointGroup().
std::vector< V3D > Mantid::Geometry::PointGroup::getEquivalents | ( | const Kernel::V3D & | hkl | ) | const |
Returns a vector with all equivalent hkls.
Returns all equivalent reflections for the supplied hkl.
This method returns a vector containing all equivalent hkls for the supplied one. It depends on the internal state of the pointgroup object (e.g. which symmetry operations and therefore, which transformation matrices are present). This internal state is unique for each concrete point group and is set in the constructor.
The returned vector always contains a set of unique hkls, so for special hkls like (100), it has fewer entries than for a general hkl. See also PointGroup::getEquivalentSet.
hkl | :: Arbitrary hkl |
Definition at line 38 of file PointGroup.cpp.
References getAllEquivalents().
|
protected |
Returns the LatticeSystem of the point group, using the crystal system.
This function uses the crystal system argument and the coordinate system stored in Group to determine the lattice system. For all crystal systems except trigonal there is a 1:1 correspondence, but for trigonal groups the lattice system can be either rhombohedral or hexagonal.
crystalSystem | :: CrystalSystem of the point group. |
Definition at line 170 of file PointGroup.cpp.
References crystalSystem(), Cubic, Mantid::Geometry::Group::getCoordinateSystem(), Mantid::Geometry::Group::Hexagonal, Hexagonal, Monoclinic, Orthorhombic, Rhombohedral, Tetragonal, and Triclinic.
Referenced by PointGroup().
|
inline |
Name of the point group.
Definition at line 39 of file PointGroup.h.
Referenced by export_PointGroup().
V3D Mantid::Geometry::PointGroup::getReflectionFamily | ( | const Kernel::V3D & | hkl | ) | const |
Returns the same hkl for all equivalent hkls.
Returns the same V3D for all equivalent hkls.
This method is closely related to PointGroup::getEquivalents. It returns the same V3D for all hkls of one "family". For example in a cubic point group it will return (100) for (001), (010), (0-10), etc.
It can be used to generate a set of symmetry independent hkls, useful for example in powder diffraction.
hkl | :: Arbitrary hkl |
Definition at line 61 of file PointGroup.cpp.
References getAllEquivalents().
std::string Mantid::Geometry::PointGroup::getSymbol | ( | ) | const |
Hermann-Mauguin symbol.
Definition at line 75 of file PointGroup.cpp.
References m_symbolHM.
Referenced by export_PointGroup(), and Mantid::Geometry::operator<<().
bool Mantid::Geometry::PointGroup::isEquivalent | ( | const Kernel::V3D & | hkl, |
const Kernel::V3D & | hkl2 | ||
) | const |
Return true if the hkls are in same group.
Definition at line 77 of file PointGroup.cpp.
References getAllEquivalents().
|
inline |
Definition at line 44 of file PointGroup.h.
Referenced by export_PointGroup(), and Mantid::Geometry::operator<<().
|
protected |
Definition at line 62 of file PointGroup.h.
Referenced by PointGroup().
|
protected |
Definition at line 63 of file PointGroup.h.
Referenced by PointGroup().
|
protected |
Definition at line 61 of file PointGroup.h.
|
protected |
Definition at line 60 of file PointGroup.h.
Referenced by getSymbol().