#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_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_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
◆ 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_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