|
ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <hsolver_pw_sdft.h>
Public Member Functions | |
| HSolverPW_SDFT (K_Vectors *pkv, ModulePW::PW_Basis_K *wfc_basis_in, Stochastic_WF< T, Device > &stowf, StoChe< Real, Device > &stoche, hamilt::HamiltSdftPW< T, Device > *p_hamilt_sto, 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) | |
| void | solve (const UnitCell &ucell, hamilt::Hamilt< T, Device > *pHamilt, psi::Psi< T, Device > &psi, psi::Psi< T > &psi_cpu, elecstate::ElecState *pes, ModulePW::PW_Basis_K *wfc_basis, Stochastic_WF< T, Device > &stowf, const int istep, const int iter, const bool skip_charge) |
Public Member Functions inherited from hsolver::HSolverPW< T, Device > | |
| 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) | |
| 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 | |
Public Attributes | |
| Stochastic_Iter< T, Device > | stoiter |
Protected Types | |
| using | Real = typename GetTypeReal< T >::type |
| using | setmem_complex_op = base_device::memory::set_memory_op< T, Device > |
| using | setmem_var_op = base_device::memory::set_memory_op< Real, Device > |
| using | syncmem_h2d_op = base_device::memory::synchronize_memory_op< T, Device, base_device::DEVICE_CPU > |
| using | syncmem_d2h_op = base_device::memory::synchronize_memory_op< T, base_device::DEVICE_CPU, Device > |
| using | syncmem_var_h2d_op = base_device::memory::synchronize_memory_op< Real, Device, base_device::DEVICE_CPU > |
| using | syncmem_var_d2h_op = base_device::memory::synchronize_memory_op< Real, base_device::DEVICE_CPU, Device > |
Protected Types inherited from hsolver::HSolverPW< T, Device > | |
| using | Real = typename GetTypeReal< T >::type |
| using | resmem_complex_op = base_device::memory::resize_memory_op< T, Device > |
| using | delmem_complex_op = base_device::memory::delete_memory_op< T, Device > |
| using | setmem_complex_op = base_device::memory::set_memory_op< T, Device > |
Additional Inherited Members | |
Protected Member Functions inherited from hsolver::HSolverPW< T, Device > | |
| void | hamiltSolvePsiK (hamilt::Hamilt< T, Device > *hm, psi::Psi< T, Device > &psi, std::vector< Real > &pre_condition, Real *eigenvalue, const int &nk_nums) |
| void | update_precondition (std::vector< Real > &h_diag, const int ik, const int npw, const Real vl_of_0) |
| void | output_iterInfo () |
Protected Attributes inherited from hsolver::HSolverPW< T, Device > | |
| ModulePW::PW_Basis_K * | wfc_basis |
| const std::string | calculation_type |
| const std::string | basis_type |
| const std::string | method |
| const bool | use_paw |
| const bool | use_uspp |
| const int | nspin |
| const int | scf_iter |
| const int | diag_iter_max |
| const double | diag_thr |
| const bool | need_subspace |
| const bool | use_k_continuity |
| Device * | ctx = {} |
| int | rank_in_pool = 0 |
| int | nproc_in_pool = 1 |
| std::vector< double > | ethr_band |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
inline |
| void hsolver::HSolverPW_SDFT< T, Device >::solve | ( | const UnitCell & | ucell, |
| hamilt::Hamilt< T, Device > * | pHamilt, | ||
| psi::Psi< T, Device > & | psi, | ||
| psi::Psi< T > & | psi_cpu, | ||
| elecstate::ElecState * | pes, | ||
| ModulePW::PW_Basis_K * | wfc_basis, | ||
| Stochastic_WF< T, Device > & | stowf, | ||
| const int | istep, | ||
| const int | iter, | ||
| const bool | skip_charge | ||
| ) |
update psi pointer for each k point
template add precondition calculating here
solve eigenvector and eigenvalue for H(k)
| Stochastic_Iter<T, Device> hsolver::HSolverPW_SDFT< T, Device >::stoiter |