|
ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <VNL_in_pw.h>
Public Member Functions | |
| pseudopot_cell_vnl () | |
| ~pseudopot_cell_vnl () | |
| void | init (const UnitCell &cell, Structure_Factor *psf_in, const ModulePW::PW_Basis_K *wfc_basis=nullptr, const bool allocate_vkb=true) |
| void | init_vnl (UnitCell &cell, const ModulePW::PW_Basis *rho_basis) |
| void | rescale_vnl (const double &omega_in) |
| template<typename FPTYPE , typename Device > | |
| void | getvnl (Device *ctx, const UnitCell &ucell, const int &ik, std::complex< FPTYPE > *vkb_in) const |
| void | init_vnl_alpha (const UnitCell &cell) |
| void | initgradq_vnl (const UnitCell &cell) |
| void | getgradq_vnl (const UnitCell &ucell, const int ik) |
| std::complex< double > | Cal_C (int alpha, int lu, int mu, int L, int M) |
| double | CG (int l1, int m1, int l2, int m2, int L, int M) |
| void | print_vnl (std::ofstream &ofs) |
| void | radial_fft_q (const int ng, const int ih, const int jh, const int itype, const double *qnorm, const ModuleBase::matrix ylm, std::complex< double > *qg) const |
| Compute the radial Fourier transform of the Q functions. | |
| template<typename FPTYPE , typename Device > | |
| void | radial_fft_q (Device *ctx, const int ng, const int ih, const int jh, const int itype, const FPTYPE *qnorm, const FPTYPE *ylm, std::complex< FPTYPE > *qg) const |
| void | cal_effective_D (const ModuleBase::matrix &veff, const ModulePW::PW_Basis *rho_basis, UnitCell &cell) |
| calculate the effective coefficient matrix for non-local pseudopotential projectors | |
| template<typename FPTYPE > | |
| FPTYPE * | get_nhtol_data () const |
| template<typename FPTYPE > | |
| FPTYPE * | get_nhtolm_data () const |
| template<typename FPTYPE > | |
| FPTYPE * | get_indv_data () const |
| template<typename FPTYPE > | |
| FPTYPE * | get_tab_data () const |
| template<typename FPTYPE > | |
| FPTYPE * | get_deeq_data () const |
| template<typename FPTYPE > | |
| FPTYPE * | get_qq_nt_data () const |
| template<typename FPTYPE > | |
| std::complex< FPTYPE > * | get_qq_so_data () const |
| template<typename FPTYPE > | |
| std::complex< FPTYPE > * | get_vkb_data () const |
| template<typename FPTYPE > | |
| std::complex< FPTYPE > * | get_deeq_nc_data () const |
| void | release_memory () |
| template<> | |
| std::complex< float > * | get_vkb_data () const |
| template<> | |
| std::complex< double > * | get_vkb_data () const |
| template<> | |
| float * | get_nhtol_data () const |
| template<> | |
| double * | get_nhtol_data () const |
| template<> | |
| float * | get_nhtolm_data () const |
| template<> | |
| double * | get_nhtolm_data () const |
| template<> | |
| float * | get_indv_data () const |
| template<> | |
| double * | get_indv_data () const |
| template<> | |
| float * | get_tab_data () const |
| template<> | |
| double * | get_tab_data () const |
| template<> | |
| float * | get_deeq_data () const |
| template<> | |
| double * | get_deeq_data () const |
| template<> | |
| float * | get_qq_nt_data () const |
| template<> | |
| double * | get_qq_nt_data () const |
| template<> | |
| std::complex< float > * | get_vkb_data () const |
| template<> | |
| std::complex< double > * | get_vkb_data () const |
| template<> | |
| std::complex< float > * | get_deeq_nc_data () const |
| template<> | |
| std::complex< double > * | get_deeq_nc_data () const |
| template<> | |
| std::complex< float > * | get_qq_so_data () const |
| template<> | |
| std::complex< double > * | get_qq_so_data () const |
Private Member Functions | |
| void | compute_qrad (UnitCell &cell) |
| Compute interpolation table qrad. | |
| void | newq (const ModuleBase::matrix &veff, const ModulePW::PW_Basis *rho_basis, UnitCell &cell) |
| computes the integral of the effective potential with the Q function | |
| void | newd_so (const int &iat, UnitCell &cell) |
| calculate D functions in the soc case when tvanp is true | |
| void | newd_nc (const int &iat, UnitCell &cell) |
| calculate D functions in the noncolin case when tvanp is true | |
Private Attributes | |
| bool | memory_released = false |
| float * | s_nhtol = nullptr |
| float * | s_nhtolm = nullptr |
| float * | s_indv = nullptr |
| float * | s_tab = nullptr |
| std::complex< float > * | c_vkb = nullptr |
| double * | d_nhtol = nullptr |
| double * | d_nhtolm = nullptr |
| double * | d_indv = nullptr |
| double * | d_tab = nullptr |
| std::complex< double > * | z_vkb = nullptr |
| const ModulePW::PW_Basis_K * | wfcpw = nullptr |
| Soc | soc |
| double | omega_old = 0 |
| bool | use_gpu_ = false |
| pseudopot_cell_vnl::pseudopot_cell_vnl | ( | ) |
| pseudopot_cell_vnl::~pseudopot_cell_vnl | ( | ) |
| std::complex< double > pseudopot_cell_vnl::Cal_C | ( | int | alpha, |
| int | lu, | ||
| int | mu, | ||
| int | L, | ||
| int | M | ||
| ) |
| void pseudopot_cell_vnl::cal_effective_D | ( | const ModuleBase::matrix & | veff, |
| const ModulePW::PW_Basis * | rho_basis, | ||
| UnitCell & | cell | ||
| ) |
calculate the effective coefficient matrix for non-local pseudopotential projectors
| veff | effective potential |
| rho_basis | potential FFT grids |
| cell | UnitCell |
| double pseudopot_cell_vnl::CG | ( | int | l1, |
| int | m1, | ||
| int | l2, | ||
| int | m2, | ||
| int | L, | ||
| int | M | ||
| ) |
|
private |
Compute interpolation table qrad.
Compute interpolation table qrad(i,nm,l,nt) = Q^{(L)}_{nm,nt}(q_i) of angular momentum L, for atom of type nt, on grid q_i, where nm = combined index for n,m=1,nh(nt)
| cell | UnitCell |
| float * pseudopot_cell_vnl::get_deeq_data | ( | ) | const |
| double * pseudopot_cell_vnl::get_deeq_data | ( | ) | const |
| FPTYPE * pseudopot_cell_vnl::get_deeq_data | ( | ) | const |
| std::complex< float > * pseudopot_cell_vnl::get_deeq_nc_data | ( | ) | const |
| std::complex< double > * pseudopot_cell_vnl::get_deeq_nc_data | ( | ) | const |
| std::complex< FPTYPE > * pseudopot_cell_vnl::get_deeq_nc_data | ( | ) | const |
| float * pseudopot_cell_vnl::get_indv_data | ( | ) | const |
| double * pseudopot_cell_vnl::get_indv_data | ( | ) | const |
| FPTYPE * pseudopot_cell_vnl::get_indv_data | ( | ) | const |
| float * pseudopot_cell_vnl::get_nhtol_data | ( | ) | const |
| double * pseudopot_cell_vnl::get_nhtol_data | ( | ) | const |
| FPTYPE * pseudopot_cell_vnl::get_nhtol_data | ( | ) | const |
| float * pseudopot_cell_vnl::get_nhtolm_data | ( | ) | const |
| double * pseudopot_cell_vnl::get_nhtolm_data | ( | ) | const |
| FPTYPE * pseudopot_cell_vnl::get_nhtolm_data | ( | ) | const |
| float * pseudopot_cell_vnl::get_qq_nt_data | ( | ) | const |
| double * pseudopot_cell_vnl::get_qq_nt_data | ( | ) | const |
| FPTYPE * pseudopot_cell_vnl::get_qq_nt_data | ( | ) | const |
| std::complex< float > * pseudopot_cell_vnl::get_qq_so_data | ( | ) | const |
| std::complex< double > * pseudopot_cell_vnl::get_qq_so_data | ( | ) | const |
| std::complex< FPTYPE > * pseudopot_cell_vnl::get_qq_so_data | ( | ) | const |
| float * pseudopot_cell_vnl::get_tab_data | ( | ) | const |
| double * pseudopot_cell_vnl::get_tab_data | ( | ) | const |
| FPTYPE * pseudopot_cell_vnl::get_tab_data | ( | ) | const |
| std::complex< float > * pseudopot_cell_vnl::get_vkb_data | ( | ) | const |
| std::complex< double > * pseudopot_cell_vnl::get_vkb_data | ( | ) | const |
| std::complex< float > * pseudopot_cell_vnl::get_vkb_data | ( | ) | const |
| std::complex< double > * pseudopot_cell_vnl::get_vkb_data | ( | ) | const |
| std::complex< FPTYPE > * pseudopot_cell_vnl::get_vkb_data | ( | ) | const |
| void pseudopot_cell_vnl::getgradq_vnl | ( | const UnitCell & | ucell, |
| const int | ik | ||
| ) |
| void pseudopot_cell_vnl::getvnl | ( | Device * | ctx, |
| const UnitCell & | ucell, | ||
| const int & | ik, | ||
| std::complex< FPTYPE > * | vkb_in | ||
| ) | const |
| void pseudopot_cell_vnl::init | ( | const UnitCell & | cell, |
| Structure_Factor * | psf_in, | ||
| const ModulePW::PW_Basis_K * | wfc_basis = nullptr, |
||
| const bool | allocate_vkb = true |
||
| ) |
| void pseudopot_cell_vnl::init_vnl | ( | UnitCell & | cell, |
| const ModulePW::PW_Basis * | rho_basis | ||
| ) |
| void pseudopot_cell_vnl::init_vnl_alpha | ( | const UnitCell & | cell | ) |
| void pseudopot_cell_vnl::initgradq_vnl | ( | const UnitCell & | cell | ) |
|
private |
calculate D functions in the noncolin case when tvanp is true
| iat | the index of atom |
| cell | UnitCell |
|
private |
calculate D functions in the soc case when tvanp is true
| iat | the index of atom |
| cell | UnitCell |
|
private |
computes the integral of the effective potential with the Q function
| veff | effective potential |
| rho_basis | potential FFT grids |
| cell | UnitCell |
| void pseudopot_cell_vnl::print_vnl | ( | std::ofstream & | ofs | ) |
| void pseudopot_cell_vnl::radial_fft_q | ( | const int | ng, |
| const int | ih, | ||
| const int | jh, | ||
| const int | itype, | ||
| const double * | qnorm, | ||
| const ModuleBase::matrix | ylm, | ||
| std::complex< double > * | qg | ||
| ) | const |
Compute the radial Fourier transform of the Q functions.
The interpolation table for the radial Fourier transform is stored in qrad.
The formula implemented here is: [ q(g,i,j) = \sum_\text{lm} (-i)^l \text{ap}(\text{lm},i,j) \text{yr}_\text{lm}(g) \text{qrad}(g,l,i,j) ]
| ng | [in] the number of G vectors |
| ih | [in] the first index of Q |
| jh | [in] the second index of Q |
| itype | [in] the atomic type |
| qnorm | [in] the norm of q+g vectors |
| ylm | [in] the real spherical harmonics |
| qg | [out] the Fourier transform of interest |
| void pseudopot_cell_vnl::radial_fft_q | ( | Device * | ctx, |
| const int | ng, | ||
| const int | ih, | ||
| const int | jh, | ||
| const int | itype, | ||
| const FPTYPE * | qnorm, | ||
| const FPTYPE * | ylm, | ||
| std::complex< FPTYPE > * | qg | ||
| ) | const |
| void pseudopot_cell_vnl::release_memory | ( | ) |
| void pseudopot_cell_vnl::rescale_vnl | ( | const double & | omega_in | ) |
| ModuleBase::realArray pseudopot_cell_vnl::ap |
| std::complex<float>* pseudopot_cell_vnl::c_deeq_nc = nullptr |
| std::complex<float>* pseudopot_cell_vnl::c_qq_so = nullptr |
|
private |
| double pseudopot_cell_vnl::cell_factor = 0.0 |
| double* pseudopot_cell_vnl::d_deeq = nullptr |
|
private |
|
private |
|
private |
| double* pseudopot_cell_vnl::d_qq_nt = nullptr |
|
private |
| ModuleBase::realArray pseudopot_cell_vnl::deeq |
| ModuleBase::ComplexArray pseudopot_cell_vnl::deeq_nc |
| ModuleBase::realArray pseudopot_cell_vnl::dvan |
| ModuleBase::ComplexArray pseudopot_cell_vnl::dvan_so |
|
mutable |
| ModuleBase::IntArray pseudopot_cell_vnl::ijtoh |
| ModuleBase::matrix pseudopot_cell_vnl::indv |
| int* pseudopot_cell_vnl::indv_ijkb0 = nullptr |
| int pseudopot_cell_vnl::lmaxkb = 0 |
| int pseudopot_cell_vnl::lmaxq = 0 |
| ModuleBase::IntArray pseudopot_cell_vnl::lpl |
| ModuleBase::IntArray pseudopot_cell_vnl::lpx |
|
private |
| bool pseudopot_cell_vnl::multi_proj = false |
| int pseudopot_cell_vnl::nbetam = 0 |
| int pseudopot_cell_vnl::nhm = 0 |
| ModuleBase::matrix pseudopot_cell_vnl::nhtoj |
| ModuleBase::matrix pseudopot_cell_vnl::nhtol |
| ModuleBase::matrix pseudopot_cell_vnl::nhtolm |
| int pseudopot_cell_vnl::nkb = 0 |
|
private |
| Structure_Factor* pseudopot_cell_vnl::psf = nullptr |
| ModuleBase::realArray pseudopot_cell_vnl::qq_at |
| ModuleBase::realArray pseudopot_cell_vnl::qq_nt |
| ModuleBase::ComplexArray pseudopot_cell_vnl::qq_so |
| ModuleBase::realArray pseudopot_cell_vnl::qrad |
| float* pseudopot_cell_vnl::s_deeq = nullptr |
|
private |
|
private |
|
private |
| float* pseudopot_cell_vnl::s_qq_nt = nullptr |
|
private |
|
private |
| ModuleBase::realArray pseudopot_cell_vnl::tab |
| ModuleBase::realArray pseudopot_cell_vnl::tab_alpha |
| ModuleBase::realArray pseudopot_cell_vnl::tab_at |
| ModuleBase::realArray pseudopot_cell_vnl::tab_dq |
|
private |
|
mutable |
| std::complex<double>*** pseudopot_cell_vnl::vkb1_alpha |
| std::complex<double>*** pseudopot_cell_vnl::vkb_alpha |
|
private |
| std::complex<double>* pseudopot_cell_vnl::z_deeq_nc = nullptr |
| std::complex<double>* pseudopot_cell_vnl::z_qq_so = nullptr |
|
private |