|
ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <Exx_LRI.h>
Public Member Functions | |
| Exx_LRI (const Exx_Info::Exx_Info_RI &info_in) | |
| Exx_LRI | operator= (const Exx_LRI &)=delete |
| Exx_LRI | operator= (Exx_LRI &&) |
| void | init (const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv_in, const LCAO_Orbitals &orb) |
| void | init (const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv_in, const LCAO_Orbitals &orb, const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &abfs_in) |
| void | init_spencer (const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv_in, const LCAO_Orbitals &orb) |
| void | init_spencer (const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv_in, const LCAO_Orbitals &orb, const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &abfs_in) |
| void | cal_exx_ions (const UnitCell &ucell, const bool write_cv=false) |
| void | cal_cut_coulomb_cs (std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_cut_IJR, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs, const UnitCell &ucell, const bool write_cv=false) |
| void | cal_ewald_coulomb (std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_full_IJR, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs, const UnitCell &ucell, const bool write_cv=false) |
| void | cal_exx_elec (const std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > &Ds, const UnitCell &ucell, const Parallel_Orbitals &pv, const ModuleSymmetry::Symmetry_rotation *p_symrot=nullptr) |
| void | cal_exx_force (const int &nat) |
| void | cal_exx_stress (const double &omega, const double &lat0) |
| void | reset_Cs (const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs_in) |
| void | reset_Vs (const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_in) |
Public Attributes | |
| std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > | Hexxs |
| double | Eexx |
| ModuleBase::matrix | force_exx |
| ModuleBase::matrix | stress_exx |
Private Types | |
| using | TA = int |
| using | Tcell = int |
| using | TC = std::array< Tcell, Ndim > |
| using | TAC = std::pair< TA, TC > |
| using | TatomR = std::array< double, Ndim > |
Private Member Functions | |
| void | post_process_Hexx (std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Hexxs_io) const |
| double | post_process_Eexx (const double &Eexx_in) const |
Private Attributes | |
| const Exx_Info::Exx_Info_RI & | info |
| MPI_Comm | mpi_comm |
| const K_Vectors * | p_kv = nullptr |
| std::shared_ptr< ORB_gaunt_table > | MGT |
| std::vector< double > | orb_cutoff_ |
| std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > | lcaos |
| std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > | abfs |
| std::map< Conv_Coulomb_Pot_K::Coulomb_Method, Exx_Obj< Tdata > > | exx_objs |
| RI::Exx< TA, Tcell, Ndim, Tdata > | exx_lri |
| std::map< Conv_Coulomb_Pot_K::Coulomb_Method, std::pair< bool, std::map< Conv_Coulomb_Pot_K::Coulomb_Type, std::vector< std::map< std::string, std::string > > > > > | coulomb_settings |
Static Private Attributes | |
| static constexpr std::size_t | Ndim = 3 |
|
private |
|
private |
|
inline |
| void Exx_LRI< Tdata >::cal_cut_coulomb_cs | ( | std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > & | Vs_cut_IJR, |
| std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > & | Cs, | ||
| const UnitCell & | ucell, | ||
| const bool | write_cv = false |
||
| ) |
| void Exx_LRI< Tdata >::cal_ewald_coulomb | ( | std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > & | Vs_full_IJR, |
| std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > & | Cs, | ||
| const UnitCell & | ucell, | ||
| const bool | write_cv = false |
||
| ) |
| void Exx_LRI< Tdata >::cal_exx_elec | ( | const std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > & | Ds, |
| const UnitCell & | ucell, | ||
| const Parallel_Orbitals & | pv, | ||
| const ModuleSymmetry::Symmetry_rotation * | p_symrot = nullptr |
||
| ) |
| void Exx_LRI< Tdata >::cal_exx_force | ( | const int & | nat | ) |
| void Exx_LRI< Tdata >::cal_exx_ions | ( | const UnitCell & | ucell, |
| const bool | write_cv = false |
||
| ) |
| void Exx_LRI< Tdata >::cal_exx_stress | ( | const double & | omega, |
| const double & | lat0 | ||
| ) |
| void Exx_LRI< Tdata >::init | ( | const MPI_Comm & | mpi_comm_in, |
| const UnitCell & | ucell, | ||
| const K_Vectors & | kv_in, | ||
| const LCAO_Orbitals & | orb | ||
| ) |
| void Exx_LRI< Tdata >::init | ( | const MPI_Comm & | mpi_comm_in, |
| const UnitCell & | ucell, | ||
| const K_Vectors & | kv_in, | ||
| const LCAO_Orbitals & | orb, | ||
| const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > & | abfs_in | ||
| ) |
| void Exx_LRI< Tdata >::init_spencer | ( | const MPI_Comm & | mpi_comm_in, |
| const UnitCell & | ucell, | ||
| const K_Vectors & | kv_in, | ||
| const LCAO_Orbitals & | orb | ||
| ) |
| void Exx_LRI< Tdata >::init_spencer | ( | const MPI_Comm & | mpi_comm_in, |
| const UnitCell & | ucell, | ||
| const K_Vectors & | kv_in, | ||
| const LCAO_Orbitals & | orb, | ||
| const std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > & | abfs_in | ||
| ) |
|
private |
|
private |
|
inline |
|
inline |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |
|
private |
| double Exx_LRI< Tdata >::Eexx |
|
private |
| ModuleBase::matrix Exx_LRI< Tdata >::force_exx |
| std::vector< std::map<TA, std::map<TAC, RI::Tensor<Tdata> > > > Exx_LRI< Tdata >::Hexxs |
|
private |
|
private |
|
private |
|
private |
|
staticconstexprprivate |
|
private |
| ModuleBase::matrix Exx_LRI< Tdata >::stress_exx |