21 #ifndef JDFTX_ELECTRONIC_SYMMETRIES_H    22 #define JDFTX_ELECTRONIC_SYMMETRIES_H    24 #include <electronic/common.h>    25 #include <core/matrix3.h>    30 enum SymmetryMode {SymmetriesNone, SymmetriesAutomatic, SymmetriesManual}; 
    43         std::vector<QuantumNumber> 
reduceKmesh(
const std::vector<QuantumNumber>& qnums) 
const;
    48         const std::vector< matrix3<int> >& 
getMatrices() 
const; 
    52         const std::vector<std::vector<std::vector<int> > >& 
getAtomMap() 
const; 
    58         std::vector< matrix3<int> > sym; 
    59         std::vector< matrix3<int> > symMesh; 
    60         std::vector< std::vector<matrix> > symSpherical; 
    61         std::vector< std::vector<matrix> > symSpinAngle; 
    63         std::vector<int> kpointInvertList; 
    64         std::vector<unsigned long long> kmap; 
    65         friend struct CommandSymmetries;
    66         friend struct CommandSymmetryMatrix;
    67         friend struct CommandDebug;
    69         bool shouldPrintMatrices;
    72         void calcSymmetries(); 
    77         void sortSymmetries(); 
    79         void checkSymmetries() 
const; 
    82         int *symmIndex, nSymmIndex;
    86         std::vector<std::vector<std::vector<int> > > atomMap;
    90 #endif // JDFTX_ELECTRONIC_SYMMETRIES_H const std::vector< matrix > & getSphericalMatrices(int l, bool relativistic) const 
directly access the symmetry matrices (in Ylm or spin-angle basis at specified l, depending on relati...
 
void setup(const Everything &everything)
Phase 1 of setup which computes/checks lattice+basis symmetries. 
 
void setupMesh()
Phase 2 of setup which computes / checks FFTbox and k-mesh dependent symmetries. 
 
void symmetrize(ScalarField &) const 
symmetrize a scalar field 
 
General complex matrix. 
Definition: matrix.h:57
 
Real and complex scalar fields in real and reciprocal space. 
 
const std::vector< std::vector< std::vector< int > > > & getAtomMap() const 
direct access to mapping of each atom under each symmetry matrix (index order species, atom, symmetry) 
 
const std::vector< int > & getKpointInvertList() const 
direct access to inversion property of symmetry group (see kpointInvertList) 
 
std::vector< QuantumNumber > reduceKmesh(const std::vector< QuantumNumber > &qnums) const 
Reduce a k-point mesh (and remember its inversion symmetry property in kpointInvertList) ...
 
const std::vector< matrix3< int > > & getMeshMatrices() const 
directly access the symmetry matrices (in mesh coords) 
 
Definition: Everything.h:41
 
void printKmap(FILE *fp) const 
print the k-point map (cached in kmap) 
 
void symmetrizeSpherical(matrix &, const SpeciesInfo *specie) const 
symmetrize matrices in Ylm basis per atom of species sp (accounting for atom maps) ...
 
Definition: Symmetries.h:32
 
std::shared_ptr< ScalarFieldData > ScalarField
A smart reference-counting pointer to ScalarFieldData. 
Definition: ScalarField.h:40
 
Definition: SpeciesInfo.h:33
 
const std::vector< matrix3< int > > & getMatrices() const 
directly access the symmetry matrices (in lattice coords) 
 
Object to hold all the forces. 
Definition: IonicMinimizer.h:31
 
SymmetryMode mode
Symmetry mode (none, automatic or manual) 
Definition: Symmetries.h:35