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:58
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:41
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