13 using Tap = std::pair<int, int>;
14 using TC = std::array<int, 3>;
15 using TapR = std::pair<Tap, TC>;
25 if (lhs.first < rhs.first) {
return true;
26 }
else if (lhs.first > rhs.first) {
return false;
27 }
else {
return lhs.second < rhs.second;
35 if (lhs.first < rhs.first) {
return true;
36 }
else if (lhs.first > rhs.first) {
return false;
37 }
else {
return lhs.second < rhs.second;
45 return R[0] * R[0] + R[1] * R[1] + R[2] * R[2];
50 }
else if (
norm2(lhs) >
norm2(rhs)) {
return false;
51 }
else {
return lhs < rhs;
59 const std::vector<TC>& Rs,
const TC& period,
const Lattice& lat);
75 throw std::out_of_range(
"Invalid atom index in get_return_lattice");
77 if (isym < 0 || isym >=
static_cast<int>(this->
return_lattice_[iat].size())) {
78 throw std::out_of_range(
"Invalid symmetry index in get_return_lattice");
90 TC rotate_R(
const Symmetry& symm,
const int isym,
const int iat1,
const int iat2,
const TC& R,
const char gauge =
'R')
const;
Definition abfs-vector3_order.h:16
3x3 matrix and related mathamatical operations
Definition matrix3.h:19
Definition irreducible_sector.h:19
std::vector< int > invmap_
Definition irreducible_sector.h:137
std::vector< int > isymbvk_to_isym_
symmetry info for BvK supercell
Definition irreducible_sector.h:140
int bvk_nsym_
Definition irreducible_sector.h:141
void gen_symmetry_BvK(const Symmetry &symm, const Atom *atoms, const Lattice &lat, const Statistics &st, const TC bvk_period)
The sub functions judge special symmetry.
Definition irreducible_sector_bvk.cpp:38
std::vector< std::vector< TCdouble > > return_lattice_
the direct lattice vector of {R|t}\tau-\tau' for each atoms and each symmetry operation....
Definition irreducible_sector.h:135
TapR rotate_apR_by_formula(const Symmetry &symm, const int isym, const TapR &iapR, const char gauge='R') const
Definition irreducible_sector.cpp:15
void cal_return_lattice_all(const Symmetry &symm, const Atom *atoms, const Statistics &st)
Definition irreducible_sector.cpp:89
TC rotate_R(const Symmetry &symm, const int isym, const int iat1, const int iat2, const TC &R, const char gauge='R') const
The sub functions to find irreducible sector: {abR}.
Definition irreducible_sector.cpp:5
TCdouble get_return_lattice(const Symmetry &symm, const ModuleBase::Matrix3 &gmatd, const TCdouble gtransd, const TCdouble &posd_a1, const TCdouble &posd_a2) const
Definition irreducible_sector.cpp:50
std::map< Tap, std::set< TC > > irreducible_sector_
whether in 2D plain or not for each symmetry operation
Definition irreducible_sector.h:123
TCdouble get_return_lattice(const int iat, const int isym) const
Definition irreducible_sector.h:72
const std::map< Tap, std::set< TC > > & get_irreducible_sector() const
Definition irreducible_sector.h:60
void output_full_map_to_irreducible_sector(const int nat)
Definition irreducible_sector.cpp:108
std::map< TapR, std::map< int, TapR > > sector_stars_
Definition irreducible_sector.h:132
void find_irreducible_sector(const Symmetry &symm, const Atom *atoms, const Statistics &st, const std::vector< TC > &Rs, const TC &period, const Lattice &lat)
The main function to find irreducible sector: {abR}.
Definition irreducible_sector.cpp:160
ModuleBase::Matrix3 direct_to_cartesian(const ModuleBase::Matrix3 &d, const ModuleBase::Matrix3 &latvec) const
Definition irreducible_sector_bvk.cpp:4
std::map< TapR, std::pair< int, TapR >, apR_less_func > full_map_to_irreducible_sector_
Definition irreducible_sector.h:128
void output_sector_star()
Definition irreducible_sector.cpp:123
void write_irreducible_sector()
Definition irreducible_sector.cpp:146
TCdouble get_aRb_direct(const Atom *atoms, const Statistics &st, const int iat1, const int iat2, const TC &R, const char gauge='R') const
gauge='L': tau_a + R - tau_b; gauge='R': tau_a - tau_b - R (direct)
Definition irreducible_sector.cpp:28
Definition symmetry_rotation.h:16
Definition symm_other.cpp:4
std::pair< Tap, TC > TapR
Definition irreducible_sector.h:15
std::array< int, 3 > TC
Definition irreducible_sector.h:14
std::pair< int, int > Tap
Definition irreducible_sector.h:13
info of lattice
Definition unitcell_data.h:8
Definition irreducible_sector.h:32
bool operator()(const TapR &lhs, const TapR &rhs) const
Definition irreducible_sector.h:33
Definition irreducible_sector.h:22
bool operator()(const Tap &lhs, const Tap &rhs) const
Definition irreducible_sector.h:23
Definition irreducible_sector.h:42
bool operator()(const TC &lhs, const TC &rhs) const
Definition irreducible_sector.h:47
int norm2(const TC &R) const
Definition irreducible_sector.h:43
usefull data and index maps
Definition unitcell_data.h:47