ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <hamilt_sdft_pw.h>
Public Types | |
using | Real = typename GetTypeReal< T >::type |
Public Member Functions | |
HamiltSdftPW (elecstate::Potential *pot_in, ModulePW::PW_Basis_K *wfc_basis, K_Vectors *p_kv, pseudopot_cell_vnl *nlpp, const UnitCell *ucell, const int &npol, Real *emin_in, Real *emax_in) | |
Construct a new HamiltSdftPW object. | |
~HamiltSdftPW () | |
Destroy the HamiltSdftPW object. | |
void | hPsi (const T *psi_in, T *hpsi, const int &nbands=1) |
Calculate \hat{H}|psi> | |
void | hPsi_norm (const T *psi_in, T *hpsi, const int &nbands=1) |
Calculate \hat{H}|psi> and normalize it. | |
![]() | |
HamiltPW (elecstate::Potential *pot_in, ModulePW::PW_Basis_K *wfc_basis, K_Vectors *p_kv, pseudopot_cell_vnl *nlpp, const UnitCell *ucell) | |
template<typename T_in , typename Device_in = Device> | |
HamiltPW (const HamiltPW< T_in, Device_in > *hamilt) | |
~HamiltPW () | |
void | updateHk (const int ik) override |
for target K point, update consequence of hPsi() and matrix() | |
void | sPsi (const T *psi_in, T *spsi, const int nrow, const int npw, const int nbands) const override |
void | set_exx_helper (Exx_Helper< T, Device > &exx_helper_in) |
void | sPsi (const double *psi_in, double *spsi, const int nrow, const int npw, const int nbands) const |
void | sPsi (const std::complex< double > *psi_in, std::complex< double > *spsi, const int nrow, const int npw, const int nbands) const |
void | sPsi (const std::complex< float > *psi_in, std::complex< float > *spsi, const int nrow, const int npw, const int nbands) const |
void | updateHk (const int ik) |
for target K point, update consequence of hPsi() and matrix() | |
HamiltPW (elecstate::Potential *pot_in, ModulePW::PW_Basis_K *wfc_basis, K_Vectors *pkv, pseudopot_cell_vnl *, const UnitCell *) | |
~HamiltPW () | |
void | updateHk (const int ik) |
for target K point, update consequence of hPsi() and matrix() | |
HamiltPW (elecstate::Potential *pot_in, ModulePW::PW_Basis_K *wfc_basis, K_Vectors *pkv, pseudopot_cell_vnl *, const UnitCell *) | |
~HamiltPW () | |
void | updateHk (const int ik) |
for target K point, update consequence of hPsi() and matrix() | |
HamiltPW (elecstate::Potential *pot_in, ModulePW::PW_Basis_K *wfc_basis, K_Vectors *pkv, pseudopot_cell_vnl *, const UnitCell *) | |
~HamiltPW () | |
![]() | |
virtual | ~Hamilt () |
virtual void | refresh (void) |
refresh status of Hamiltonian, for example, refresh H(R) and S(R) in LCAO case | |
virtual void | hPsi (const T *psi_in, T *hpsi, const size_t size) const |
core function: for solving eigenvalues of Hamiltonian with iterative method | |
virtual void | matrix (MatrixBlock< std::complex< double > > &hk_in, MatrixBlock< std::complex< double > > &sk_in) |
core function: return H(k) and S(k) matrixs for direct solving eigenvalues. | |
virtual void | matrix (MatrixBlock< double > &hk_in, MatrixBlock< double > &sk_in) |
virtual std::vector< T > | matrix () |
Public Attributes | |
Real * | emin = nullptr |
Emin of the Hamiltonian. | |
Real * | emax = nullptr |
Emax of the Hamiltonian. | |
![]() | |
std::string | classname = "none" |
int | non_first_scf =0 |
Operator< T, Device > * | ops = nullptr |
first node operator, add operations from each operators | |
Private Attributes | |
int | npwk_max = 0 |
maximum number of plane waves | |
int | npol = 0 |
number of polarizations | |
std::vector< int > & | ngk |
number of G vectors | |
Additional Inherited Members | |
![]() | |
using | gemv_op = ModuleBase::gemv_op< T, Device > |
using | gemm_op = ModuleBase::gemm_op< T, Device > |
using | setmem_complex_op = base_device::memory::set_memory_op< T, Device > |
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 | syncmem_op = base_device::memory::synchronize_memory_op< T, Device, Device > |
![]() | |
using | syncmem_op = base_device::memory::synchronize_memory_op< T, Device, Device > |
![]() | |
const pseudopot_cell_vnl * | ppcell = nullptr |
const UnitCell *const | ucell = nullptr |
T * | vkb = nullptr |
Real * | qq_nt = nullptr |
T * | qq_so = nullptr |
Device * | ctx = {} |
![]() | |
Device * | ctx = {} |
using hamilt::HamiltSdftPW< T, Device >::Real = typename GetTypeReal<T>::type |
hamilt::HamiltSdftPW< T, Device >::HamiltSdftPW | ( | elecstate::Potential * | pot_in, |
ModulePW::PW_Basis_K * | wfc_basis, | ||
K_Vectors * | p_kv, | ||
pseudopot_cell_vnl * | nlpp, | ||
const UnitCell * | ucell, | ||
const int & | npol, | ||
Real * | emin_in, | ||
Real * | emax_in | ||
) |
Construct a new HamiltSdftPW object.
pot_in | potential |
wfc_basis | pw basis for wave functions |
p_kv | k vectors |
npol | the length of wave function is npol * npwk_max |
emin_in | Emin of the Hamiltonian |
emax_in | Emax of the Hamiltonian |
|
inline |
Destroy the HamiltSdftPW object.
void hamilt::HamiltSdftPW< T, Device >::hPsi | ( | const T * | psi_in, |
T * | hpsi, | ||
const int & | nbands = 1 |
||
) |
Calculate \hat{H}|psi>
psi_in | input wave function |
hpsi | output wave function |
nbands | number of bands |
void hamilt::HamiltSdftPW< T, Device >::hPsi_norm | ( | const T * | psi_in, |
T * | hpsi, | ||
const int & | nbands = 1 |
||
) |
Calculate \hat{H}|psi> and normalize it.
psi_in | input wave function |
hpsi | output wave function |
nbands | number of bands |
Real* hamilt::HamiltSdftPW< T, Device >::emax = nullptr |
Emax of the Hamiltonian.
Real* hamilt::HamiltSdftPW< T, Device >::emin = nullptr |
Emin of the Hamiltonian.
|
private |
number of G vectors
|
private |
number of polarizations
|
private |
maximum number of plane waves