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

A class containing the Point Groups for a crystal. More...

#include <PointGroup.h>

Inheritance diagram for Mantid::Geometry::PointGroup:
Mantid::Geometry::Group

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

Detailed Description

A class containing the Point Groups for a crystal.

Author
Vickie Lynch
Date
2012-02-02

Definition at line 31 of file PointGroup.h.

Member Enumeration Documentation

◆ CrystalSystem

Enumerator
Triclinic 
Monoclinic 
Orthorhombic 
Tetragonal 
Hexagonal 
Trigonal 
Cubic 

Definition at line 33 of file PointGroup.h.

◆ LatticeSystem

Enumerator
Triclinic 
Monoclinic 
Orthorhombic 
Tetragonal 
Hexagonal 
Rhombohedral 
Cubic 

Definition at line 35 of file PointGroup.h.

Constructor & Destructor Documentation

◆ PointGroup()

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.

Member Function Documentation

◆ crystalSystem()

CrystalSystem Mantid::Geometry::PointGroup::crystalSystem ( ) const
inline

◆ getAllEquivalents()

std::vector< V3D > Mantid::Geometry::PointGroup::getAllEquivalents ( const Kernel::V3D hkl) const
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.

Parameters
hkl:: Arbitrary hkl
Returns
:: vector of hkls.

Definition at line 97 of file PointGroup.cpp.

References Mantid::Geometry::Group::m_allOperations.

Referenced by getEquivalents(), getReflectionFamily(), and isEquivalent().

◆ getCrystalSystemFromGroup()

PointGroup::CrystalSystem Mantid::Geometry::PointGroup::getCrystalSystemFromGroup ( ) const
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.

Returns
Crystal system that the point group belongs to.

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().

◆ getEquivalents()

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.

Parameters
hkl:: Arbitrary hkl
Returns
:: std::vector containing all equivalent hkls.

Definition at line 38 of file PointGroup.cpp.

References getAllEquivalents().

◆ getLatticeSystemFromCrystalSystemAndGroup()

PointGroup::LatticeSystem Mantid::Geometry::PointGroup::getLatticeSystemFromCrystalSystemAndGroup ( const CrystalSystem crystalSystem) const
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.

Parameters
crystalSystem:: CrystalSystem of the point group.
Returns
LatticeSystem the point group belongs to.

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().

◆ getName()

std::string Mantid::Geometry::PointGroup::getName ( ) const
inline

Name of the point group.

Definition at line 39 of file PointGroup.h.

Referenced by export_PointGroup().

◆ getReflectionFamily()

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.

Parameters
hkl:: Arbitrary hkl
Returns
:: hkl specific to a family of index-triplets

Definition at line 61 of file PointGroup.cpp.

References getAllEquivalents().

◆ getSymbol()

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<<().

◆ isEquivalent()

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().

◆ latticeSystem()

LatticeSystem Mantid::Geometry::PointGroup::latticeSystem ( ) const
inline

Definition at line 44 of file PointGroup.h.

Referenced by export_PointGroup(), and Mantid::Geometry::operator<<().

Member Data Documentation

◆ m_crystalSystem

CrystalSystem Mantid::Geometry::PointGroup::m_crystalSystem
protected

Definition at line 62 of file PointGroup.h.

Referenced by PointGroup().

◆ m_latticeSystem

LatticeSystem Mantid::Geometry::PointGroup::m_latticeSystem
protected

Definition at line 63 of file PointGroup.h.

Referenced by PointGroup().

◆ m_name

std::string Mantid::Geometry::PointGroup::m_name
protected

Definition at line 61 of file PointGroup.h.

◆ m_symbolHM

std::string Mantid::Geometry::PointGroup::m_symbolHM
protected

Definition at line 60 of file PointGroup.h.

Referenced by getSymbol().


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