PSCF v1.1
Classes | Functions
Crystallography

Classes that describe crystallographic information. More...

Classes

class  Pscf::Basis< D >
 Symmetry-adapted Fourier basis for pseudo-spectral scft. More...
 
class  Pscf::BFieldComparison
 Comparator for fields in symmetry-adapted basis format. More...
 
class  Pscf::SpaceGroup< D >
 Crystallographic space group. More...
 
class  Pscf::SpaceSymmetry< D >
 A SpaceSymmetry represents a crystallographic space group symmetry. More...
 
struct  Pscf::TWave< D >
 Simple wave struct for use within Basis construction. More...
 
struct  Pscf::TWaveNormComp< D >
 Comparator for TWave objects, based on TWave::sqNorm. More...
 
struct  Pscf::TWaveDftComp< D >
 Comparator for TWave objects, based on TWave::indicesDft. More...
 
struct  Pscf::TWaveBzComp< D >
 Comparator for TWave objects, based on TWave::indicesBz. More...
 
class  Pscf::UnitCell< D >
 Base template for UnitCell<D> classes, D=1, 2 or 3. More...
 
class  Pscf::UnitCell< 1 >
 1D crystal unit cell. More...
 
class  Pscf::UnitCell< 2 >
 2D crystal unit cell. More...
 
class  Pscf::UnitCell< 3 >
 3D crystal unit cell. More...
 
class  Pscf::UnitCellBase< D >
 Base class template for a crystallographic unit cell. More...
 

Functions

std::string Pscf::makeGroupFileName (int D, std::string groupName)
 Generates the file name from a group name. More...
 
template<int D>
IntVec< D > Pscf::shiftToMinimum (IntVec< D > &v, IntVec< D > d, UnitCell< D > const &cell)
 Returns minimum magnitude image of DFT wavevector. More...
 
template<int D>
std::ostream & Pscf::operator<< (std::ostream &out, SpaceGroup< D > const &g)
 Output stream inserter operator for a SpaceGroup<D>. More...
 
template<int D>
std::istream & Pscf::operator>> (std::istream &in, SpaceGroup< D > &g)
 Input stream extractor operator for a SpaceGroup<D>. More...
 
template<int D>
void Pscf::readGroup (std::string groupName, SpaceGroup< D > &group)
 Open and read a group file. More...
 
template<int D>
void Pscf::writeGroup (std::string filename, SpaceGroup< D > const &group)
 Open and write a group file. More...
 
template<int D>
bool Pscf::operator== (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Are two SpaceSymmetry objects equivalent? More...
 
template<int D>
bool Pscf::operator!= (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Are two SpaceSymmetry objects not equivalent? More...
 
template<int D>
SpaceSymmetry< D > Pscf::operator* (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Return the product A*B of two symmetry objects. More...
 
template<int D>
IntVec< D > Pscf::operator* (const SpaceSymmetry< D > &S, const IntVec< D > &V)
 Return the IntVec<D> product S*V of a rotation matrix and an IntVec<D>. More...
 
template<int D>
IntVec< D > Pscf::operator* (const IntVec< D > &V, const SpaceSymmetry< D > &S)
 Return the IntVec<D> product V*S of an IntVec<D> and a rotation matrix. More...
 
template<int D>
std::ostream & Pscf::operator<< (std::ostream &out, const SpaceSymmetry< D > &A)
 Output stream inserter for a SpaceSymmetry<D> More...
 
template<int D>
std::istream & Pscf::operator>> (std::istream &in, SpaceSymmetry< D > &A)
 Input stream extractor for a SpaceSymmetry<D> More...
 
template<int D>
std::istream & Pscf::operator>> (std::istream &in, UnitCell< D > &cell)
 istream input extractor for a UnitCell<D>. More...
 
template<int D>
std::ostream & Pscf::operator<< (std::ostream &out, UnitCell< D > const &cell)
 ostream output inserter for a UnitCell<D>. More...
 
template<class Archive , int D>
void Pscf::serialize (Archive &ar, UnitCell< D > &cell, const unsigned int version)
 Serialize to/from an archive. More...
 
template<int D>
void Pscf::readUnitCellHeader (std::istream &in, UnitCell< D > &cell)
 Read UnitCell<D> from a field file header (fortran PSCF format). More...
 
template<int D>
void Pscf::writeUnitCellHeader (std::ostream &out, UnitCell< D > const &cell)
 Write UnitCell<D> to a field file header (fortran PSCF format). More...
 
std::istream & Pscf::operator>> (std::istream &in, UnitCell< 1 >::LatticeSystem &lattice)
 istream extractor for a 1D UnitCell<1>::LatticeSystem. More...
 
std::ostream & Pscf::operator<< (std::ostream &out, UnitCell< 1 >::LatticeSystem lattice)
 ostream inserter for a 1D UnitCell<1>::LatticeSystem. More...
 
std::istream & Pscf::operator>> (std::istream &in, UnitCell< 2 >::LatticeSystem &lattice)
 istream extractor for a 2D UnitCell<2>::LatticeSystem. More...
 
std::istream & Pscf::operator>> (std::istream &in, UnitCell< 3 >::LatticeSystem &lattice)
 istream extractor for a 3D UnitCell<3>::LatticeSystem. More...
 
std::ostream & Pscf::operator<< (std::ostream &out, UnitCell< 3 >::LatticeSystem lattice)
 ostream inserter for an 3D UnitCell<3>::LatticeSystem. More...
 

Detailed Description

Classes that describe crystallographic information.

Function Documentation

◆ makeGroupFileName()

std::string Pscf::makeGroupFileName ( int  D,
std::string  groupName 
)

Generates the file name from a group name.

Parameters
Ddimensionality of space (D=1,2 or 3)
groupNamestandard name of space group

Definition at line 25 of file groupFile.cpp.

References UTIL_THROW.

Referenced by Pscf::Pspc::FilmIteratorBase< D, IteratorType >::checkSpaceGroup(), and Pscf::readGroup().

◆ shiftToMinimum()

template<int D>
IntVec< D > Pscf::shiftToMinimum ( IntVec< D > &  v,
IntVec< D >  d,
UnitCell< D > const &  cell 
)

Returns minimum magnitude image of DFT wavevector.

Parameters
vIntVec<D> containing integer indices of wavevector.
ddimensions of the discrete Fourier transform grid.
cellUnitCell

◆ operator<<() [1/5]

template<int D>
std::ostream & Pscf::operator<< ( std::ostream &  out,
SpaceGroup< D > const &  g 
)

Output stream inserter operator for a SpaceGroup<D>.

Parameters
outoutput stream
gspace group

Definition at line 108 of file SpaceGroup.h.

References Pscf::SymmetryGroup< Symmetry >::size().

◆ operator>>() [1/6]

template<int D>
std::istream & Pscf::operator>> ( std::istream &  in,
SpaceGroup< D > &  g 
)

Input stream extractor operator for a SpaceGroup<D>.

Parameters
ininput stream
gspace group

Definition at line 129 of file SpaceGroup.h.

References Pscf::SymmetryGroup< Symmetry >::add(), Pscf::SymmetryGroup< Symmetry >::clear(), and UTIL_CHECK.

◆ readGroup()

template<int D>
void Pscf::readGroup ( std::string  groupName,
SpaceGroup< D > &  group 
)

Open and read a group file.

Parameters
groupNamename of group, or group file (input)
groupspace group (output)

Definition at line 162 of file SpaceGroup.tpp.

References Util::Log::file(), Pscf::SymmetryGroup< Symmetry >::makeCompleteGroup(), Pscf::makeGroupFileName(), UTIL_CHECK, and UTIL_THROW.

◆ writeGroup()

template<int D>
void Pscf::writeGroup ( std::string  filename,
SpaceGroup< D > const &  group 
)

Open and write a group file.

Parameters
filenameoutput file name
groupspace group

Definition at line 201 of file SpaceGroup.tpp.

◆ operator==()

template<int D>
bool Pscf::operator== ( const SpaceSymmetry< D > &  A,
const SpaceSymmetry< D > &  B 
)

Are two SpaceSymmetry objects equivalent?

Parameters
Afirst symmetry
Bsecond symmetry
Returns
True if A == B, false otherwise

Definition at line 370 of file SpaceSymmetry.h.

◆ operator!=()

template<int D>
bool Pscf::operator!= ( const SpaceSymmetry< D > &  A,
const SpaceSymmetry< D > &  B 
)
inline

Are two SpaceSymmetry objects not equivalent?

Parameters
Afirst symmetry
Bsecond symmetry
Returns
True if A != B, false otherwise

Definition at line 318 of file SpaceSymmetry.h.

◆ operator*() [1/3]

template<int D>
SpaceSymmetry< D > Pscf::operator* ( const SpaceSymmetry< D > &  A,
const SpaceSymmetry< D > &  B 
)

Return the product A*B of two symmetry objects.

Parameters
Afirst symmetry
Bsecond symmetry
Returns
product A*B

Definition at line 391 of file SpaceSymmetry.h.

◆ operator*() [2/3]

template<int D>
IntVec< D > Pscf::operator* ( const SpaceSymmetry< D > &  S,
const IntVec< D > &  V 
)

Return the IntVec<D> product S*V of a rotation matrix and an IntVec<D>.

The product is defined to be the matrix product of the rotation matrix and the integer vector S.R * V.

Parameters
Ssymmetry operation
Vinteger vector
Returns
product S*V

Definition at line 424 of file SpaceSymmetry.h.

◆ operator*() [3/3]

template<int D>
IntVec< D > Pscf::operator* ( const IntVec< D > &  V,
const SpaceSymmetry< D > &  S 
)

Return the IntVec<D> product V*S of an IntVec<D> and a rotation matrix.

The product is defined to be the matrix product of the integer vector and the space group rotation matrix S.R * V.

Parameters
Vinteger vector
Ssymmetry operation
Returns
product V*S

Definition at line 441 of file SpaceSymmetry.h.

◆ operator<<() [2/5]

template<int D>
std::ostream & Pscf::operator<< ( std::ostream &  out,
const SpaceSymmetry< D > &  A 
)

Output stream inserter for a SpaceSymmetry<D>

Parameters
outoutput stream
ASpaceSymmetry<D> object to be output
Returns
modified output stream

Definition at line 458 of file SpaceSymmetry.h.

◆ operator>>() [2/6]

template<int D>
std::istream & Pscf::operator>> ( std::istream &  in,
SpaceSymmetry< D > &  A 
)

Input stream extractor for a SpaceSymmetry<D>

Parameters
ininput stream
ASpaceSymmetry<D> object to be input
Returns
modified input stream

Definition at line 478 of file SpaceSymmetry.h.

◆ operator>>() [3/6]

template<int D>
std::istream & Pscf::operator>> ( std::istream &  in,
UnitCell< D > &  cell 
)

istream input extractor for a UnitCell<D>.

Parameters
ininput stream
cellUnitCell<D> to be read
Returns
modified input stream

Definition at line 22 of file UnitCell.tpp.

◆ operator<<() [3/5]

template<int D>
std::ostream & Pscf::operator<< ( std::ostream &  out,
UnitCell< D > const &  cell 
)

ostream output inserter for a UnitCell<D>.

Parameters
outoutput stream
cellUnitCell<D> to be written
Returns
modified output stream

Definition at line 36 of file UnitCell.tpp.

◆ serialize()

template<class Archive , int D>
void Pscf::serialize ( Archive &  ar,
UnitCell< D > &  cell,
const unsigned int  version 
)

Serialize to/from an archive.

Parameters
arinput or output archive
cellUnitCell<D> object to be serialized
versionarchive version id

Definition at line 50 of file UnitCell.tpp.

◆ readUnitCellHeader()

template<int D>
void Pscf::readUnitCellHeader ( std::istream &  in,
UnitCell< D > &  cell 
)

Read UnitCell<D> from a field file header (fortran PSCF format).

If the unit cell has a non-null lattice system on entry, the value read from file must match this existing value, or this function throws an exception. If the lattice system is null on entry, the lattice system value is read from file. In either case, unit cell parameters (dimensions and angles) are updated using values read from file.

Parameters
ininput stream
cellUnitCell<D> to be read

Definition at line 61 of file UnitCell.tpp.

◆ writeUnitCellHeader()

template<int D>
void Pscf::writeUnitCellHeader ( std::ostream &  out,
UnitCell< D > const &  cell 
)

Write UnitCell<D> to a field file header (fortran PSCF format).

Parameters
outoutput stream
cellUnitCell<D> to be written

Definition at line 91 of file UnitCell.tpp.

Referenced by Pscf::Pspg::FieldIo< D >::writeFieldHeader().

◆ operator>>() [4/6]

std::istream & Pscf::operator>> ( std::istream &  in,
UnitCell< 1 >::LatticeSystem &  lattice 
)

istream extractor for a 1D UnitCell<1>::LatticeSystem.

Parameters
ininput stream
latticeUnitCell<1>::LatticeSystem to be read
Returns
modified input stream

Definition at line 52 of file UnitCell1.cpp.

References UTIL_THROW.

◆ operator<<() [4/5]

std::ostream & Pscf::operator<< ( std::ostream &  out,
UnitCell< 1 >::LatticeSystem  lattice 
)

ostream inserter for a 1D UnitCell<1>::LatticeSystem.

Parameters
outoutput stream
latticeUnitCell<1>::LatticeSystem to be written
Returns
modified output stream

Definition at line 69 of file UnitCell1.cpp.

References UTIL_THROW.

◆ operator>>() [5/6]

std::istream & Pscf::operator>> ( std::istream &  in,
UnitCell< 2 >::LatticeSystem &  lattice 
)

istream extractor for a 2D UnitCell<2>::LatticeSystem.

Parameters
ininput stream
latticeUnitCell<2>::LatticeSystem to be read
Returns
modified input stream

Definition at line 157 of file UnitCell2.cpp.

References UTIL_THROW.

◆ operator>>() [6/6]

std::istream & Pscf::operator>> ( std::istream &  in,
UnitCell< 3 >::LatticeSystem &  lattice 
)

istream extractor for a 3D UnitCell<3>::LatticeSystem.

Parameters
ininput stream
latticeUnitCell<3>::LatticeSystem to be read
Returns
modified input stream

Definition at line 326 of file UnitCell3.cpp.

References UTIL_THROW.

◆ operator<<() [5/5]

std::ostream & Pscf::operator<< ( std::ostream &  out,
UnitCell< 3 >::LatticeSystem  lattice 
)

ostream inserter for an 3D UnitCell<3>::LatticeSystem.

Parameters
outoutput stream
latticeUnitCell<3>::LatticeSystem to be written
Returns
modified output stream

Definition at line 361 of file UnitCell3.cpp.

References UTIL_THROW.