ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
veff_lcao.h
Go to the documentation of this file.
1#ifndef VEFFLCAO_H
2#define VEFFLCAO_H
3#include "source_base/timer.h"
5#include "operator_lcao.h"
8#include <vector>
9
10namespace hamilt
11{
12
13#ifndef __VEFFTEMPLATE
14#define __VEFFTEMPLATE
15
16template <class T>
17class Veff : public T
18{
19};
20
21#endif
22
28template <typename TK, typename TR>
29class Veff<OperatorLCAO<TK, TR>> : public OperatorLCAO<TK, TR>
30{
31 public:
36 const std::vector<ModuleBase::Vector3<double>>& kvec_d_in,
39 const UnitCell* ucell_in,
40 const std::vector<double>& orb_cutoff,
41 const Grid_Driver* GridD_in,
42 const int& nspin)
43 : orb_cutoff_(orb_cutoff), pot(pot_in), ucell(ucell_in),
44 gd(GridD_in), OperatorLCAO<TK, TR>(hsk_in, kvec_d_in, hR_in)
45 {
46 this->cal_type = calculation_type::lcao_gint;
47
48 this->initialize_HR(ucell_in, GridD_in);
49 }
50
52
59 virtual void contributeHR() override;
60
63
64private:
65
66 std::vector<double> orb_cutoff_;
67
68 // Charge calculating method in LCAO base and contained grid base calculation: DM_R, DM, pvpR_reduced
69
70 elecstate::Potential* pot = nullptr;
71
72 int nspin = 1;
73
79 void initialize_HR(const UnitCell* ucell_in, const Grid_Driver* GridD_in);
80};
81
82} // namespace hamilt
83#endif
Definition sltk_grid_driver.h:43
Definition unitcell.h:17
Definition potential_new.h:49
Definition hcontainer.h:144
Definition hs_matrix_k.hpp:11
Definition operator_lcao.h:12
const Grid_Driver * gd
Definition veff_lcao.h:62
const UnitCell * ucell
Definition veff_lcao.h:61
virtual void contributeHR() override
contributeHR() is used to calculate the HR matrix <phi_{\mu, 0}|V_{eff}|phi_{\nu, R}> the contributio...
std::vector< double > orb_cutoff_
Definition veff_lcao.h:66
Definition veff_lcao.h:18
#define T
Definition exp.cpp:237
Definition hamilt.h:12