12 using Tap = std::pair<int, int>;
13 using TC = std::array<int, 3>;
14 using TapR = std::pair<Tap, TC>;
24 if (lhs.first < rhs.first) {
return true;
25 }
else if (lhs.first > rhs.first) {
return false;
26 }
else {
return lhs.second < rhs.second;
34 if (lhs.first < rhs.first) {
return true;
35 }
else if (lhs.first > rhs.first) {
return false;
36 }
else {
return lhs.second < rhs.second;
44 return R[0] * R[0] + R[1] * R[1] + R[2] * R[2];
49 }
else if (
norm2(lhs) >
norm2(rhs)) {
return false;
50 }
else {
return lhs < rhs;
58 const std::vector<TC>& Rs,
const TC& period,
const Lattice& lat);
74 throw std::out_of_range(
"Invalid atom index in get_return_lattice");
76 if (isym < 0 || isym >=
static_cast<int>(this->
return_lattice_[iat].size())) {
77 throw std::out_of_range(
"Invalid symmetry index in get_return_lattice");
89 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:18
std::vector< int > invmap_
Definition irreducible_sector.h:136
std::vector< int > isymbvk_to_isym_
symmetry info for BvK supercell
Definition irreducible_sector.h:139
int bvk_nsym_
Definition irreducible_sector.h:140
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:134
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:122
TCdouble get_return_lattice(const int iat, const int isym) const
Definition irreducible_sector.h:71
const std::map< Tap, std::set< TC > > & get_irreducible_sector() const
Definition irreducible_sector.h:59
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:131
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:127
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:14
std::array< int, 3 > TC
Definition irreducible_sector.h:13
std::pair< int, int > Tap
Definition irreducible_sector.h:12
info of lattice
Definition unitcell_data.h:8
Definition irreducible_sector.h:31
bool operator()(const TapR &lhs, const TapR &rhs) const
Definition irreducible_sector.h:32
Definition irreducible_sector.h:21
bool operator()(const Tap &lhs, const Tap &rhs) const
Definition irreducible_sector.h:22
Definition irreducible_sector.h:41
bool operator()(const TC &lhs, const TC &rhs) const
Definition irreducible_sector.h:46
int norm2(const TC &R) const
Definition irreducible_sector.h:42
usefull data and index maps
Definition unitcell_data.h:47