PSCF v1.1
Public Member Functions | List of all members
Pscf::SpaceGroup< D > Class Template Reference

Crystallographic space group. More...

#include <SpaceGroup.h>

Inheritance diagram for Pscf::SpaceGroup< D >:
Pscf::SymmetryGroup< SpaceSymmetry< D > >

Public Member Functions

bool hasInversionCenter (typename SpaceSymmetry< D >::Translation &center) const
 Determines if this space group has an inversion center. More...
 
void shiftOrigin (typename SpaceSymmetry< D >::Translation const &origin)
 Shift the origin of space used in the coordinate system. More...
 
void checkMeshDimensions (IntVec< D > const &dimensions) const
 Check if input mesh dimensions are compatible with space group. More...
 
- Public Member Functions inherited from Pscf::SymmetryGroup< SpaceSymmetry< D > >
 SymmetryGroup ()
 Default constructor. More...
 
 SymmetryGroup (const SymmetryGroup< SpaceSymmetry< D > > &other)
 Copy constructor. More...
 
 ~SymmetryGroup ()
 Destructor. More...
 
SymmetryGroup< SpaceSymmetry< D > > & operator= (const SymmetryGroup< SpaceSymmetry< D > > &other)
 Assignment operator. More...
 
bool add (SpaceSymmetry< D > &symmetry)
 Add a new element to the group. More...
 
void makeCompleteGroup ()
 Generate a complete group from the current elements. More...
 
void clear ()
 Remove all elements except the identity. More...
 
const SpaceSymmetry< D > * find (const SpaceSymmetry< D > &symmetry) const
 Find a symmetry within a group. More...
 
const SpaceSymmetry< D > & identity () const
 Return a reference to the identity element. More...
 
int size () const
 Return number of elements in group (i.e., the order of the group). More...
 
SpaceSymmetry< D > & operator[] (int i)
 Element access operator (by reference). More...
 
const SpaceSymmetry< D > & operator[] (int i) const
 Element access operator (by reference). More...
 
bool operator== (SymmetryGroup< SpaceSymmetry< D > > const &other) const
 Equality operator. More...
 
bool operator!= (SymmetryGroup< SpaceSymmetry< D > > const &other) const
 Inequality operator. More...
 
bool isValid () const
 Return true if valid complete group, or throw an Exception. More...
 

Detailed Description

template<int D>
class Pscf::SpaceGroup< D >

Crystallographic space group.

Definition at line 29 of file SpaceGroup.h.

Member Function Documentation

◆ hasInversionCenter()

template<int D>
bool Pscf::SpaceGroup< D >::hasInversionCenter ( typename SpaceSymmetry< D >::Translation &  center) const

Determines if this space group has an inversion center.

Returns true if an inversion center exists, and false otherwise. If an inversion center exists, its location is returned as the output value of output argument "center".

Parameters
centerlocation of inversion center, if any (output)

Definition at line 24 of file SpaceGroup.tpp.

◆ shiftOrigin()

template<int D>
void Pscf::SpaceGroup< D >::shiftOrigin ( typename SpaceSymmetry< D >::Translation const &  origin)

Shift the origin of space used in the coordinate system.

This function modifies each symmetry elements in the group so as to refer to an equivalent symmetry defined using a new coordinate system with a shifted origin. The argument gives the coordinates of the origin of the new coordinate system as defined in the old coordinate system.

Parameters
originlocation of origin of the new coordinate system

Definition at line 52 of file SpaceGroup.tpp.

◆ checkMeshDimensions()

template<int D>
void Pscf::SpaceGroup< D >::checkMeshDimensions ( IntVec< D > const &  dimensions) const

Check if input mesh dimensions are compatible with space group.

This function checks if a mesh with the specified dimensions is invariant under all operations of this space group, i.e., whether each crystal symmetry operation maps the position of every node of the mesh onto the position of another node. It is only possible define how a symmetry operation transforms a function that is defined only on the nodes of mesh if the mesh is invariant under the symmetry operation, in this sense. An invariant mesh must thus be used necessary to describe a function whose values on the mesh nodes are invariant under all operations in the space group.

If the mesh is not invariant under all operations of the space group, an explanatory error message is printed and an Exception is thrown to halt execution.

The mesh for a unit cell within a Bravais lattice is assumed to be a regular orthogonal mesh in a space of reduced coordinates, which are the components of position defined using a Bravais basis (i.e., a basis of Bravais lattice basis vectors). Each element of the dimensions vector is equal to the number of grid points along a direction corresponding to a Bravais lattice vector. A Bravais basis is also used to define elements of the matrix representation of the point group operation and the translation vector in the representation of a crystal symmetry operation as an instance of class Pscf::SpaceSymmetry<D>.

Parameters
dimensionsvector of mesh dimensions

Definition at line 64 of file SpaceGroup.tpp.

References Util::Log::file(), UTIL_CHECK, and UTIL_THROW.

Referenced by Pscf::Basis< D >::makeBasis().


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