|
PSCF v1.4.0
|
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... | |
| struct | BWave |
| Wave struct designed for use within Basis construction. More... | |
| struct | BWaveMinComp |
| Comparator for BWave objects, based on BWave::indicesMin. More... | |
| struct | BWaveNormComp |
| Comparator for BWave objects, based on BWave::sqNorm. More... | |
| struct | BWaveStdComp |
| Comparator for BWave objects, based on BWave::indicesStd. 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 | FieldState |
| Record of a state of a periodic system (fields + unit cell). 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 | MixAndMatchEnv |
| Environment that can mix and match field generators in variable-cell SCFT. 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 | 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 | |
| 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> | |
| void | sortWaves (UnitCell< D > const &cell, IntVec< D > const &meshDimensions, std::vector< Sort::Item< double > > &items, GArray< Sort::Bunch > &bunches, double epsilon, bool isRealField) |
| Sorted waves and identify bunches of equal magnitude. | |
| 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). | |
| template<int D, class AT> | |
| void | readCFieldsData (std::istream &in, DArray< AT > &fields, IntVec< D > const &dimensions) |
| Read data for an array of complex fields, with no header section. | |
| template<int D, class AT> | |
| void | readCFieldData (std::istream &in, AT &field, IntVec< D > const &dimensions) |
| Read data for a single complex field, with no header section. | |
| template<int D, class AT, typename CT, typename RT> | |
| void | writeCFieldsData (std::ostream &out, DArray< AT > const &fields, IntVec< D > const &dimensions) |
| Write data for an array of complex fields, with no header section. | |
| template<int D, class AT, typename CT, typename RT> | |
| void | writeCFieldData (std::ostream &out, AT const &field, IntVec< D > const &dimensions) |
| Write data for a single complex field, with no header section. | |
| template<int D, class FT> | |
| void | allocateFields (DArray< FT > &fields, int n, IntVec< D > const &dimension) |
| Allocate a DArray of fields. | |
| 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<class AT> | |
| void | allocateArrays (DArray< AT > &arrays, int n, int capacity) |
| Allocate an array of arrays. | |
| 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<class OAT, class IAT> | |
| void | copyArrays (DArray< OAT > &out, DArray< IAT > const &in) |
| Copy a DArray of 1D arrays. | |
| 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. | |
| 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 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. | |
Periodic fields and crystallography.
| 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.
| lattice | lattice system enumeration value |
References hasVariableAngle().
Referenced by Pscf::Prdc::Cpu::WaveList< D >::clearUnitCellData(), Pscf::Prdc::Cuda::WaveList< D >::clearUnitCellData(), and hasVariableAngle().
|
inline |
Serialize a UnitCell<1>::LatticeSystem enumeration value.
| ar | archive |
| lattice | enumeration data to be serialized |
| version | version id |
Definition at line 235 of file UnitCell.h.
References Util::serializeEnum().
| std::ostream & Pscf::Prdc::operator<< | ( | std::ostream & | out, |
| UnitCell< 2 >::LatticeSystem | lattice ) |
ostream inserter for a 2D UnitCell<2>::LatticeSystem.
| out | output stream |
| lattice | UnitCell<2>::LatticeSystem to be written |
Definition at line 248 of file UnitCell2.cpp.
References UTIL_THROW.
|
inline |
Serialize a UnitCell<2>::LatticeSystem enumeration value.
| ar | archive |
| lattice | enumeration data to be serialized |
| version | version id |
Definition at line 377 of file UnitCell.h.
References Util::serializeEnum().
|
inline |
Serialize a UnitCell<3>::LatticeSystem enumeration value.
| ar | archive |
| lattice | enumeration data to be serialized |
| version | version id |
Definition at line 538 of file UnitCell.h.
References Util::serializeEnum().
| void Pscf::Prdc::allocateFields | ( | DArray< FT > & | fields, |
| int | n, | ||
| IntVec< D > const & | dimension ) |
Allocate a DArray of fields.
| fields | DArray of fields of type FT |
| n | number of inner arrays |
| dimension | mesh dimensions |
Definition at line 24 of file fieldCheck.tpp.
References Util::DArray< Data >::allocate(), Util::DArray< Data >::isAllocated(), and UTIL_CHECK.
Referenced by Pscf::Cp::FieldIo< D, CFT, FFT >::convertKGridToRGrid(), and Pscf::Cp::FieldIo< D, CFT, FFT >::convertRGridToKGrid().
| void Pscf::Prdc::allocateArrays | ( | DArray< AT > & | arrays, |
| int | n, | ||
| int | capacity ) |
Allocate an array of arrays.
| arrays | DArray of arrays |
| n | number of inner arrays |
| capacity | capacity of each inner array |
Definition at line 95 of file fieldCheck.tpp.
References Util::DArray< Data >::allocate(), Util::DArray< Data >::isAllocated(), and UTIL_CHECK.
Referenced by Pscf::Rpg::FieldIo< D >::expandRGridDimension(), Pscf::Rpg::FieldIo< D >::readFieldsKGrid(), Pscf::Rpg::FieldIo< D >::readFieldsRGrid(), Pscf::Rpg::FieldIo< D >::readFieldsRGridData(), Pscf::Rpg::FieldIo< D >::replicateUnitCell(), Pscf::Rpg::FieldIo< D >::writeFieldsKGrid(), and Pscf::Rpg::FieldIo< D >::writeFieldsRGrid().