ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
ModuleSymmetry::Irreducible_Sector Class Reference

#include <irreducible_sector.h>

Collaboration diagram for ModuleSymmetry::Irreducible_Sector:

Classes

struct  ap_less_func
 
struct  apR_less_func
 
struct  len_less_func
 

Public Member Functions

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}.
 
const std::map< Tap, std::set< TC > > & get_irreducible_sector () const
 
TCdouble get_return_lattice (const Symmetry &symm, const ModuleBase::Matrix3 &gmatd, const TCdouble gtransd, const TCdouble &posd_a1, const TCdouble &posd_a2) const
 
TCdouble get_return_lattice (const int iat, const int isym) const
 

Protected Member Functions

void cal_return_lattice_all (const Symmetry &symm, const Atom *atoms, const Statistics &st)
 
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}.
 
TapR rotate_apR_by_formula (const Symmetry &symm, const int isym, const TapR &iapR, const char gauge='R') const
 
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)
 
TCdouble get_aRb_direct (const Atom *atoms, const Statistics &st, const int iat1, const int iat2, const TCdouble &R, const char gauge='R') const
 
ModuleBase::Matrix3 direct_to_cartesian (const ModuleBase::Matrix3 &d, const ModuleBase::Matrix3 &latvec) const
 
void output_full_map_to_irreducible_sector (const int nat)
 
void output_sector_star ()
 
void write_irreducible_sector ()
 
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.
 

Protected Attributes

std::map< Tap, std::set< TC > > irreducible_sector_
 whether in 2D plain or not for each symmetry operation
 
std::map< TapR, std::pair< int, TapR >, apR_less_funcfull_map_to_irreducible_sector_
 
std::map< TapR, std::map< int, TapR > > sector_stars_
 
std::vector< std::vector< TCdouble > > return_lattice_
 the direct lattice vector of {R|t}\tau-\tau' for each atoms and each symmetry operation. [natom][nsym]
 
std::vector< int > invmap_
 
std::vector< int > isymbvk_to_isym_
 symmetry info for BvK supercell
 
int bvk_nsym_
 

Friends

class Symmetry_rotation
 

Member Function Documentation

◆ cal_return_lattice_all()

void ModuleSymmetry::Irreducible_Sector::cal_return_lattice_all ( const Symmetry symm,
const Atom atoms,
const Statistics st 
)
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ direct_to_cartesian()

ModuleBase::Matrix3 ModuleSymmetry::Irreducible_Sector::direct_to_cartesian ( const ModuleBase::Matrix3 d,
const ModuleBase::Matrix3 latvec 
) const
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ find_irreducible_sector()

void ModuleSymmetry::Irreducible_Sector::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}.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gen_symmetry_BvK()

void ModuleSymmetry::Irreducible_Sector::gen_symmetry_BvK ( const Symmetry symm,
const Atom atoms,
const Lattice lat,
const Statistics st,
const TC  bvk_period 
)
protected

The sub functions judge special symmetry.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_aRb_direct() [1/2]

TCdouble ModuleSymmetry::Irreducible_Sector::get_aRb_direct ( const Atom atoms,
const Statistics st,
const int  iat1,
const int  iat2,
const TC R,
const char  gauge = 'R' 
) const
protected

gauge='L': tau_a + R - tau_b; gauge='R': tau_a - tau_b - R (direct)

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_aRb_direct() [2/2]

TCdouble ModuleSymmetry::Irreducible_Sector::get_aRb_direct ( const Atom atoms,
const Statistics st,
const int  iat1,
const int  iat2,
const TCdouble R,
const char  gauge = 'R' 
) const
protected

◆ get_irreducible_sector()

const std::map< Tap, std::set< TC > > & ModuleSymmetry::Irreducible_Sector::get_irreducible_sector ( ) const
inline
Here is the caller graph for this function:

◆ get_return_lattice() [1/2]

TCdouble ModuleSymmetry::Irreducible_Sector::get_return_lattice ( const int  iat,
const int  isym 
) const
inline

◆ get_return_lattice() [2/2]

TCdouble ModuleSymmetry::Irreducible_Sector::get_return_lattice ( const Symmetry symm,
const ModuleBase::Matrix3 gmatd,
const TCdouble  gtransd,
const TCdouble posd_a1,
const TCdouble posd_a2 
) const

Perfoming {R|t} to atom position r in the R=0 lattice, we get Rr+t, which may get out of R=0 lattice, whose image in R=0 lattice is r'=Rr+t-O. This function is to get O for each atom and each symmetry operation. the range of direct position is [-0.5, 0.5).

Here is the call graph for this function:
Here is the caller graph for this function:

◆ output_full_map_to_irreducible_sector()

void ModuleSymmetry::Irreducible_Sector::output_full_map_to_irreducible_sector ( const int  nat)
protected

◆ output_sector_star()

void ModuleSymmetry::Irreducible_Sector::output_sector_star ( )
protected

◆ rotate_apR_by_formula()

TapR ModuleSymmetry::Irreducible_Sector::rotate_apR_by_formula ( const Symmetry symm,
const int  isym,
const TapR iapR,
const char  gauge = 'R' 
) const
protected
Here is the call graph for this function:
Here is the caller graph for this function:

◆ rotate_R()

TC ModuleSymmetry::Irreducible_Sector::rotate_R ( const Symmetry symm,
const int  isym,
const int  iat1,
const int  iat2,
const TC R,
const char  gauge = 'R' 
) const
protected

The sub functions to find irreducible sector: {abR}.

gauge='L' means H(R)=<R|H|0>; gauge='R' means H(R)=<0|H|R> gauge='L': R'=R+O_1-O_2; gauge='R': R'=R+O_2-O_1

Here is the caller graph for this function:

◆ write_irreducible_sector()

void ModuleSymmetry::Irreducible_Sector::write_irreducible_sector ( )
protected
Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ Symmetry_rotation

friend class Symmetry_rotation
friend

Member Data Documentation

◆ bvk_nsym_

int ModuleSymmetry::Irreducible_Sector::bvk_nsym_
protected

◆ full_map_to_irreducible_sector_

std::map<TapR, std::pair<int, TapR>, apR_less_func> ModuleSymmetry::Irreducible_Sector::full_map_to_irreducible_sector_
protected

◆ invmap_

std::vector<int> ModuleSymmetry::Irreducible_Sector::invmap_
protected

◆ irreducible_sector_

std::map<Tap, std::set<TC> > ModuleSymmetry::Irreducible_Sector::irreducible_sector_
protected

whether in 2D plain or not for each symmetry operation

irreducible atom pairs: [n_iap][(isym, ap=(iat1, iat2))] The index range of the orbital matrix to be calculated: irreducible R in irreducible atom pairs

◆ isymbvk_to_isym_

std::vector<int> ModuleSymmetry::Irreducible_Sector::isymbvk_to_isym_
protected

symmetry info for BvK supercell

◆ return_lattice_

std::vector<std::vector<TCdouble> > ModuleSymmetry::Irreducible_Sector::return_lattice_
protected

the direct lattice vector of {R|t}\tau-\tau' for each atoms and each symmetry operation. [natom][nsym]

◆ sector_stars_

std::map<TapR, std::map<int, TapR> > ModuleSymmetry::Irreducible_Sector::sector_stars_
protected

The documentation for this class was generated from the following files: