PSCF v1.1
|
Crystallographic space group. More...
#include <SpaceGroup.h>
Public Member Functions | |
bool | hasInversionCenter (typename SpaceSymmetry< D >::Translation ¢er) 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... | |
![]() | |
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... | |
Crystallographic space group.
Definition at line 29 of file SpaceGroup.h.
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".
center | location of inversion center, if any (output) |
Definition at line 24 of file SpaceGroup.tpp.
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.
origin | location of origin of the new coordinate system |
Definition at line 52 of file SpaceGroup.tpp.
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>.
dimensions | vector 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().