1#ifndef DIAGOITERASSIST_H
2#define DIAGOITERASSIST_H
12template <
typename T,
typename Device = base_device::DEVICE_CPU>
54 const std::function<
void(
T*,
const int)>& add_to_hcc = [](
T* null,
const int n) {},
55 const std::function<void(
const T*
const,
const int,
const int)>& export_vcc = [](
const T* null,
const int n,
const int m) {});
94 const int dim_subspace,
101 constexpr static const Device*
ctx = {};
125template <
typename T,
typename Device>
128template <
typename T,
typename Device>
131template <
typename T,
typename Device>
134template <
typename T,
typename Device>
137template <
typename T,
typename Device>
140template <
typename T,
typename Device>
143template <
typename T,
typename Device>
146template <
typename T,
typename Device>
149template <
typename T,
typename Device>
std::tuple< const psi::Psi< T, Device > *, const psi::Range, T * > hpsi_info
Definition operator.h:49
Definition diago_iter_assist.h:14
static Real PW_DIAG_THR
Definition diago_iter_assist.h:19
typename GetTypeReal< T >::type Real
Definition diago_iter_assist.h:16
static int PW_DIAG_NMAX
Definition diago_iter_assist.h:20
static Real avg_iter
average steps of last cg diagonalization for each band.
Definition diago_iter_assist.h:26
static void cal_hs_subspace(const hamilt::Hamilt< T, Device > *pHamilt, const psi::Psi< T, Device > &psi, T *hcc, T *scc)
calculate Hamiltonian and overlap matrix in subspace spanned by nstart states psi
Definition diago_iter_assist.cpp:411
static int SCF_ITER
Definition diago_iter_assist.h:29
static T one
Definition diago_iter_assist.h:121
static T zero
Definition diago_iter_assist.h:122
typename hamilt::Operator< T, Device >::hpsi_info hpsi_info
Definition diago_iter_assist.h:103
static void diagH_subspace(const hamilt::Hamilt< T, Device > *const pHamilt, const psi::Psi< T, Device > &psi, psi::Psi< T, Device > &evc, Real *en, int n_band=0)
Definition diago_iter_assist.cpp:21
static void diagH_subspace_init(hamilt::Hamilt< T, Device > *pHamilt, const T *psi, int psi_nr, int psi_nc, psi::Psi< T, Device > &evc, Real *en, const std::function< void(T *, const int)> &add_to_hcc=[](T *null, const int n) {}, const std::function< void(const T *const, const int, const int)> &export_vcc=[](const T *null, const int n, const int m) {})
use LAPACK to diagonalize the Hamiltonian matrix
Definition diago_iter_assist.cpp:148
static void diag_subspace_psi(const T *hcc, const T *scc, const int dim_subspace, psi::Psi< T, Device > &evc, Real *en)
calculate the response wavefunction psi from rotation matrix solved by diagonalization of H and S mat...
Definition diago_iter_assist.cpp:523
static int LCAO_DIAG_NMAX
Definition diago_iter_assist.h:23
static void diag_responce(const T *hcc, const T *scc, const int nbands, const T *mat_in, T *mat_out, int mat_col, Real *en)
calculate the response matrix from rotation matrix solved by diagonalization of H and S matrix
Definition diago_iter_assist.cpp:480
static constexpr const Device * ctx
Definition diago_iter_assist.h:101
static void diagH_LAPACK(const int nstart, const int nbands, const T *hcc, const T *sc, const int ldh, Real *e, T *vcc)
Definition diago_iter_assist.cpp:360
static Real LCAO_DIAG_THR
Definition diago_iter_assist.h:22
static bool need_subspace
Definition diago_iter_assist.h:27
static bool test_exit_cond(const int &ntry, const int ¬conv)
Definition diago_iter_assist.cpp:572
#define T
Definition exp.cpp:237
Definition diag_comm_info.h:9
T type
Definition macros.h:8
Definition memory_op.h:77
Definition memory_op.h:17
Definition memory_op.h:31
Definition memory_op.h:45