1#ifndef MODULE_HSOLVER_DIAGO_CG_H_
2#define MODULE_HSOLVER_DIAGO_CG_H_
14template <
typename T,
typename Device = base_device::DEVICE_CPU>
28 DiagoCG(
const std::string& basis_type,
const std::string& calculation);
30 const std::string& basis_type,
31 const std::string& calculation,
32 const bool& need_subspace,
33 const Func& subspace_func,
34 const Real& pw_diag_thr,
35 const int& pw_diag_nmax,
44 const Func& spsi_func,
47 const std::vector<double>& ethr_band,
111 const double& ethreshold,
125 const std::vector<double>& ethr_band);
A multi-dimensional array of elements of a single data type.
Definition tensor.h:32
bool need_subspace_
Definition diago_cg.h:73
Real pw_diag_thr_
threshold for cg diagonalization
Definition diago_cg.h:63
typename ct::PsiToContainer< Device >::type ct_Device
Definition diago_cg.h:22
void calc_grad(const ct::Tensor &prec, ct::Tensor &grad, ct::Tensor &hphi, ct::Tensor &sphi, ct::Tensor &pphi)
Definition diago_cg.cpp:215
void schmit_orth(const int &m, const ct::Tensor &psi, const ct::Tensor &sphi, ct::Tensor &phi_m)
Definition diago_cg.cpp:476
std::function< void(const ct::Tensor &, ct::Tensor &)> spsi_func_
A function object that performs the sPsi calculation.
Definition diago_cg.h:77
std::function< void(const ct::Tensor &, ct::Tensor &)> hpsi_func_
A function object that performs the hPsi calculation.
Definition diago_cg.h:75
std::function< void(const ct::Tensor &, ct::Tensor &)> Func
Definition diago_cg.h:24
int avg_iter_
average iteration steps for cg diagonalization
Definition diago_cg.h:61
int pw_diag_nmax_
maximum iteration steps for cg diagonalization
Definition diago_cg.h:65
typename GetTypeReal< T >::type Real
Definition diago_cg.h:21
const T * one_
Definition diago_cg.h:130
bool test_exit_cond(const int &ntry, const int ¬conv) const
Definition diago_cg.cpp:564
const T * neg_one_
Definition diago_cg.h:130
int n_basis_
col size for input psi matrix
Definition diago_cg.h:59
~DiagoCG()
Definition diago_cg.cpp:49
int n_band_
Definition diago_cg.h:57
void calc_gamma_cg(const int &iter, const Real &cg_norm, const Real &theta, const ct::Tensor &prec, const ct::Tensor &scg, const ct::Tensor &grad, const ct::Tensor &phi_m, Real &gg_last, ct::Tensor &g0, ct::Tensor &cg)
Definition diago_cg.cpp:310
std::function< void(const ct::Tensor &, ct::Tensor &)> subspace_func_
A function object that performs the subspace calculation.
Definition diago_cg.h:79
std::string calculation_
calculation type of ABACUS
Definition diago_cg.h:71
void diag(const Func &hpsi_func, const Func &spsi_func, ct::Tensor &psi, ct::Tensor &eigen, const std::vector< double > ðr_band, const ct::Tensor &prec={})
Definition diago_cg.cpp:578
int notconv_
Definition diago_cg.h:54
std::string basis_type_
basis_type of psi
Definition diago_cg.h:69
Device * ctx_
Definition diago_cg.h:51
void diag_mock(const ct::Tensor &prec, ct::Tensor &psi, ct::Tensor &eigen, const std::vector< double > ðr_band)
Definition diago_cg.cpp:57
void orth_grad(const ct::Tensor &psi, const int &m, ct::Tensor &grad, ct::Tensor &scg, ct::Tensor &lagrange)
Definition diago_cg.cpp:260
const T * zero_
Definition diago_cg.h:130
bool update_psi(const ct::Tensor &pphi, const ct::Tensor &cg, const ct::Tensor &scg, const double ðreshold, Real &cg_norm, Real &theta, Real &eigen, ct::Tensor &phi_m, ct::Tensor &sphi, ct::Tensor &hphi)
Definition diago_cg.cpp:392
int nproc_in_pool_
number of processors in a node
Definition diago_cg.h:67
#define T
Definition exp.cpp:237
Definition diag_comm_info.h:9
T type
Definition macros.h:8
Definition math_kernel_op.h:168
Definition tensor_types.h:113
This file contains the definition of the DataType enum class.
int nproc_in_pool
Definition pw_test.cpp:12