8#include <unordered_map>
14template <
typename T,
typename Device = base_device::DEVICE_CPU>
28 const std::string calculation_type_in,
29 const std::string basis_type_in,
30 const std::string method_in,
31 const bool use_paw_in,
32 const bool use_uspp_in,
34 const int scf_iter_in,
35 const int diag_iter_max_in,
36 const double diag_thr_in,
37 const bool need_subspace_in,
38 const bool use_k_continuity_in =
false)
53 double* out_eigenvalues,
54 const int rank_in_pool_in,
55 const int nproc_in_pool_in,
56 const bool skip_charge,
65 std::vector<Real>& pre_condition,
101 void cal_smooth_ethr(
const double& wk,
const double* wg,
const double& ethr, std::vector<double>& ethrs);
104 void paw_func_in_kloop(
const int ik,
107 void call_paw_cell_set_currentk(
const int ik);
115 std::vector<ModuleBase::Vector3<double>>
kvecs_c;
Special pw_basis class. It includes different k-points.
Definition pw_basis_k.h:57
Definition elecstate.h:15
Definition hsolver_pw.h:16
void hamiltSolvePsiK(hamilt::Hamilt< T, Device > *hm, psi::Psi< T, Device > &psi, std::vector< Real > &pre_condition, Real *eigenvalue, const int &nk_nums)
Definition hsolver_pw.cpp:232
std::vector< int > k_order
Definition hsolver_pw.h:113
int rank_in_pool
Definition hsolver_pw.h:94
std::unordered_map< int, int > k_parent
Definition hsolver_pw.h:114
std::vector< ModuleBase::Vector3< double > > kvecs_c
Definition hsolver_pw.h:115
void update_precondition(std::vector< Real > &h_diag, const int ik, const int npw, const Real vl_of_0)
Definition hsolver_pw.cpp:467
const std::string method
Definition hsolver_pw.h:78
const bool use_k_continuity
Definition hsolver_pw.h:89
const int scf_iter
Definition hsolver_pw.h:83
const int diag_iter_max
Definition hsolver_pw.h:84
const std::string basis_type
Definition hsolver_pw.h:77
void solve(hamilt::Hamilt< T, Device > *pHamilt, psi::Psi< T, Device > &psi, elecstate::ElecState *pes, double *out_eigenvalues, const int rank_in_pool_in, const int nproc_in_pool_in, const bool skip_charge, const double tpiba, const int nat)
solve function for pw
Definition hsolver_pw.cpp:68
std::vector< double > ethr_band
Definition hsolver_pw.h:97
const bool use_uspp
Definition hsolver_pw.h:80
HSolverPW(ModulePW::PW_Basis_K *wfc_basis_in, const std::string calculation_type_in, const std::string basis_type_in, const std::string method_in, const bool use_paw_in, const bool use_uspp_in, const int nspin_in, const int scf_iter_in, const int diag_iter_max_in, const double diag_thr_in, const bool need_subspace_in, const bool use_k_continuity_in=false)
Definition hsolver_pw.h:27
const bool need_subspace
Definition hsolver_pw.h:87
const int nspin
Definition hsolver_pw.h:81
void cal_smooth_ethr(const double &wk, const double *wg, const double ðr, std::vector< double > ðrs)
calculate the threshold for iterative-diagonalization for each band
Definition hsolver_pw.cpp:26
Device * ctx
Definition hsolver_pw.h:92
void propagate_psi(psi::Psi< T, Device > &psi, const int from_ik, const int to_ik)
Definition hsolver_pw.cpp:584
int nproc_in_pool
Definition hsolver_pw.h:95
ModulePW::PW_Basis_K * wfc_basis
Definition hsolver_pw.h:74
const bool use_paw
Definition hsolver_pw.h:79
const double diag_thr
Definition hsolver_pw.h:85
const std::string calculation_type
Definition hsolver_pw.h:76
typename GetTypeReal< T >::type Real
Definition hsolver_pw.h:21
void output_iterInfo()
Definition hsolver_pw.cpp:516
void build_k_neighbors()
Definition hsolver_pw.cpp:530
Definition diag_comm_info.h:9
T type
Definition macros.h:8
Definition memory_op.h:77
Definition memory_op.h:17
Definition memory_op.h:31