ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
td_ekinetic_lcao.h
Go to the documentation of this file.
1#ifndef TDEKINETIC_H
2#define TDEKINETIC_H
3#include "source_base/timer.h"
5#include "source_cell/klist.h"
8#include "operator_lcao.h"
9#include <vector>
10
11
12namespace hamilt
13{
14
15#ifndef __TDEKINETICTEMPLATE
16#define __TDEKINETICTEMPLATE
17
20template <class T>
21class TDEkinetic : public T
22{
23};
24
25#endif
26
32
33template <typename TK, typename TR>
34class TDEkinetic<OperatorLCAO<TK,TR>> : public OperatorLCAO<TK, TR>
35{
36 public:
39 const K_Vectors* kv_in,
40 const UnitCell* ucell_in,
41 const std::vector<double>& orb_cutoff,
42 const Grid_Driver* GridD_in,
43 const TwoCenterIntegrator* intor);
45
46 virtual void contributeHR() override;
47
48 virtual void contributeHk(int ik) override;
49
51 void update_td();
52
58 void initialize_HR(const Grid_Driver* GridD);
59
64 void initialize_HR_tmp();
65
69 void cal_HR_IJR(const int& iat1,
70 const int& iat2,
71 const Parallel_Orbitals* paraV,
73 std::complex<double>* hr_mat_p,
74 std::complex<double>** current_mat_p);
75
81 void calculate_HR();
82
83 virtual void set_HR_fixed(void*) override;
84
85
86 private:
87
88 const UnitCell* ucell = nullptr;
89
90 std::vector<double> orb_cutoff_;
91
92 HContainer<TR>* SR = nullptr;
93
97
98 const Grid_Driver* Grid = nullptr;
99
100 const K_Vectors* kv = nullptr;
101
103 void td_ekinetic_scalar(std::complex<double>* Hloc, const TR& Sloc, int nnr);
104
106 void td_ekinetic_grad(std::complex<double>* Hloc, int nnr, ModuleBase::Vector3<double> grad_overlap);
107
108 const TwoCenterIntegrator* intor_ = nullptr;
109
112
114 std::vector<AdjacentAtomInfo> adjs_all;
115
116 bool hR_tmp_done = false;
117
118 bool allocated = false;
119
120 bool output_hR_done = false;
121};
122
123} // namespace hamilt
124#endif
125
Definition sltk_grid_driver.h:40
Definition klist.h:12
3 elements vector
Definition vector3.h:24
Definition parallel_orbitals.h:9
A class to compute two-center integrals.
Definition two_center_integrator.h:35
Definition unitcell.h:15
Definition hcontainer.h:144
Definition hs_matrix_k.hpp:11
Definition operator_lcao.h:12
std::vector< AdjacentAtomInfo > adjs_all
exact the nearest neighbor atoms from all adjacent atoms
Definition td_ekinetic_lcao.h:114
virtual void set_HR_fixed(void *) override
set_HR_fixed() is used for pass HR_fixed matrix to the next node in sub-chain table not used in base ...
ModuleBase::Vector3< double > cart_At
Store the vector potential for td_ekinetic term.
Definition td_ekinetic_lcao.h:111
std::vector< double > orb_cutoff_
Definition td_ekinetic_lcao.h:90
Definition td_ekinetic_lcao.h:22
#define T
Definition exp.cpp:237
Definition batch.h:6
Definition hamilt.h:13