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) |
![]() | |
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 > |
![]() | |
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 | |
![]() | |
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 () |
![]() | |
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 |