ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
|
#include <sto_elecond.h>
Public Types | |
using | lowTYPE = double |
using | lcomplex = std::complex< lowTYPE > |
using | resmem_lcomplex_op = base_device::memory::resize_memory_op< std::complex< lowTYPE >, Device > |
using | delmem_lcomplex_op = base_device::memory::delete_memory_op< std::complex< lowTYPE >, Device > |
using | cpymem_lcomplex_op = base_device::memory::synchronize_memory_op< std::complex< lowTYPE >, Device, Device > |
using | castmem_lcomplex_op = base_device::memory::cast_memory_op< std::complex< lowTYPE >, std::complex< FPTYPE >, Device, Device > |
using | cpymem_complex_op = base_device::memory::synchronize_memory_op< std::complex< FPTYPE >, Device, Device > |
Public Member Functions | |
Sto_EleCond (UnitCell *p_ucell_in, K_Vectors *p_kv_in, elecstate::ElecState *p_elec_in, ModulePW::PW_Basis_K *p_wfcpw_in, psi::Psi< std::complex< FPTYPE >, Device > *p_psi_in, pseudopot_cell_vnl *p_ppcell_in, hamilt::Hamilt< std::complex< FPTYPE >, Device > *p_hamilt_in, StoChe< FPTYPE, Device > &stoche, Stochastic_WF< std::complex< FPTYPE >, Device > *p_stowf_in) | |
~Sto_EleCond () | |
void | decide_nche (const FPTYPE dt, const FPTYPE cond_thr, const int &fd_nche, FPTYPE try_emin, FPTYPE try_emax) |
Set the N order of Chebyshev expansion for conductivities It will change class member : fd_nche, cond_nche. | |
void | sKG (const int &smear_type, const double &fwhmin, const double &wcut, const double &dw_in, const double &dt_in, const bool &nonlocal, const int &npart_sto) |
calculate Stochastic Kubo-Greenwood | |
Protected Member Functions | |
void | cal_jmatrix (hamilt::HamiltSdftPW< std::complex< lowTYPE >, Device > *hamilt, const psi::Psi< std::complex< lowTYPE >, Device > &kspsi_all, const psi::Psi< std::complex< lowTYPE >, Device > &vkspsi, const double *en, const double *en_all, std::complex< FPTYPE > *leftfact, std::complex< FPTYPE > *rightfact, psi::Psi< std::complex< lowTYPE >, Device > &leftchi, psi::Psi< std::complex< lowTYPE >, Device > &rightchi, psi::Psi< std::complex< lowTYPE >, Device > &left_hchi, psi::Psi< std::complex< lowTYPE >, Device > &right_hchi, psi::Psi< std::complex< lowTYPE >, Device > &batch_vchi, psi::Psi< std::complex< lowTYPE >, Device > &batch_vhchi, psi::Psi< std::complex< lowTYPE >, Device > &chi_all, psi::Psi< std::complex< lowTYPE >, Device > &hchi_all, void *gatherinfo_ks, void *gatherinfo_sto, const int &bsize_psi, std::complex< lowTYPE > *j1, std::complex< lowTYPE > *j2, std::complex< lowTYPE > *tmpj, hamilt::Velocity< lowTYPE, Device > &velop, const int &ik, const std::complex< lowTYPE > &factor, const int bandinfo[6]) |
calculate Jmatrix <leftv|J|rightv> | |
![]() | |
void | jjresponse_ks (const int ik, const int nt, const double dt, const double decut, ModuleBase::matrix &wg, hamilt::Velocity< FPTYPE, Device > &velop, double *ct11, double *ct12, double *ct22) |
calculate the response function Cmn(t) for currents | |
void | calcondw (const int nt, const double dt, const int &smear_type, const double fwhmin, const double wcut, const double dw_in, double *ct11, double *ct12, double *ct22) |
Calculate the conductivity using the response function. | |
EleCond (UnitCell *p_ucell_in, K_Vectors *p_kv_in, elecstate::ElecState *p_elec_in, ModulePW::PW_Basis_K *p_wfcpw_in, psi::Psi< std::complex< FPTYPE >, Device > *p_psi_in, pseudopot_cell_vnl *p_ppcell_in) | |
~EleCond () | |
void | KG (const int &smear_type, const double &fwhmin, const double &wcut, const double &dw_in, const double &dt_in, const bool &nonlocal, ModuleBase::matrix &wg) |
calculate Onsager coefficients Lmn(\omega) and conductivities with Kubo-Greenwood formula | |
Protected Attributes | |
int | nbands_ks = 0 |
number of KS bands | |
int | nbands_sto = 0 |
number of stochastic bands | |
int | cond_nche = 0 |
number of Chebyshev orders for conductivities | |
int | fd_nche = 0 |
number of Chebyshev orders for Fermi-Dirac function | |
int | cond_dtbatch = 0 |
number of time steps in a batch | |
hamilt::Hamilt< std::complex< FPTYPE >, Device > * | p_hamilt = nullptr |
pointer to the Hamiltonian | |
Stochastic_WF< std::complex< FPTYPE >, Device > * | p_stowf = nullptr |
pointer to the stochastic wavefunctions | |
Sto_Func< FPTYPE > | stofunc |
functions | |
hamilt::HamiltSdftPW< std::complex< FPTYPE >, Device > * | p_hamilt_sto = nullptr |
pointer to the Hamiltonian for sDFT | |
hamilt::HamiltSdftPW< std::complex< lowTYPE >, Device > * | hamilt_sto_ = nullptr |
pointer to the Hamiltonian for sDFT | |
lowTYPE | low_emin_ = 0 |
Emin of the Hamiltonian for sDFT. | |
lowTYPE | low_emax_ = 0 |
Emax of the Hamiltonian for sDFT. | |
![]() | |
pseudopot_cell_vnl * | p_ppcell = nullptr |
pointer to the pseudopotential | |
UnitCell * | p_ucell = nullptr |
pointer to the unit cell | |
ModulePW::PW_Basis_K * | p_wfcpw = nullptr |
pointer to the plane wave basis | |
K_Vectors * | p_kv = nullptr |
pointer to the k vectors | |
elecstate::ElecState * | p_elec = nullptr |
pointer to the electronic state | |
psi::Psi< std::complex< FPTYPE >, Device > * | p_psi = nullptr |
pointer to the wavefunction | |
Additional Inherited Members | |
![]() | |
using | resmem_complex_op = base_device::memory::resize_memory_op< std::complex< FPTYPE >, Device > |
using | delmem_complex_op = base_device::memory::delete_memory_op< std::complex< FPTYPE >, Device > |
using | syncmem_complex_d2h_op = base_device::memory::synchronize_memory_op< std::complex< FPTYPE >, base_device::DEVICE_CPU, Device > |
using Sto_EleCond< FPTYPE, Device >::castmem_lcomplex_op = base_device::memory::cast_memory_op<std::complex<lowTYPE>, std::complex<FPTYPE>, Device, Device> |
using Sto_EleCond< FPTYPE, Device >::cpymem_complex_op = base_device::memory::synchronize_memory_op<std::complex<FPTYPE>, Device, Device> |
using Sto_EleCond< FPTYPE, Device >::cpymem_lcomplex_op = base_device::memory::synchronize_memory_op<std::complex<lowTYPE>, Device, Device> |
using Sto_EleCond< FPTYPE, Device >::delmem_lcomplex_op = base_device::memory::delete_memory_op<std::complex<lowTYPE>, Device> |
using Sto_EleCond< FPTYPE, Device >::lcomplex = std::complex<lowTYPE> |
using Sto_EleCond< FPTYPE, Device >::lowTYPE = double |
using Sto_EleCond< FPTYPE, Device >::resmem_lcomplex_op = base_device::memory::resize_memory_op<std::complex<lowTYPE>, Device> |
Sto_EleCond< FPTYPE, Device >::Sto_EleCond | ( | UnitCell * | p_ucell_in, |
K_Vectors * | p_kv_in, | ||
elecstate::ElecState * | p_elec_in, | ||
ModulePW::PW_Basis_K * | p_wfcpw_in, | ||
psi::Psi< std::complex< FPTYPE >, Device > * | p_psi_in, | ||
pseudopot_cell_vnl * | p_ppcell_in, | ||
hamilt::Hamilt< std::complex< FPTYPE >, Device > * | p_hamilt_in, | ||
StoChe< FPTYPE, Device > & | stoche, | ||
Stochastic_WF< std::complex< FPTYPE >, Device > * | p_stowf_in | ||
) |
|
inline |
|
protected |
calculate Jmatrix <leftv|J|rightv>
void Sto_EleCond< FPTYPE, Device >::decide_nche | ( | const FPTYPE | dt, |
const FPTYPE | cond_thr, | ||
const int & | fd_nche, | ||
FPTYPE | try_emin, | ||
FPTYPE | try_emax | ||
) |
Set the N order of Chebyshev expansion for conductivities It will change class member : fd_nche, cond_nche.
dt | t step |
nbatch | number of t batch |
cond_thr | threshold of errors for conductivities |
fd_nche | N order of Chebyshev for Fermi-Dirac function |
try_emin | trial Emin |
try_emax | trial Emax |
void Sto_EleCond< FPTYPE, Device >::sKG | ( | const int & | smear_type, |
const double & | fwhmin, | ||
const double & | wcut, | ||
const double & | dw_in, | ||
const double & | dt_in, | ||
const bool & | nonlocal, | ||
const int & | npart_sto | ||
) |
calculate Stochastic Kubo-Greenwood
fwhmin | FWHM |
smear_type | 1: Gaussian, 2: Lorentzian |
wcut | cutoff omega |
dw_in | omega step |
dt_in | t step |
nonlocal | whether to include the nonlocal potential corrections for velocity operator |
nbatch | t step batch |
npart_sto | number stochastic wavefunctions parts to evalution simultaneously |
|
protected |
number of time steps in a batch
|
protected |
number of Chebyshev orders for conductivities
|
protected |
number of Chebyshev orders for Fermi-Dirac function
|
protected |
pointer to the Hamiltonian for sDFT
|
protected |
Emax of the Hamiltonian for sDFT.
|
protected |
Emin of the Hamiltonian for sDFT.
|
protected |
number of KS bands
|
protected |
number of stochastic bands
|
protected |
pointer to the Hamiltonian
|
protected |
pointer to the Hamiltonian for sDFT
|
protected |
pointer to the stochastic wavefunctions
|
protected |
functions