ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
ekinetic_new.h
Go to the documentation of this file.
1#ifndef EKINETICNEW_H
2#define EKINETICNEW_H
9#include <vector>
10
11namespace hamilt
12{
13
14#ifndef __EKINETICNEWTEMPLATE
15#define __EKINETICNEWTEMPLATE
16
22template <class T>
23class EkineticNew : public T
24{
25};
26
27#endif
28
36template <typename TK, typename TR>
37class EkineticNew<OperatorLCAO<TK, TR>> : public OperatorLCAO<TK, TR>
38{
39 public:
44 const std::vector<ModuleBase::Vector3<double>>& kvec_d_in,
45 HContainer<TR>* hR_in,
46 const UnitCell* ucell_in,
47 const std::vector<double>& orb_cutoff,
48 const Grid_Driver* GridD_in,
49 const TwoCenterIntegrator* intor);
50
55
60 virtual void contributeHR() override;
61
62 virtual void set_HR_fixed(void*) override;
63
64 private:
65 const UnitCell* ucell = nullptr;
66 std::vector<double> orb_cutoff_;
67
68 hamilt::HContainer<TR>* HR_fixed = nullptr;
69
70 const TwoCenterIntegrator* intor_ = nullptr;
71
72 bool allocated = false;
73
74 bool HR_fixed_done = false;
75
81 void initialize_HR(const Grid_Driver* GridD_in);
82
88
92 void cal_HR_IJR(const int& iat1,
93 const int& iat2,
94 const Parallel_Orbitals* paraV,
96 TR* data_pointer);
97
99 std::vector<AdjacentAtomInfo> adjs_all;
100};
101
102} // namespace hamilt
103#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
std::vector< AdjacentAtomInfo > adjs_all
exact the nearest neighbor atoms from all adjacent atoms
Definition ekinetic_new.h:99
std::vector< double > orb_cutoff_
Definition ekinetic_new.h:66
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 cal_HR_IJR(const int &iat1, const int &iat2, const Parallel_Orbitals *paraV, const ModuleBase::Vector3< double > &dtau, TR *data_pointer)
calculate the HR local matrix of <I,J,R> atom pair
void initialize_HR(const Grid_Driver *GridD_in)
initialize HR, search the nearest neighbor atoms HContainer is used to store the electronic kinetic m...
virtual void contributeHR() override
contributeHR() is used to calculate the HR matrix <phi_{\mu, 0}|-\Nabla^2|phi_{\nu,...
void calculate_HR()
calculate the electronic kinetic matrix with specific <I,J,R> atom-pairs use the adjs_all to calculat...
Definition ekinetic_new.h:24
Definition hcontainer.h:144
Definition hs_matrix_k.hpp:11
Definition operator_lcao.h:12
#define T
Definition exp.cpp:237
Definition hamilt.h:12