ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
Exx_Lip< T, Device > Class Template Reference

#include <exx_lip.h>

Collaboration diagram for Exx_Lip< T, Device >:

Classes

struct  k_package
 

Public Member Functions

 Exx_Lip (const Exx_Info::Exx_Info_Lip &info_in)
 
 ~Exx_Lip ()
 
 Exx_Lip (const Exx_Info::Exx_Info_Lip &info_in, const ModuleSymmetry::Symmetry &symm, K_Vectors *kv_ptr_in, psi::Psi< T, Device > *psi_local_in, psi::Psi< T, Device > *kspw_psi_ptr_in, const ModulePW::PW_Basis_K *wfc_basis_in, const ModulePW::PW_Basis *rho_basis_in, const Structure_Factor &sf, const UnitCell *ucell_ptr_in, const elecstate::ElecState *pelec_in)
 
void cal_exx ()
 
const std::vector< std::vector< std::vector< T > > > & get_exx_matrix () const
 
Treal get_exx_energy () const
 
void write_q_pack () const
 
void set_hvec (const int ik, const T *const hvec, const int naos, const int nbands)
 
psi::Psi< T, Device > get_hvec () const
 

Public Attributes

const Exx_Info::Exx_Info_Lipinfo
 
const ModulePW::PW_Basisrho_basis = nullptr
 
const ModulePW::PW_Basis_Kwfc_basis = nullptr
 
const UnitCellucell_ptr = nullptr
 

Private Types

using Treal = typename GetTypeReal< T >::type
 

Private Member Functions

void wf_wg_cal ()
 
void phi_cal (k_package *kq_pack, const int ikq)
 
void psi_cal ()
 
void judge_singularity (const int ik)
 
void qkg2_exp (const int ik, const int iq)
 
void b_cal (const int ik, int iq, const int ib)
 
void sum3_cal (const int iq, const int ib)
 
void b_sum (const int iq, const int ib)
 
void sum_all (const int ik)
 
void exx_energy_cal ()
 

Private Attributes

int gzero_rank_in_pool
 
struct Exx_Lip::k_packagek_pack = nullptr
 
struct Exx_Lip::k_packageq_pack = nullptr
 
int iq_vecik
 
std::vector< std::vector< T > > phi
 
std::vector< std::vector< std::vector< T > > > psi
 
std::vector< Trealrecip_qkg2
 
Treal sum2_factor
 
std::vector< Tb
 
std::vector< Tb0
 
std::vector< Tsum1
 
std::vector< std::vector< T > > sum3
 
std::vector< std::vector< std::vector< T > > > exx_matrix
 
Treal exx_energy = 0.0
 
const T two_pi_i = Treal(ModuleBase::TWO_PI) * T(0.0, 1.0)
 

Member Typedef Documentation

◆ Treal

template<typename T , typename Device = base_device::DEVICE_CPU>
using Exx_Lip< T, Device >::Treal = typename GetTypeReal<T>::type
private

Constructor & Destructor Documentation

◆ Exx_Lip() [1/2]

template<typename T , typename Device = base_device::DEVICE_CPU>
Exx_Lip< T, Device >::Exx_Lip ( const Exx_Info::Exx_Info_Lip info_in)

◆ ~Exx_Lip()

template<typename T , typename Device >
Exx_Lip< T, Device >::~Exx_Lip ( )

◆ Exx_Lip() [2/2]

template<typename T , typename Device >
Exx_Lip< T, Device >::Exx_Lip ( const Exx_Info::Exx_Info_Lip info_in,
const ModuleSymmetry::Symmetry symm,
K_Vectors kv_ptr_in,
psi::Psi< T, Device > *  psi_local_in,
psi::Psi< T, Device > *  kspw_psi_ptr_in,
const ModulePW::PW_Basis_K wfc_basis_in,
const ModulePW::PW_Basis rho_basis_in,
const Structure_Factor sf,
const UnitCell ucell_ptr_in,
const elecstate::ElecState pelec_in 
)
Here is the call graph for this function:

Member Function Documentation

◆ b_cal()

template<typename T , typename Device >
void Exx_Lip< T, Device >::b_cal ( const int  ik,
int  iq,
const int  ib 
)
private

need to check while use k_point parallel

Here is the call graph for this function:

◆ b_sum()

template<typename T , typename Device >
void Exx_Lip< T, Device >::b_sum ( const int  iq,
const int  ib 
)
private
Here is the call graph for this function:

◆ cal_exx()

template<typename T , typename Device >
void Exx_Lip< T, Device >::cal_exx ( )
Here is the call graph for this function:

◆ exx_energy_cal()

template<typename T , typename Device >
void Exx_Lip< T, Device >::exx_energy_cal ( )
private
Here is the call graph for this function:

◆ get_exx_energy()

template<typename T , typename Device = base_device::DEVICE_CPU>
Treal Exx_Lip< T, Device >::get_exx_energy ( ) const
inline

◆ get_exx_matrix()

template<typename T , typename Device = base_device::DEVICE_CPU>
const std::vector< std::vector< std::vector< T > > > & Exx_Lip< T, Device >::get_exx_matrix ( ) const
inline

◆ get_hvec()

template<typename T , typename Device = base_device::DEVICE_CPU>
psi::Psi< T, Device > Exx_Lip< T, Device >::get_hvec ( ) const
inline

◆ judge_singularity()

template<typename T , typename Device >
void Exx_Lip< T, Device >::judge_singularity ( const int  ik)
private
Here is the call graph for this function:

◆ phi_cal()

template<typename T , typename Device >
void Exx_Lip< T, Device >::phi_cal ( k_package kq_pack,
const int  ikq 
)
private
Here is the call graph for this function:

◆ psi_cal()

template<typename T , typename Device >
void Exx_Lip< T, Device >::psi_cal ( )
private
Here is the call graph for this function:

◆ qkg2_exp()

template<typename T , typename Device >
void Exx_Lip< T, Device >::qkg2_exp ( const int  ik,
const int  iq 
)
private
Here is the call graph for this function:

◆ set_hvec()

template<typename T , typename Device = base_device::DEVICE_CPU>
void Exx_Lip< T, Device >::set_hvec ( const int  ik,
const T *const  hvec,
const int  naos,
const int  nbands 
)
inline

◆ sum3_cal()

template<typename T , typename Device >
void Exx_Lip< T, Device >::sum3_cal ( const int  iq,
const int  ib 
)
private
Here is the call graph for this function:

◆ sum_all()

template<typename T , typename Device >
void Exx_Lip< T, Device >::sum_all ( const int  ik)
private
Here is the call graph for this function:

◆ wf_wg_cal()

template<typename T , typename Device >
void Exx_Lip< T, Device >::wf_wg_cal ( )
private
Here is the call graph for this function:

◆ write_q_pack()

template<typename T , typename Device >
void Exx_Lip< T, Device >::write_q_pack ( ) const
Here is the call graph for this function:

Member Data Documentation

◆ b

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<T> Exx_Lip< T, Device >::b
private

◆ b0

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<T> Exx_Lip< T, Device >::b0
private

◆ exx_energy

template<typename T , typename Device = base_device::DEVICE_CPU>
Treal Exx_Lip< T, Device >::exx_energy = 0.0
private

◆ exx_matrix

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<std::vector<std::vector<T> > > Exx_Lip< T, Device >::exx_matrix
private

◆ gzero_rank_in_pool

template<typename T , typename Device = base_device::DEVICE_CPU>
int Exx_Lip< T, Device >::gzero_rank_in_pool
private

◆ info

template<typename T , typename Device = base_device::DEVICE_CPU>
const Exx_Info::Exx_Info_Lip& Exx_Lip< T, Device >::info

◆ iq_vecik

template<typename T , typename Device = base_device::DEVICE_CPU>
int Exx_Lip< T, Device >::iq_vecik
private

◆ k_pack

template<typename T , typename Device = base_device::DEVICE_CPU>
struct Exx_Lip::k_package * Exx_Lip< T, Device >::k_pack = nullptr
private

◆ phi

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<std::vector<T> > Exx_Lip< T, Device >::phi
private

◆ psi

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<std::vector<std::vector<T> > > Exx_Lip< T, Device >::psi
private

◆ q_pack

template<typename T , typename Device = base_device::DEVICE_CPU>
struct Exx_Lip::k_package * Exx_Lip< T, Device >::q_pack = nullptr
private

◆ recip_qkg2

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<Treal> Exx_Lip< T, Device >::recip_qkg2
private

◆ rho_basis

template<typename T , typename Device = base_device::DEVICE_CPU>
const ModulePW::PW_Basis* Exx_Lip< T, Device >::rho_basis = nullptr

◆ sum1

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<T> Exx_Lip< T, Device >::sum1
private

◆ sum2_factor

template<typename T , typename Device = base_device::DEVICE_CPU>
Treal Exx_Lip< T, Device >::sum2_factor
private

◆ sum3

template<typename T , typename Device = base_device::DEVICE_CPU>
std::vector<std::vector<T> > Exx_Lip< T, Device >::sum3
private

◆ two_pi_i

template<typename T , typename Device = base_device::DEVICE_CPU>
const T Exx_Lip< T, Device >::two_pi_i = Treal(ModuleBase::TWO_PI) * T(0.0, 1.0)
private

◆ ucell_ptr

template<typename T , typename Device = base_device::DEVICE_CPU>
const UnitCell* Exx_Lip< T, Device >::ucell_ptr = nullptr

◆ wfc_basis

template<typename T , typename Device = base_device::DEVICE_CPU>
const ModulePW::PW_Basis_K* Exx_Lip< T, Device >::wfc_basis = nullptr

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