ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
overlap_new.h
Go to the documentation of this file.
1#ifndef W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_OPERATOR_LCAO_OVERLAP_NEW_H
2#define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_LCAO_HAMILT_LCAODFT_OPERATOR_LCAO_OVERLAP_NEW_H
9#include <vector>
10
11namespace hamilt
12{
13
14#ifndef __OVERLAPNEWTEMPLATE
15#define __OVERLAPNEWTEMPLATE
16
22template <class T>
23class OverlapNew : public T
24{
25};
26
27#endif
28
36template <typename TK, typename TR>
37class OverlapNew<OperatorLCAO<TK, TR>> : public OperatorLCAO<TK, TR>
38{
39 public:
41 const std::vector<ModuleBase::Vector3<double>>& kvec_d_in,
44 const UnitCell* ucell_in,
45 const std::vector<double>& orb_cutoff,
46 const Grid_Driver* GridD_in,
47 const TwoCenterIntegrator* intor);
48
49 virtual void contributeHR() override;
50
51 virtual void contributeHk(int ik) override;
52
53 TK* getSk();
54
55 private:
56 const UnitCell* ucell = nullptr;
57
58 std::vector<double> orb_cutoff_;
59
61
62 const TwoCenterIntegrator* intor_ = nullptr;
63
64 bool SR_fixed_done = false;
65
71 void initialize_SR(const Grid_Driver* GridD_in);
72
79
83 void cal_SR_IJR(const int& iat1,
84 const int& iat2,
85 const Parallel_Orbitals* paraV,
87 TR* data_pointer);
88
89 // if k vector is not changed, then do nothing and return
90 // default of kvec_d_old is (-10,-10,-10), which is not a valid k vector
92};
93
94} // namespace hamilt
95#endif
Definition sltk_grid_driver.h:43
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
virtual void contributeHk(int ik) override
std::vector< double > orb_cutoff_
Definition overlap_new.h:58
void calculate_SR()
calculate the overlap matrix with specific <I,J,R> atom-pairs nearest neighbor atoms don't need to be...
void cal_SR_IJR(const int &iat1, const int &iat2, const Parallel_Orbitals *paraV, const ModuleBase::Vector3< double > &dtau, TR *data_pointer)
calculate the SR local matrix of <I,J,R> atom pair
void initialize_SR(const Grid_Driver *GridD_in)
initialize SR, search the nearest neighbor atoms HContainer is used to store the overlap matrix with ...
Definition overlap_new.h:24
#define T
Definition exp.cpp:237
Definition hamilt.h:12