14template <
typename T,
typename Device = base_device::DEVICE_CPU>
30 const size_t size)
const
35 virtual void sPsi(
const T* psi_in,
42 syncmem_op()(spsi, psi_in,
static_cast<size_t>(nbands * nrow));
54 virtual std::vector<T>
matrix() {
return std::vector<T>(); }
virtual void hPsi(const T *psi_in, T *hpsi, const size_t size) const
core function: for solving eigenvalues of Hamiltonian with iterative method
Definition hamilt.h:27
virtual void sPsi(const T *psi_in, T *spsi, const int nrow, const int npw, const int nbands) const
Definition hamilt.h:35
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.
Definition hamilt.h:46
virtual std::vector< T > matrix()
Definition hamilt.h:54
Operator< T, Device > * ops
first node operator, add operations from each operators
Definition hamilt.h:61
virtual void matrix(MatrixBlock< double > &hk_in, MatrixBlock< double > &sk_in)
Definition hamilt.h:50
virtual void updateHk(const int ik)
for target K point, update consequence of hPsi() and matrix()
Definition hamilt.h:21
base_device::memory::synchronize_memory_op< T, Device, Device > syncmem_op
Definition hamilt.h:66
std::string classname
Definition hamilt.h:56
Device * ctx
Definition hamilt.h:65
int non_first_scf
Definition hamilt.h:58
virtual ~Hamilt()
Definition hamilt.h:18
virtual void refresh(void)
refresh status of Hamiltonian, for example, refresh H(R) and S(R) in LCAO case
Definition hamilt.h:24
#define T
Definition exp.cpp:237
Definition memory_op.h:45
Definition matrixblock.h:9