PSCF v1.2
Pscf::Prdc Namespace Reference

Periodic fields and crystallography. More...

Namespaces

namespace  Cpu
 Fields and FFTs for periodic boundary conditions (CPU)
 
namespace  Cuda
 Fields, FFTs, and utilities for periodic boundary conditions (CUDA)
 

Classes

class  Basis
 Symmetry-adapted Fourier basis for pseudo-spectral scft. More...
 
class  BFieldComparison
 Comparator for fields in symmetry-adapted basis format. More...
 
class  ExtGenFilmBase
 Base class defining external fields for thin film systems. More...
 
class  FieldIoReal
 File input/output operations and format conversions for fields. More...
 
class  MaskGenFilmBase
 Base class defining mask that imposes thin film confinement. More...
 
class  MaskTmpl
 Container for a field to which the total density is constrained. More...
 
class  SpaceGroup
 Crystallographic space group. More...
 
class  SpaceSymmetry
 A SpaceSymmetry represents a crystallographic space group symmetry. More...
 
class  SymmetryGroup
 Class template for a group of elements. More...
 
struct  TWave
 Simple wave struct for use within Basis construction. More...
 
struct  TWaveBzComp
 Comparator for TWave objects, based on TWave::indicesBz. More...
 
struct  TWaveDftComp
 Comparator for TWave objects, based on TWave::indicesDft. More...
 
struct  TWaveNormComp
 Comparator for TWave objects, based on TWave::sqNorm. More...
 
class  UnitCell
 Base template for UnitCell<D> classes, D=1, 2 or 3. More...
 
class  UnitCell< 1 >
 1D crystal unit cell. More...
 
class  UnitCell< 2 >
 2D crystal unit cell. More...
 
class  UnitCell< 3 >
 3D crystal unit cell. More...
 
class  UnitCellBase
 Base class template for a crystallographic unit cell. More...
 

Functions

template<int D>
void readFieldHeader (std::istream &in, int &ver1, int &ver2, UnitCell< D > &cell, std::string &groupName, int &nMonomer)
 Read common part of field header (fortran PSCF format).
 
template<int D>
void writeFieldHeader (std::ostream &out, int ver1, int ver2, UnitCell< D > const &cell, std::string const &groupName, int nMonomer)
 Write common part of field header (fortran PSCF format).
 
std::string makeGroupFileName (int D, std::string groupName)
 Generates the file name from a group name.
 
template<int D>
int convertFullParamIdToReduced (const int fullId, const typename UnitCell< D >::LatticeSystem lattice)
 Convert full lattice parameter index to a reduced index.
 
template<int D>
int convertReducedParamIdToFull (const int reducedId, const typename UnitCell< D >::LatticeSystem lattice)
 Convert reduced lattice parameter index to a full index.
 
template<int D>
IntVec< D > shiftToMinimum (IntVec< D > &v, IntVec< D > d, UnitCell< D > const &cell)
 Returns minimum magnitude image of DFT wavevector.
 
template<int D>
std::ostream & operator<< (std::ostream &out, SpaceGroup< D > const &g)
 Output stream inserter operator for a SpaceGroup<D>.
 
template<int D>
std::istream & operator>> (std::istream &in, SpaceGroup< D > &g)
 Input stream extractor operator for a SpaceGroup<D>.
 
template<int D>
void readGroup (std::string groupName, SpaceGroup< D > &group)
 Open and read a group file.
 
template<int D>
void writeGroup (std::string filename, SpaceGroup< D > const &group)
 Open and write a group file.
 
template<int D>
bool operator== (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Are two SpaceSymmetry objects equivalent?
 
template<int D>
bool operator!= (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Are two SpaceSymmetry objects not equivalent?
 
template<int D>
SpaceSymmetry< D > operator* (const SpaceSymmetry< D > &A, const SpaceSymmetry< D > &B)
 Return the product A*B of two symmetry objects.
 
template<int D>
IntVec< D > operator* (const SpaceSymmetry< D > &S, const IntVec< D > &V)
 Return the IntVec<D> product S*V of a rotation matrix and an IntVec<D>.
 
template<int D>
IntVec< D > operator* (const IntVec< D > &V, const SpaceSymmetry< D > &S)
 Return the IntVec<D> product V*S of an IntVec<D> and a rotation matrix.
 
template<int D>
std::ostream & operator<< (std::ostream &out, const SpaceSymmetry< D > &A)
 Output stream inserter for a SpaceSymmetry<D>
 
template<int D>
std::istream & operator>> (std::istream &in, SpaceSymmetry< D > &A)
 Input stream extractor for a SpaceSymmetry<D>
 
template<int D>
std::istream & operator>> (std::istream &in, UnitCell< D > &cell)
 istream input extractor for a UnitCell<D>.
 
template<int D>
std::ostream & operator<< (std::ostream &out, UnitCell< D > const &cell)
 ostream output inserter for a UnitCell<D>.
 
template<class Archive , int D>
void serialize (Archive &ar, UnitCell< D > &cell, const unsigned int version)
 Serialize to/from an archive.
 
template<int D>
void readUnitCellHeader (std::istream &in, UnitCell< D > &cell)
 Read UnitCell<D> from a field file header (fortran PSCF format).
 
template<int D>
void writeUnitCellHeader (std::ostream &out, UnitCell< D > const &cell)
 Write UnitCell<D> to a field file header (fortran PSCF format).
 
std::istream & operator>> (std::istream &in, UnitCell< 1 >::LatticeSystem &lattice)
 istream extractor for a 1D UnitCell<1>::LatticeSystem.
 
std::ostream & operator<< (std::ostream &out, UnitCell< 1 >::LatticeSystem lattice)
 ostream inserter for a 1D UnitCell<1>::LatticeSystem.
 
template<class Archive >
void serialize (Archive &ar, UnitCell< 1 >::LatticeSystem &lattice, const unsigned int version)
 Serialize a UnitCell<1>::LatticeSystem enumeration value.
 
std::istream & operator>> (std::istream &in, UnitCell< 2 >::LatticeSystem &lattice)
 istream extractor for a 2D UnitCell<2>::LatticeSystem.
 
std::ostream & operator<< (std::ostream &out, UnitCell< 2 >::LatticeSystem lattice)
 ostream inserter for a 2D UnitCell<2>::LatticeSystem.
 
template<class Archive >
void serialize (Archive &ar, UnitCell< 2 >::LatticeSystem &lattice, const unsigned int version)
 Serialize a UnitCell<2>::LatticeSystem enumeration value.
 
std::istream & operator>> (std::istream &in, UnitCell< 3 >::LatticeSystem &lattice)
 istream extractor for a 3D UnitCell<3>::LatticeSystem.
 
std::ostream & operator<< (std::ostream &out, UnitCell< 3 >::LatticeSystem lattice)
 ostream inserter for an 3D UnitCell<3>::LatticeSystem.
 
template<class Archive >
void serialize (Archive &ar, UnitCell< 3 >::LatticeSystem &lattice, const unsigned int version)
 Serialize a UnitCell<3>::LatticeSystem enumeration value.
 
template<int D, class FT >
void checkAllocateField (FT &field, IntVec< D > const &dimensions)
 Check allocation of a single field, allocate if necessary.
 
template<int D, class FT >
void checkAllocateFields (DArray< FT > &fields, int nMonomer, IntVec< D > const &dimensions)
 Check allocation of an array of fields, allocate if necessary.
 
template<int D, class FT >
void inspectFields (DArray< FT > const &fields, int &nMonomer, IntVec< D > &dimensions)
 Inspect dimensions of a DArray of fields, each of type FT.
 
template<int D, class AT >
void checkAllocateArrays (DArray< AT > &arrays, int nMonomer, int capacity)
 Check allocation of a DArray of 1D arrays, allocate if necessary.
 
template<class AT >
void inspectArrays (DArray< AT > const &arrays, int &nMonomer, int &capacity)
 Inspect dimensions of a DArray of 1D arrays, each of type AT.
 
template<int D>
void readMeshDimensions (std::istream &in, IntVec< D > const &meshDimensions)
 Read mesh dimensions from a field file header.
 
template<int D>
void writeMeshDimensions (std::ostream &out, IntVec< D > const &meshDimensions)
 Write mesh dimensions to a field file header.
 
template<int D, class AT >
void readRGridData (std::istream &in, DArray< AT > &fields, int nMonomer, IntVec< D > const &dimensions)
 Read data for array of r-grid fields, with no header section.
 
template<int D, class AT >
void readRGridData (std::istream &in, AT &field, IntVec< D > const &dimensions)
 Read data for a single r-grid field, with no header section.
 
template<int D, class AT >
void writeRGridData (std::ostream &out, DArray< AT > const &fields, int nMonomer, IntVec< D > const &dimensions)
 Write data for array of r-grid fields, with no header section.
 
template<int D, class AT >
void writeRGridData (std::ostream &out, AT const &field, IntVec< D > const &dimensions)
 Write data for a single r-grid field, with no header section.
 
template<int D, class AT >
void readKGridData (std::istream &in, DArray< AT > &fields, int nMonomer, IntVec< D > const &dftDimensions)
 Read data for array of k-grid fields, with no header section.
 
template<int D, class AT >
void readKGridData (std::istream &in, AT &field, IntVec< D > const &dftDimensions)
 Read data for a single k-grid field, with no header section.
 
template<int D, class AT >
void writeKGridData (std::ostream &out, DArray< AT > const &fields, int nMonomer, IntVec< D > const &dftDimensions)
 Write data for array of k-grid fields, with no header section.
 
template<int D, class AT >
void writeKGridData (std::ostream &in, AT const &field, IntVec< D > const &dftDimensions)
 Write data for a single k-grid field, with no header section.
 
int readNBasis (std::istream &in)
 Read the number of basis functions from a basis field file header.
 
void writeNBasis (std::ostream &out, int nBasis)
 Write the number of basis functions to a basis field file header.
 
template<int D>
void readBasisData (std::istream &in, DArray< DArray< double > > &fields, UnitCell< D > const &unitCell, Mesh< D > const &mesh, Basis< D > const &basis, int nStarIn)
 Read a set of fields in basis format.
 
template<int D>
void writeBasisData (std::ostream &out, DArray< DArray< double > > const &fields, Basis< D > const &basis)
 Write array of fields in basis format, without a header.
 
template<int D, class AT >
void convertBasisToKGrid (DArray< double > const &components, AT &dft, Basis< D > const &basis, IntVec< D > const &dftDimensions)
 Convert a real field from symmetrized basis to Fourier grid.
 
template<int D, class AT >
void convertKGridToBasis (AT const &in, DArray< double > &out, Basis< D > const &basis, IntVec< D > const &dftDimensions, bool checkSymmetry=true, double epsilon=1.0e-8)
 Convert a real field from Fourier grid to symmetrized basis.
 
template<int D, class AT >
bool hasSymmetry (AT const &in, Basis< D > const &basis, IntVec< D > const &dftDimensions, double epsilon=1.0e-8, bool verbose=true)
 Check if a k-grid field has the declared space group symmetry.
 
template<int D, class AT >
void replicateUnitCell (std::ostream &out, DArray< AT > const &fields, IntVec< D > const &meshDimensions, UnitCell< D > const &unitCell, IntVec< D > const &replicas)
 Write r-grid fields in a replicated unit cell to std::ostream.
 
template<int D, class AT >
void expandRGridDimension (std::ostream &out, DArray< AT > const &fields, IntVec< D > const &meshDimensions, UnitCell< D > const &unitCell, int d, DArray< int > newGridDimensions)
 Expand the dimensionality of space from D to d.
 

Detailed Description

Periodic fields and crystallography.

Function Documentation

◆ serialize() [1/3]

template<class Archive >
void Pscf::Prdc::serialize ( Archive & ar,
UnitCell< 1 >::LatticeSystem & lattice,
const unsigned int version )
inline

Serialize a UnitCell<1>::LatticeSystem enumeration value.

Parameters
ararchive
latticeenumeration data to be serialized
versionversion id

Definition at line 260 of file UnitCell.h.

References Util::serializeEnum().

◆ operator<<()

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

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

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

Definition at line 186 of file UnitCell2.cpp.

References UTIL_THROW.

◆ serialize() [2/3]

template<class Archive >
void Pscf::Prdc::serialize ( Archive & ar,
UnitCell< 2 >::LatticeSystem & lattice,
const unsigned int version )
inline

Serialize a UnitCell<2>::LatticeSystem enumeration value.

Parameters
ararchive
latticeenumeration data to be serialized
versionversion id

Definition at line 402 of file UnitCell.h.

References Util::serializeEnum().

◆ serialize() [3/3]

template<class Archive >
void Pscf::Prdc::serialize ( Archive & ar,
UnitCell< 3 >::LatticeSystem & lattice,
const unsigned int version )
inline

Serialize a UnitCell<3>::LatticeSystem enumeration value.

Parameters
ararchive
latticeenumeration data to be serialized
versionversion id

Definition at line 547 of file UnitCell.h.

References Util::serializeEnum().