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

#include <ewald_Vq.h>

Collaboration diagram for Ewald_Vq< Tdata >:

Public Member Functions

 Ewald_Vq ()
 
 ~Ewald_Vq ()
 
void init (const UnitCell &ucell, const LCAO_Orbitals &orb, const MPI_Comm &mpi_comm_in, const K_Vectors *kv_in, std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &lcaos_in, std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &abfs_in, const std::map< Conv_Coulomb_Pot_K::Coulomb_Type, std::vector< std::map< std::string, std::string > > > &coulomb_param_in, std::shared_ptr< ORB_gaunt_table > MGT_in, const double &ccp_rmesh_times_in, const double &kmesh_times_in)
 
void init_ions (const UnitCell &ucell, const std::array< Tcell, Ndim > &period_Vs_NAO)
 
double get_singular_chi (const UnitCell &ucell, const std::vector< std::map< std::string, std::string > > &param_list, const double &qdiv)
 
std::map< TA, std::map< TAK, RI::Tensor< std::complex< double > > > > cal_Vq (const UnitCell &ucell, const double &chi, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_in)
 
std::map< TA, std::map< TAK, std::array< RI::Tensor< std::complex< double > >, Ndim > > > cal_dVq (const UnitCell &ucell, const double &chi, std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &dVs_in)
 
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > cal_Vs (const UnitCell &ucell, const double &chi, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_in)
 
std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > cal_dVs (const UnitCell &ucell, const double &chi, std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &dVs_in)
 
template<typename Tresult >
auto set_Vs_dVs_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, Tresult > > &Vs_dVs_in, std::map< TA, std::map< TAC, Tresult > > &Vs_dVs_gauss_in) -> std::map< TA, std::map< TAC, Tresult > >
 
template<typename Tresult >
auto set_Vq_dVq_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0_k, const std::vector< TAK > &list_A1_k, const int &shift_for_mpi, const T_func_DPget_Vq_dVq< Tresult > &func_DPget_Vq_dVq) -> std::map< TA, std::map< TAK, Tresult > >
 
template<typename Tout , typename Tin >
auto set_Vq_dVq_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, Tin > > &Vs_dVs_minus_gauss) -> std::map< TA, std::map< TAK, Tout > >
 
template<typename Tout , typename Tin >
auto set_Vq_dVq (const UnitCell &ucell, const std::vector< TA > &list_A0_pair_k, const std::vector< TAK > &list_A1_pair_k, std::map< TA, std::map< TAC, Tin > > &Vs_dVs_minus_gauss_in, const T_func_DPcal_Vq_dVq_minus_gauss< Tout, Tin > &func_cal_Vq_dVq_minus_gauss, const T_func_DPcal_Vq_dVq_gauss< Tout > &func_cal_Vq_dVq_gauss) -> std::map< TA, std::map< TAK, Tout > >
 
template<typename Tout , typename Tin >
auto set_Vs_dVs (const UnitCell &ucell, const std::vector< TA > &list_A0_pair_R, const std::vector< TAC > &list_A1_pair_R, std::map< TA, std::map< TAK, Tin > > &Vq) -> std::map< TA, std::map< TAC, Tout > >
 

Private Types

using TA = int
 The Ewald summation decomposes the bare Coulomb interaction into two components: the short-range contribution, evaluated in real space, and the long-range contribution, computed in reciprocal space. A similar strategy can be employed for calculating four-center full-range Coulomb integrals Vq = (\psi\psi|1/r|\psi\psi) in reciprocal space. To use:
 
using Tcell = int
 
using TC = std::array< Tcell, Ndim >
 
using TAC = std::pair< TA, TC >
 
using TK = std::array< int, 1 >
 
using TAK = std::pair< TA, TK >
 
template<typename Tresult >
using T_func_DPget_Vq_dVq = std::function< Tresult(const int &lp_max, const int &lq_max, const size_t &ik, const ModuleBase::Vector3< double > &tau)>
 
template<typename Tout , typename Tin >
using T_func_DPcal_Vq_dVq_minus_gauss = std::function< std::map< TA, std::map< TAK, Tout > >(std::map< TA, std::map< TAC, Tin > > &Vs_dVs_minus_gauss)>
 
template<typename Tout >
using T_func_DPcal_Vq_dVq_gauss = std::function< std::map< TA, std::map< TAK, Tout > >(const int &shift_for_mpi)>
 

Private Member Functions

std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > cal_Vs_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1)
 
std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > cal_dVs_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1)
 
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > cal_Vs_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_in)
 
std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > cal_dVs_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &dVs_in)
 
template<typename Tresult >
std::map< TA, std::map< TAC, Tresult > > set_Vs_dVs_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, Tresult > > &Vs_dVs_in, std::map< TA, std::map< TAC, Tresult > > &Vs_dVs_gauss_in)
 
std::map< TA, std::map< TAK, RI::Tensor< std::complex< double > > > > cal_Vq_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0_k, const std::vector< TAK > &list_A1_k, const double &chi, const int &shift_for_mpi)
 
std::map< TA, std::map< TAK, std::array< RI::Tensor< std::complex< double > >, Ndim > > > cal_dVq_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0_k, const std::vector< TAK > &list_A1_k, const double &chi, const int &shift_for_mpi)
 
template<typename Tresult >
std::map< TA, std::map< TAK, Tresult > > set_Vq_dVq_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0_k, const std::vector< TAK > &list_A1_k, const int &shift_for_mpi, const T_func_DPget_Vq_dVq< Tresult > &func_DPget_Vq_dVq)
 
std::map< TA, std::map< TAK, RI::Tensor< std::complex< double > > > > cal_Vq_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_minus_gauss)
 
std::map< TA, std::map< TAK, std::array< RI::Tensor< std::complex< double > >, Ndim > > > cal_dVq_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &dVs_minus_gauss)
 
template<typename Tout , typename Tin >
std::map< TA, std::map< TAK, Tout > > set_Vq_dVq_minus_gauss (const UnitCell &ucell, const std::vector< TA > &list_A0, const std::vector< TAC > &list_A1, std::map< TA, std::map< TAC, Tin > > &Vs_dVs_minus_gauss)
 
template<typename Tout , typename Tin >
std::map< TA, std::map< TAK, Tout > > set_Vq_dVq (const UnitCell &ucell, const std::vector< TA > &list_A0_pair_k, const std::vector< TAK > &list_A1_pair_k, std::map< TA, std::map< TAC, Tin > > &Vs_dVs_minus_gauss_in, const T_func_DPcal_Vq_dVq_minus_gauss< Tout, Tin > &func_cal_Vq_dVq_minus_gauss, const T_func_DPcal_Vq_dVq_gauss< Tout > &func_cal_Vq_dVq_gauss)
 
template<typename Tout , typename Tin >
std::map< TA, std::map< TAC, Tout > > set_Vs_dVs (const UnitCell &ucell, const std::vector< TA > &list_A0_pair_R, const std::vector< TAC > &list_A1_pair_R, std::map< TA, std::map< TAK, Tin > > &Vq)
 
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > init_gauss (std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &orb_in)
 
double cal_V_Rcut (const int it0, const int it1)
 
double get_Rcut_max (const int it0, const int it1)
 

Private Attributes

double ccp_rmesh_times
 
LRI_CV< Tdata > cv
 
Gaussian_Abfs gaussian_abfs
 
const K_Vectorsp_kv = nullptr
 
std::vector< ModuleBase::Vector3< double > > kvec_c
 
MPI_Comm mpi_comm
 
ModuleBase::realArray gaunt
 
std::array< Tcell, Ndimnmp
 
const double ewald_lambda = 1.0
 
std::vector< std::vector< std::vector< double > > > multipole
 
ModuleBase::Element_Basis_Index::IndexLNM index_abfs
 
std::vector< double > lcaos_rcut
 
std::vector< double > g_lcaos_rcut
 
std::vector< double > g_abfs_ccp_rcut
 
std::map< Conv_Coulomb_Pot_K::Coulomb_Type, std::vector< std::map< std::string, std::string > > > coulomb_param
 
const int nspin0 = std::map<int, int>{{1, 1}, {2, 2}, {4, 1}}.at(PARAM.inp.nspin)
 
int nks0
 
std::vector< TAatoms_vec
 
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > g_lcaos
 
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > g_abfs
 
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > g_abfs_ccp
 
std::vector< TAlist_A0
 
std::vector< TAClist_A1
 
std::vector< TAlist_A0_k
 
std::vector< TAKlist_A1_k
 
std::vector< TAlist_A0_pair_R
 
std::vector< TAClist_A1_pair_R
 
std::vector< TAlist_A0_pair_R_period
 
std::vector< TAClist_A1_pair_R_period
 
std::vector< TAlist_A0_pair_k
 
std::vector< TAKlist_A1_pair_k
 

Static Private Attributes

static constexpr std::size_t Ndim = 3
 

Member Typedef Documentation

◆ T_func_DPcal_Vq_dVq_gauss

template<typename Tdata >
template<typename Tout >
using Ewald_Vq< Tdata >::T_func_DPcal_Vq_dVq_gauss = std::function<std::map<TA, std::map<TAK, Tout> >(const int& shift_for_mpi)>
private

◆ T_func_DPcal_Vq_dVq_minus_gauss

template<typename Tdata >
template<typename Tout , typename Tin >
using Ewald_Vq< Tdata >::T_func_DPcal_Vq_dVq_minus_gauss = std::function<std::map<TA, std::map<TAK, Tout> >(std::map<TA, std::map<TAC, Tin> >& Vs_dVs_minus_gauss)>
private

◆ T_func_DPget_Vq_dVq

template<typename Tdata >
template<typename Tresult >
using Ewald_Vq< Tdata >::T_func_DPget_Vq_dVq = std::function<Tresult(const int& lp_max, const int& lq_max, const size_t& ik, const ModuleBase::Vector3<double>& tau)>
private

◆ TA

template<typename Tdata >
using Ewald_Vq< Tdata >::TA = int
private

The Ewald summation decomposes the bare Coulomb interaction into two components: the short-range contribution, evaluated in real space, and the long-range contribution, computed in reciprocal space. A similar strategy can be employed for calculating four-center full-range Coulomb integrals Vq = (\psi\psi|1/r|\psi\psi) in reciprocal space. To use:

  1. Ewald_Vq<Tdata> evq
  2. evq.init
  3. evq.init_ions -> relate to latvec
  4. evq.cal_Vq -> return full-range Vq
  5. evq.cal_Vs -> return FT of Vq

◆ TAC

template<typename Tdata >
using Ewald_Vq< Tdata >::TAC = std::pair<TA, TC>
private

◆ TAK

template<typename Tdata >
using Ewald_Vq< Tdata >::TAK = std::pair<TA, TK>
private

◆ TC

template<typename Tdata >
using Ewald_Vq< Tdata >::TC = std::array<Tcell, Ndim>
private

◆ Tcell

template<typename Tdata >
using Ewald_Vq< Tdata >::Tcell = int
private

◆ TK

template<typename Tdata >
using Ewald_Vq< Tdata >::TK = std::array<int, 1>
private

Constructor & Destructor Documentation

◆ Ewald_Vq()

template<typename Tdata >
Ewald_Vq< Tdata >::Ewald_Vq ( )

◆ ~Ewald_Vq()

template<typename Tdata >
Ewald_Vq< Tdata >::~Ewald_Vq ( )

Member Function Documentation

◆ cal_dVq()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_dVq ( const UnitCell ucell,
const double &  chi,
std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &  dVs_in 
)
inline
Here is the call graph for this function:

◆ cal_dVq_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_dVq_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0_k,
const std::vector< TAK > &  list_A1_k,
const double &  chi,
const int &  shift_for_mpi 
)
inlineprivate
Here is the call graph for this function:

◆ cal_dVq_minus_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_dVq_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &  dVs_minus_gauss 
)
inlineprivate
Here is the call graph for this function:

◆ cal_dVs()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_dVs ( const UnitCell ucell,
const double &  chi,
std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &  dVs_in 
)
inline
Here is the call graph for this function:

◆ cal_dVs_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_dVs_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1 
)
inlineprivate
Here is the call graph for this function:

◆ cal_dVs_minus_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_dVs_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, std::array< RI::Tensor< Tdata >, Ndim > > > &  dVs_in 
)
inlineprivate
Here is the call graph for this function:

◆ cal_V_Rcut()

template<typename Tdata >
double Ewald_Vq< Tdata >::cal_V_Rcut ( const int  it0,
const int  it1 
)
inlineprivate

◆ cal_Vq()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_Vq ( const UnitCell ucell,
const double &  chi,
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &  Vs_in 
)
inline
Here is the call graph for this function:

◆ cal_Vq_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_Vq_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0_k,
const std::vector< TAK > &  list_A1_k,
const double &  chi,
const int &  shift_for_mpi 
)
inlineprivate
Here is the call graph for this function:

◆ cal_Vq_minus_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_Vq_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &  Vs_minus_gauss 
)
inlineprivate
Here is the call graph for this function:

◆ cal_Vs()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_Vs ( const UnitCell ucell,
const double &  chi,
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &  Vs_in 
)
inline
Here is the call graph for this function:

◆ cal_Vs_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_Vs_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1 
)
inlineprivate
Here is the call graph for this function:

◆ cal_Vs_minus_gauss()

template<typename Tdata >
auto Ewald_Vq< Tdata >::cal_Vs_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &  Vs_in 
)
inlineprivate
Here is the call graph for this function:

◆ get_Rcut_max()

template<typename Tdata >
double Ewald_Vq< Tdata >::get_Rcut_max ( const int  it0,
const int  it1 
)
inlineprivate

◆ get_singular_chi()

template<typename Tdata >
double Ewald_Vq< Tdata >::get_singular_chi ( const UnitCell ucell,
const std::vector< std::map< std::string, std::string > > &  param_list,
const double &  qdiv 
)
Here is the call graph for this function:

◆ init()

template<typename Tdata >
void Ewald_Vq< Tdata >::init ( const UnitCell ucell,
const LCAO_Orbitals orb,
const MPI_Comm &  mpi_comm_in,
const K_Vectors kv_in,
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &  lcaos_in,
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &  abfs_in,
const std::map< Conv_Coulomb_Pot_K::Coulomb_Type, std::vector< std::map< std::string, std::string > > > &  coulomb_param_in,
std::shared_ptr< ORB_gaunt_table MGT_in,
const double &  ccp_rmesh_times_in,
const double &  kmesh_times_in 
)
Here is the call graph for this function:

◆ init_gauss()

template<typename Tdata >
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > Ewald_Vq< Tdata >::init_gauss ( std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > &  orb_in)
private

◆ init_ions()

template<typename Tdata >
void Ewald_Vq< Tdata >::init_ions ( const UnitCell ucell,
const std::array< Tcell, Ndim > &  period_Vs_NAO 
)
Here is the call graph for this function:

◆ set_Vq_dVq() [1/2]

template<typename Tdata >
template<typename Tout , typename Tin >
std::map< TA, std::map< TAK, Tout > > Ewald_Vq< Tdata >::set_Vq_dVq ( const UnitCell ucell,
const std::vector< TA > &  list_A0_pair_k,
const std::vector< TAK > &  list_A1_pair_k,
std::map< TA, std::map< TAC, Tin > > &  Vs_dVs_minus_gauss_in,
const T_func_DPcal_Vq_dVq_minus_gauss< Tout, Tin > &  func_cal_Vq_dVq_minus_gauss,
const T_func_DPcal_Vq_dVq_gauss< Tout > &  func_cal_Vq_dVq_gauss 
)
private

◆ set_Vq_dVq() [2/2]

template<typename Tdata >
template<typename Tout , typename Tin >
auto Ewald_Vq< Tdata >::set_Vq_dVq ( const UnitCell ucell,
const std::vector< TA > &  list_A0_pair_k,
const std::vector< TAK > &  list_A1_pair_k,
std::map< TA, std::map< TAC, Tin > > &  Vs_dVs_minus_gauss_in,
const T_func_DPcal_Vq_dVq_minus_gauss< Tout, Tin > &  func_cal_Vq_dVq_minus_gauss,
const T_func_DPcal_Vq_dVq_gauss< Tout > &  func_cal_Vq_dVq_gauss 
) -> std::map<TA, std::map<TAK, Tout>>
Here is the call graph for this function:

◆ set_Vq_dVq_gauss() [1/2]

template<typename Tdata >
template<typename Tresult >
std::map< TA, std::map< TAK, Tresult > > Ewald_Vq< Tdata >::set_Vq_dVq_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0_k,
const std::vector< TAK > &  list_A1_k,
const int &  shift_for_mpi,
const T_func_DPget_Vq_dVq< Tresult > &  func_DPget_Vq_dVq 
)
private

◆ set_Vq_dVq_gauss() [2/2]

template<typename Tdata >
template<typename Tresult >
auto Ewald_Vq< Tdata >::set_Vq_dVq_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0_k,
const std::vector< TAK > &  list_A1_k,
const int &  shift_for_mpi,
const T_func_DPget_Vq_dVq< Tresult > &  func_DPget_Vq_dVq 
) -> std::map<TA, std::map<TAK, Tresult>>
Here is the call graph for this function:

◆ set_Vq_dVq_minus_gauss() [1/2]

template<typename Tdata >
template<typename Tout , typename Tin >
std::map< TA, std::map< TAK, Tout > > Ewald_Vq< Tdata >::set_Vq_dVq_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, Tin > > &  Vs_dVs_minus_gauss 
)
private

◆ set_Vq_dVq_minus_gauss() [2/2]

template<typename Tdata >
template<typename Tout , typename Tin >
auto Ewald_Vq< Tdata >::set_Vq_dVq_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, Tin > > &  Vs_dVs_minus_gauss 
) -> std::map<TA, std::map<TAK, Tout>>
Here is the call graph for this function:

◆ set_Vs_dVs() [1/2]

template<typename Tdata >
template<typename Tout , typename Tin >
std::map< TA, std::map< TAC, Tout > > Ewald_Vq< Tdata >::set_Vs_dVs ( const UnitCell ucell,
const std::vector< TA > &  list_A0_pair_R,
const std::vector< TAC > &  list_A1_pair_R,
std::map< TA, std::map< TAK, Tin > > &  Vq 
)
private

◆ set_Vs_dVs() [2/2]

template<typename Tdata >
template<typename Tout , typename Tin >
auto Ewald_Vq< Tdata >::set_Vs_dVs ( const UnitCell ucell,
const std::vector< TA > &  list_A0_pair_R,
const std::vector< TAC > &  list_A1_pair_R,
std::map< TA, std::map< TAK, Tin > > &  Vq 
) -> std::map<TA, std::map<TAC, Tout>>
Here is the call graph for this function:

◆ set_Vs_dVs_minus_gauss() [1/2]

template<typename Tdata >
template<typename Tresult >
std::map< TA, std::map< TAC, Tresult > > Ewald_Vq< Tdata >::set_Vs_dVs_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, Tresult > > &  Vs_dVs_in,
std::map< TA, std::map< TAC, Tresult > > &  Vs_dVs_gauss_in 
)
private

◆ set_Vs_dVs_minus_gauss() [2/2]

template<typename Tdata >
template<typename Tresult >
auto Ewald_Vq< Tdata >::set_Vs_dVs_minus_gauss ( const UnitCell ucell,
const std::vector< TA > &  list_A0,
const std::vector< TAC > &  list_A1,
std::map< TA, std::map< TAC, Tresult > > &  Vs_dVs_in,
std::map< TA, std::map< TAC, Tresult > > &  Vs_dVs_gauss_in 
) -> std::map<TA, std::map<TAC, Tresult>>
Here is the call graph for this function:

Member Data Documentation

◆ atoms_vec

template<typename Tdata >
std::vector<TA> Ewald_Vq< Tdata >::atoms_vec
private

◆ ccp_rmesh_times

template<typename Tdata >
double Ewald_Vq< Tdata >::ccp_rmesh_times
private

◆ coulomb_param

template<typename Tdata >
std::map<Conv_Coulomb_Pot_K::Coulomb_Type, std::vector<std::map<std::string,std::string> > > Ewald_Vq< Tdata >::coulomb_param
private

◆ cv

template<typename Tdata >
LRI_CV<Tdata> Ewald_Vq< Tdata >::cv
private

◆ ewald_lambda

template<typename Tdata >
const double Ewald_Vq< Tdata >::ewald_lambda = 1.0
private

◆ g_abfs

template<typename Tdata >
std::vector<std::vector<std::vector<Numerical_Orbital_Lm> > > Ewald_Vq< Tdata >::g_abfs
private

◆ g_abfs_ccp

template<typename Tdata >
std::vector<std::vector<std::vector<Numerical_Orbital_Lm> > > Ewald_Vq< Tdata >::g_abfs_ccp
private

◆ g_abfs_ccp_rcut

template<typename Tdata >
std::vector<double> Ewald_Vq< Tdata >::g_abfs_ccp_rcut
private

◆ g_lcaos

template<typename Tdata >
std::vector<std::vector<std::vector<Numerical_Orbital_Lm> > > Ewald_Vq< Tdata >::g_lcaos
private

◆ g_lcaos_rcut

template<typename Tdata >
std::vector<double> Ewald_Vq< Tdata >::g_lcaos_rcut
private

◆ gaunt

template<typename Tdata >
ModuleBase::realArray Ewald_Vq< Tdata >::gaunt
private

◆ gaussian_abfs

template<typename Tdata >
Gaussian_Abfs Ewald_Vq< Tdata >::gaussian_abfs
private

◆ index_abfs

template<typename Tdata >
ModuleBase::Element_Basis_Index::IndexLNM Ewald_Vq< Tdata >::index_abfs
private

◆ kvec_c

template<typename Tdata >
std::vector<ModuleBase::Vector3<double> > Ewald_Vq< Tdata >::kvec_c
private

◆ lcaos_rcut

template<typename Tdata >
std::vector<double> Ewald_Vq< Tdata >::lcaos_rcut
private

◆ list_A0

template<typename Tdata >
std::vector<TA> Ewald_Vq< Tdata >::list_A0
private

◆ list_A0_k

template<typename Tdata >
std::vector<TA> Ewald_Vq< Tdata >::list_A0_k
private

◆ list_A0_pair_k

template<typename Tdata >
std::vector<TA> Ewald_Vq< Tdata >::list_A0_pair_k
private

◆ list_A0_pair_R

template<typename Tdata >
std::vector<TA> Ewald_Vq< Tdata >::list_A0_pair_R
private

◆ list_A0_pair_R_period

template<typename Tdata >
std::vector<TA> Ewald_Vq< Tdata >::list_A0_pair_R_period
private

◆ list_A1

template<typename Tdata >
std::vector<TAC> Ewald_Vq< Tdata >::list_A1
private

◆ list_A1_k

template<typename Tdata >
std::vector<TAK> Ewald_Vq< Tdata >::list_A1_k
private

◆ list_A1_pair_k

template<typename Tdata >
std::vector<TAK> Ewald_Vq< Tdata >::list_A1_pair_k
private

◆ list_A1_pair_R

template<typename Tdata >
std::vector<TAC> Ewald_Vq< Tdata >::list_A1_pair_R
private

◆ list_A1_pair_R_period

template<typename Tdata >
std::vector<TAC> Ewald_Vq< Tdata >::list_A1_pair_R_period
private

◆ mpi_comm

template<typename Tdata >
MPI_Comm Ewald_Vq< Tdata >::mpi_comm
private

◆ multipole

template<typename Tdata >
std::vector<std::vector<std::vector<double> > > Ewald_Vq< Tdata >::multipole
private

◆ Ndim

template<typename Tdata >
constexpr std::size_t Ewald_Vq< Tdata >::Ndim = 3
staticconstexprprivate

◆ nks0

template<typename Tdata >
int Ewald_Vq< Tdata >::nks0
private

◆ nmp

template<typename Tdata >
std::array<Tcell, Ndim> Ewald_Vq< Tdata >::nmp
private

◆ nspin0

template<typename Tdata >
const int Ewald_Vq< Tdata >::nspin0 = std::map<int, int>{{1, 1}, {2, 2}, {4, 1}}.at(PARAM.inp.nspin)
private

◆ p_kv

template<typename Tdata >
const K_Vectors* Ewald_Vq< Tdata >::p_kv = nullptr
private

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