#include <hsolver_pw.h>
|
| 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
|
|
|
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
|
|
void | build_k_neighbors () |
|
void | propagate_psi (psi::Psi< T, Device > &psi, const int from_ik, const int to_ik) |
|
◆ delmem_complex_op
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ Real
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ resmem_complex_op
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ setmem_complex_op
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ HSolverPW()
template<typename
T , typename Device = base_device::DEVICE_CPU>
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 |
|
) |
| |
|
inline |
◆ build_k_neighbors()
template<typename
T , typename Device >
◆ cal_smooth_ethr()
template<typename
T , typename Device >
void hsolver::HSolverPW< T, Device >::cal_smooth_ethr |
( |
const double & |
wk, |
|
|
const double * |
wg, |
|
|
const double & |
ethr, |
|
|
std::vector< double > & |
ethrs |
|
) |
| |
|
private |
calculate the threshold for iterative-diagonalization for each band
◆ hamiltSolvePsiK()
template<typename
T , typename Device >
Allow 5 tries at most. If ntry > ntry_max = 5, exit diag loop.
In non-self consistent calculation, do until totally converged. Else allow 5 eigenvecs to be NOT converged.
convergence threshold
maximum iterations
dimension of matrix
number of eigenpairs sought
leading dimension of psi
wrap hpsi into lambda function, Matrix \times blockvector
wrap spsi into lambda function, Matrix \times blockvector spsi(X, SX, ld, nvec) ld is leading dimension of psi and spsi
◆ output_iterInfo()
template<typename
T , typename Device >
◆ propagate_psi()
template<typename
T , typename Device >
◆ solve()
template<typename
T , typename Device >
void hsolver::HSolverPW< T, Device >::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
- Parameters
-
pHamilt | interface to hamilt |
psi | reference to psi |
pes | interface to elecstate |
method_in | dav or cg |
skip_charge | |
calculate the contribution of Psi for charge density rho
◆ update_precondition()
template<typename
T , typename Device >
void hsolver::HSolverPW< T, Device >::update_precondition |
( |
std::vector< Real > & |
h_diag, |
|
|
const int |
ik, |
|
|
const int |
npw, |
|
|
const Real |
vl_of_0 |
|
) |
| |
|
protected |
◆ basis_type
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ calculation_type
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ ctx
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ diag_iter_max
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ diag_thr
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ ethr_band
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ k_order
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ k_parent
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ kvecs_c
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ method
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ need_subspace
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ nproc_in_pool
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ nspin
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ rank_in_pool
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ scf_iter
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ use_k_continuity
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ use_paw
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ use_uspp
template<typename
T , typename Device = base_device::DEVICE_CPU>
◆ wfc_basis
template<typename
T , typename Device = base_device::DEVICE_CPU>
The documentation for this class was generated from the following files:
- /home/runner/work/abacus-develop/abacus-develop/source/source_hsolver/hsolver_pw.h
- /home/runner/work/abacus-develop/abacus-develop/source/source_hsolver/hsolver_pw.cpp