PSCF v1.3
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  CFieldsReal
 A list of c fields stored in both basis and r-grid format. More...
class  DomainReal
 Spatial domain for a periodic structure with real fields. More...
class  Environment
 Base class mask and external field generator for variable-cell SCFT. More...
class  FieldGenerator
 Base class field generator for MixAndMatchEnv in variable-cell SCFT. More...
class  FieldIoReal
 File input/output, format conversions and other utilities for fields. More...
class  FilmFieldGenExtBase
 Base class Field Generator for external fields in thin-film systems. More...
class  FilmFieldGenMaskBase
 Base class Field Generator for thin-film masks. More...
class  MaskReal
 Container for a field to which the total density is constrained. More...
class  MixAndMatchEnv
 Environment that can mix and match field generators in variable-cell SCFT. More...
class  MixtureModifierReal
 Modifier for parameters of an associated mixture. More...
class  MixtureReal
 Solver and descriptor for a mixture of polymers and solvents. More...
class  ScftReal
 Base class for SCFT thermodynamic property calculator. 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...
class  SystemConstRefReal
 Const access to main components of an associated System. 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...
class  WFieldsReal
 A container of w fields stored in both basis and r-grid format. More...

Functions

std::string makeGroupFileName (int D, std::string groupName)
 Generates the file name from a group name.
template<int D>
bool hasVariableAngle (typename UnitCell< D >::LatticeSystem lattice)
 Return true if lattice type has variable angle parameters.
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<>
void replicateUnitCell (IntVec< 1 > const &replicas, UnitCell< 1 > const &cellIn, UnitCell< 1 > &cellOut)
 Create a replicated UnitCell<1>.
template<>
void replicateUnitCell (IntVec< 2 > const &replicas, UnitCell< 2 > const &cellIn, UnitCell< 2 > &cellOut)
 Create a replicated UnitCell<2>.
template<>
void replicateUnitCell (IntVec< 3 > const &replicas, UnitCell< 3 > const &cellIn, UnitCell< 3 > &cellOut)
 Create a replicated UnitCell<3>.
template<int D>
void replicateUnitCell (IntVec< D > const &replicas, UnitCell< D > const &cellIn, UnitCell< D > &cellOut)
 Create a replicated UnitCell<D> (base template).
template<>
void replicateUnitCell (IntVec< 1 > const &replicas, UnitCell< 1 > const &cellIn, UnitCell< 1 > &cellOut)
 Create a replicated UnitCell<1>.
template<>
void replicateUnitCell (IntVec< 2 > const &replicas, UnitCell< 2 > const &cellIn, UnitCell< 2 > &cellOut)
 Create a replicated UnitCell<2>.
template<>
void replicateUnitCell (IntVec< 3 > const &replicas, UnitCell< 3 > const &cellIn, UnitCell< 3 > &cellOut)
 Create a replicated UnitCell<3>.
template<int D>
IntVec< D > shiftToMinimum (IntVec< D > const &v, IntVec< D > const &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.
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>
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).
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, 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 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).
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.
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 an array of fields in basis format, without a header.
template<int D>
void readBasisData (std::istream &in, DArray< double > &field, UnitCell< D > const &unitCell, Mesh< D > const &mesh, Basis< D > const &basis, int nStarIn)
 Read data section of a single field in basis format.
template<int D>
void writeBasisData (std::ostream &out, DArray< DArray< double > > const &fields, Basis< D > const &basis)
 Write data section of an array of fields in basis format.
template<int D>
void writeBasisData (std::ostream &out, DArray< double > const &field, Basis< D > const &basis)
 Write data section of a single field in basis format.
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

◆ hasVariableAngle()

template<int D>
bool Pscf::Prdc::hasVariableAngle ( typename UnitCell< D >::LatticeSystem lattice)

Return true if lattice type has variable angle parameters.

This base template is not defined, but explicit specializations are defined for D=1, 2, and 3.

Parameters
latticelattice system enumeration value
Returns
true iff lattice type has variable angles

References hasVariableAngle().

Referenced by Pscf::Prdc::Cpu::WaveList< D >::clearUnitCellData(), and hasVariableAngle().

◆ 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 235 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 248 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 377 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 538 of file UnitCell.h.

References Util::serializeEnum().