#include <diago_dav_subspace.h>
|
using | HPsiFunc = std::function< void(T *, T *, const int, const int)> |
|
|
| Diago_DavSubspace (const std::vector< Real > &precondition_in, const int &nband_in, const int &nbasis_in, const int &david_ndim_in, const double &diag_thr_in, const int &diag_nmax_in, const bool &need_subspace_in, const diag_comm_info &diag_comm_in, const int diago_dav_method_in, const int block_size_in) |
|
| ~Diago_DavSubspace () |
|
int | diag (const HPsiFunc &hpsi_func, const HPsiFunc &spsi_func, T *psi_in, const int psi_in_dmax, Real *eigenvalue_in, const std::vector< double > ðr_band, const bool &scf_type) |
|
|
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 > |
|
using | resmem_real_op = base_device::memory::resize_memory_op< Real, Device > |
|
using | delmem_real_op = base_device::memory::delete_memory_op< Real, Device > |
|
using | setmem_real_op = base_device::memory::set_memory_op< Real, Device > |
|
using | resmem_real_h_op = base_device::memory::resize_memory_op< Real, base_device::DEVICE_CPU > |
|
using | delmem_real_h_op = base_device::memory::delete_memory_op< Real, base_device::DEVICE_CPU > |
|
using | setmem_real_h_op = base_device::memory::set_memory_op< Real, base_device::DEVICE_CPU > |
|
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 | syncmem_complex_op = base_device::memory::synchronize_memory_op< T, Device, Device > |
|
using | castmem_complex_op = base_device::memory::cast_memory_op< std::complex< double >, T, Device, 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 > |
|
|
void | cal_grad (const HPsiFunc &hpsi_func, const HPsiFunc &spsi_func, const int &dim, const int &nbase, const int ¬conv, T *psi_iter, T *hphi, T *spsi, T *vcc, const int *unconv, std::vector< Real > *eigenvalue_iter) |
|
void | cal_elem (const int &dim, int &nbase, const int ¬conv, const T *psi_iter, const T *sphi, const T *hphi, T *hcc, T *scc) |
|
void | refresh (const int &dim, const int &nband, int &nbase, const Real *eigenvalue, T *psi_iter, T *hphi, T *sphi, T *hcc, T *scc, T *vcc) |
|
void | diag_zhegvx (const int &nbase, const int &nband, T *hcc, T *scc, const int &nbase_x, std::vector< Real > *eigenvalue_iter, T *vcc) |
|
int | diag_once (const HPsiFunc &hpsi_func, const HPsiFunc &spsi_func, T *psi_in, const int psi_in_dmax, Real *eigenvalue_in, const std::vector< double > ðr_band) |
|
bool | test_exit_cond (const int &ntry, const int ¬conv, const bool &scf) |
|
◆ castmem_complex_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ delmem_complex_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ delmem_real_h_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ delmem_real_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ HPsiFunc
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ Real
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ resmem_complex_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ resmem_real_h_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ resmem_real_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ setmem_complex_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ setmem_real_h_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ setmem_real_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ syncmem_complex_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ syncmem_d2h_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ syncmem_h2d_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ syncmem_var_d2h_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ syncmem_var_h2d_op
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ Diago_DavSubspace()
template<typename
T , typename Device >
Diago_DavSubspace::Diago_DavSubspace |
( |
const std::vector< Real > & |
precondition_in, |
|
|
const int & |
nband_in, |
|
|
const int & |
nbasis_in, |
|
|
const int & |
david_ndim_in, |
|
|
const double & |
diag_thr_in, |
|
|
const int & |
diag_nmax_in, |
|
|
const bool & |
need_subspace_in, |
|
|
const diag_comm_info & |
diag_comm_in, |
|
|
const int |
diago_dav_method_in, |
|
|
const int |
block_size_in |
|
) |
| |
◆ ~Diago_DavSubspace()
template<typename
T , typename Device >
Diago_DavSubspace::~Diago_DavSubspace |
( |
| ) |
|
◆ cal_elem()
template<typename
T , typename Device >
void Diago_DavSubspace::cal_elem |
( |
const int & |
dim, |
|
|
int & |
nbase, |
|
|
const int & |
notconv, |
|
|
const T * |
psi_iter, |
|
|
const T * |
sphi, |
|
|
const T * |
hphi, |
|
|
T * |
hcc, |
|
|
T * |
scc |
|
) |
| |
|
private |
◆ cal_grad()
template<typename
T , typename Device >
void Diago_DavSubspace::cal_grad |
( |
const HPsiFunc & |
hpsi_func, |
|
|
const HPsiFunc & |
spsi_func, |
|
|
const int & |
dim, |
|
|
const int & |
nbase, |
|
|
const int & |
notconv, |
|
|
T * |
psi_iter, |
|
|
T * |
hphi, |
|
|
T * |
spsi, |
|
|
T * |
vcc, |
|
|
const int * |
unconv, |
|
|
std::vector< Real > * |
eigenvalue_iter |
|
) |
| |
|
private |
◆ diag()
template<typename
T , typename Device >
int Diago_DavSubspace::diag |
( |
const HPsiFunc & |
hpsi_func, |
|
|
const HPsiFunc & |
spsi_func, |
|
|
T * |
psi_in, |
|
|
const int |
psi_in_dmax, |
|
|
Real * |
eigenvalue_in, |
|
|
const std::vector< double > & |
ethr_band, |
|
|
const bool & |
scf_type |
|
) |
| |
record the times of trying iterative diagonalization
◆ diag_once()
template<typename
T , typename Device >
int Diago_DavSubspace::diag_once |
( |
const HPsiFunc & |
hpsi_func, |
|
|
const HPsiFunc & |
spsi_func, |
|
|
T * |
psi_in, |
|
|
const int |
psi_in_dmax, |
|
|
Real * |
eigenvalue_in, |
|
|
const std::vector< double > & |
ethr_band |
|
) |
| |
|
private |
◆ diag_zhegvx()
template<typename
T , typename Device >
void Diago_DavSubspace::diag_zhegvx |
( |
const int & |
nbase, |
|
|
const int & |
nband, |
|
|
T * |
hcc, |
|
|
T * |
scc, |
|
|
const int & |
nbase_x, |
|
|
std::vector< Real > * |
eigenvalue_iter, |
|
|
T * |
vcc |
|
) |
| |
|
private |
◆ refresh()
template<typename
T , typename Device >
void Diago_DavSubspace::refresh |
( |
const int & |
dim, |
|
|
const int & |
nband, |
|
|
int & |
nbase, |
|
|
const Real * |
eigenvalue, |
|
|
T * |
psi_iter, |
|
|
T * |
hphi, |
|
|
T * |
sphi, |
|
|
T * |
hcc, |
|
|
T * |
scc, |
|
|
T * |
vcc |
|
) |
| |
|
private |
◆ test_exit_cond()
template<typename
T , typename Device >
bool Diago_DavSubspace::test_exit_cond |
( |
const int & |
ntry, |
|
|
const int & |
notconv, |
|
|
const bool & |
scf |
|
) |
| |
|
private |
◆ cpu_ctx
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ ctx
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ d_precondition
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ device
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ diag_comm
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ diag_subspace
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ diag_thr
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
the threshold for this electronic iteration
◆ diago_subspace_bs
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ dim
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
the second dimension of the matrix to be diagonalized
◆ hcc
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
Hamiltonian on the reduced basis.
◆ hphi
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
the product of H and psi in the reduced basis set
◆ is_subspace
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
is diagH_subspace needed?
◆ iter_nmax
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ n_band
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
the first dimension of the matrix to be diagonalized
◆ nbase_x
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
the maximum dimension of the reduced basis set
◆ neg_one
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ neg_one_
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ notconv
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
record for how many bands not have convergence eigenvalues
◆ one
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ one_
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ precondition
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ psi_in_iter
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ scc
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
Overlap on the reduced basis.
◆ sphi
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
the product of S and psi in the reduced basis set
◆ vcc
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
Eigenvectors on the reduced basis.
◆ zero
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
◆ zero_
template<typename
T = std::complex<double>, typename Device = base_device::DEVICE_CPU>
The documentation for this class was generated from the following files: