ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
td_nonlocal_lcao.h
Go to the documentation of this file.
1#ifndef TDNONLOCAL_H
2#define TDNONLOCAL_H
8
9#include <unordered_map>
10
11namespace hamilt
12{
13
14#ifndef __TD_NONLOCALTEMPLATE
15#define __TD_NONLOCALTEMPLATE
16
19template <class T>
20class TDNonlocal : public T
21{
22};
23
24#endif
25
31template <typename TK, typename TR>
32class TDNonlocal<OperatorLCAO<TK, TR>> : public OperatorLCAO<TK, TR>
33{
34 public:
36 const std::vector<ModuleBase::Vector3<double>>& kvec_d_in,
38 const UnitCell* ucell_in,
39 const LCAO_Orbitals& orb,
40 const Grid_Driver* GridD_in);
42
47 virtual void contributeHR() override;
48 virtual void contributeHk(int ik) override;
49
50 virtual void set_HR_fixed(void*) override;
51
52 private:
53 const UnitCell* ucell = nullptr;
55
56 HContainer<TR>* HR = nullptr;
60 const Grid_Driver* Grid = nullptr;
61
62 bool allocated = false;
63
64 bool hR_tmp_done = false;
65
71 void initialize_HR(const Grid_Driver* GridD_in);
72
79 void update_td();
86
90 void cal_HR_IJR(const int& iat1,
91 const int& iat2,
92 const int& T0,
93 const Parallel_Orbitals* paraV,
94 const std::vector<std::unordered_map<int, std::vector<std::complex<double>>>>& nlm1_all,
95 const std::vector<std::unordered_map<int, std::vector<std::complex<double>>>>& nlm2_all,
96 std::complex<double>* data_pointer,
97 std::complex<double>** data_pointer_c);
98
100 std::vector<AdjacentAtomInfo> adjs_all;
103};
104
105} // namespace hamilt
106#endif
Definition sltk_grid_driver.h:40
Definition ORB_read.h:18
3 elements vector
Definition vector3.h:24
Definition parallel_orbitals.h:9
Definition unitcell.h:15
Definition hcontainer.h:144
Definition hs_matrix_k.hpp:11
Definition operator_lcao.h:12
virtual void contributeHR() override
contributeHR() is used to calculate the HR matrix <phi_{\mu, 0}|beta_p1>D_{p1, p2}<beta_p2|phi_{\nu,...
void initialize_HR_tmp(const Parallel_Orbitals *paraV)
initialize HR_tmp Allocate the memory for HR_tmp with the same size as HR
void initialize_HR(const Grid_Driver *GridD_in)
initialize HR, search the nearest neighbor atoms HContainer is used to store the non-local pseudopote...
void update_td()
init vector potential for td_nonlocal term
const LCAO_Orbitals & orb_
Definition td_nonlocal_lcao.h:54
ModuleBase::Vector3< double > cart_At
Store the vector potential for td_nonlocal term.
Definition td_nonlocal_lcao.h:102
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 calculate_HR()
calculate the non-local pseudopotential matrix with specific <I,J,R> atom-pairs nearest neighbor atom...
std::vector< AdjacentAtomInfo > adjs_all
exact the nearest neighbor atoms from all adjacent atoms
Definition td_nonlocal_lcao.h:100
void cal_HR_IJR(const int &iat1, const int &iat2, const int &T0, const Parallel_Orbitals *paraV, const std::vector< std::unordered_map< int, std::vector< std::complex< double > > > > &nlm1_all, const std::vector< std::unordered_map< int, std::vector< std::complex< double > > > > &nlm2_all, std::complex< double > *data_pointer, std::complex< double > **data_pointer_c)
calculate the HR local matrix of <I,J,R> atom pair
virtual void contributeHk(int ik) override
Definition td_nonlocal_lcao.h:21
#define T
Definition exp.cpp:237
Definition batch.h:6
Definition hamilt.h:13