ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
td_pot_hybrid.h
Go to the documentation of this file.
1#ifndef TD_POT_HYBRID_H
2#define TD_POT_HYBRID_H
5#include "source_cell/klist.h"
10#include <vector>
14
15namespace hamilt
16{
17
18#ifndef __TD_POT_HYBRIDTEMPLATE
19#define __TD_POT_HYBRIDTEMPLATE
20
26template <class T>
27class TD_pot_hybrid : public T
28{
29};
30
31#endif
32
40template <typename TK, typename TR>
41class TD_pot_hybrid<OperatorLCAO<TK, TR>> : public OperatorLCAO<TK, TR>
42{
43 public:
48 const K_Vectors* kv_in,
49 HContainer<TR>* hR_in,
50 HContainer<TR>* SR_in,
51 const LCAO_Orbitals& orb,
52 const UnitCell* ucell_in,
53 const std::vector<double>& orb_cutoff,
54 const Grid_Driver* GridD_in,
55 const TwoCenterIntegrator* intor);
56
61
66 virtual void contributeHR() override;
67 //ETD
68 virtual void contributeHk(int ik) override;
69 //ETD
70
71 virtual void set_HR_fixed(void*) override;
72
73
74 private:
75 const UnitCell* ucell = nullptr;
76 std::vector<double> orb_cutoff_;
78
79 hamilt::HContainer<TR>* HR_fixed = nullptr;
80
82
83 const TwoCenterIntegrator* intor_ = nullptr;
84
85 bool allocated = false;
86
87 bool HR_fixed_done = false;
88 //tddft part
90 //ETD
91 //std::vector<std::complex<double>> hk_hybrid;
92 //ETD
96
97
103 void initialize_HR(const Grid_Driver* GridD_in);
104
105 void init_td();
106 void update_td();
107
113
117 void cal_HR_IJR(const int& iat1,
118 const int& iat2,
119 const Parallel_Orbitals* paraV,
120 const ModuleBase::Vector3<double>& dtau,
121 TR* hr_mat_p,
122 TR* sr_p);
123
125 std::vector<AdjacentAtomInfo> adjs_all;
126};
127
128} // namespace hamilt
129#endif
Definition sltk_grid_driver.h:43
Definition klist.h:13
Definition ORB_read.h:19
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 cal_r_overlap_R.h:25
Definition hcontainer.h:144
Definition hs_matrix_k.hpp:11
Definition operator_lcao.h:12
static cal_r_overlap_R r_calculator
Definition td_pot_hybrid.h:89
std::vector< double > orb_cutoff_
Definition td_pot_hybrid.h:76
void cal_HR_IJR(const int &iat1, const int &iat2, const Parallel_Orbitals *paraV, const ModuleBase::Vector3< double > &dtau, TR *hr_mat_p, TR *sr_p)
calculate the HR local matrix of <I,J,R> atom pair
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 ...
void initialize_HR(const Grid_Driver *GridD_in)
initialize HR, search the nearest neighbor atoms HContainer is used to store the electronic kinetic m...
ModuleBase::Vector3< double > cart_At
Store the vector potential for td_ekinetic term.
Definition td_pot_hybrid.h:94
ModuleBase::Vector3< double > Et
Definition td_pot_hybrid.h:95
virtual void contributeHk(int ik) override
void calculate_HR()
calculate the electronic kinetic matrix with specific <I,J,R> atom-pairs use the adjs_all to calculat...
const LCAO_Orbitals & orb_
Definition td_pot_hybrid.h:77
virtual void contributeHR() override
contributeHR() is used to calculate the HR matrix <phi_{\mu, 0}|-\Nabla^2|phi_{\nu,...
std::vector< AdjacentAtomInfo > adjs_all
exact the nearest neighbor atoms from all adjacent atoms
Definition td_pot_hybrid.h:125
Definition td_pot_hybrid.h:28
#define T
Definition exp.cpp:237
Definition hamilt.h:12