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"
9#include "operator_lcao.h"
10#include <vector>
11
12
13namespace hamilt
14{
15
16#ifndef __TDEKINETICTEMPLATE
17#define __TDEKINETICTEMPLATE
18
21template <class T>
22class TDEkinetic : public T
23{
24};
25
26#endif
27
33
34template <typename TK, typename TR>
35class TDEkinetic<OperatorLCAO<TK,TR>> : public OperatorLCAO<TK, TR>
36{
37 public:
40 const K_Vectors* kv_in,
41 const UnitCell* ucell_in,
42 const std::vector<double>& orb_cutoff,
43 const Grid_Driver* GridD_in,
44 const TwoCenterIntegrator* intor);
46
47 virtual void contributeHR() override;
48
49 virtual void contributeHk(int ik) override;
50
52 void update_td();
53
59 void initialize_HR(const Grid_Driver* GridD);
60
65 void initialize_HR_tmp();
66
70 void cal_HR_IJR(const int& iat1,
71 const int& iat2,
72 const Parallel_Orbitals* paraV,
74 std::complex<double>* hr_mat_p,
75 std::complex<double>** current_mat_p);
76
82 void calculate_HR();
83
84 virtual void set_HR_fixed(void*) override;
85
86
87 private:
88
89 const UnitCell* ucell = nullptr;
90
91 std::vector<double> orb_cutoff_;
92
93 HContainer<TR>* SR = nullptr;
94
98
99 const Grid_Driver* Grid = nullptr;
100
101 const K_Vectors* kv;
102
104 void td_ekinetic_scalar(std::complex<double>* Hloc, const TR& Sloc, int nnr);
105
107 void td_ekinetic_grad(std::complex<double>* Hloc, int nnr, ModuleBase::Vector3<double> grad_overlap);
108
109 const TwoCenterIntegrator* intor_ = nullptr;
110
113
115 std::vector<AdjacentAtomInfo> adjs_all;
116
117 bool hR_tmp_done = false;
118
119 bool allocated = false;
120
121 bool output_hR_done = false;
122};
123
124} // namespace hamilt
125#endif
126
Definition sltk_grid_driver.h:43
Definition klist.h:13
3 elements vector
Definition vector3.h:22
Definition parallel_orbitals.h:9
A class to compute two-center integrals.
Definition two_center_integrator.h:35
Definition unitcell.h:16
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:115
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 ...
const K_Vectors * kv
Definition td_ekinetic_lcao.h:101
ModuleBase::Vector3< double > cart_At
Store the vector potential for td_ekinetic term.
Definition td_ekinetic_lcao.h:112
std::vector< double > orb_cutoff_
Definition td_ekinetic_lcao.h:91
Definition td_ekinetic_lcao.h:23
#define T
Definition exp.cpp:237
Definition batch.h:6
Definition hamilt.h:12