10#include <RI/global/Tensor.h>
11#include <RI/ri/Cell_Nearest.h>
16#ifndef __OPEXXTEMPLATE
17#define __OPEXXTEMPLATE
20class OperatorEXX :
public T
30template <
typename TK,
typename TR>
31class OperatorEXX<OperatorLCAO<TK, TR>> :
public OperatorLCAO<TK, TR>
33 using TAC = std::pair<int, std::array<int, 3>>;
36 OperatorEXX<OperatorLCAO<TK, TR>>(
37 HS_Matrix_K<TK>* hsk_in,
41 std::vector<std::map<int, std::map<TAC, RI::Tensor<double>>>>* Hexxd_in =
nullptr,
42 std::vector<std::map<int, std::map<TAC, RI::Tensor<std::complex<double>>>>>* Hexxc_in =
nullptr,
43 Add_Hexx_Type add_hexx_type_in = Add_Hexx_Type::R,
44 const int istep_in = 0,
45 int* two_level_step_in =
nullptr,
46 const bool restart_in =
false);
48 virtual void contributeHk(
int ik)
override;
49 virtual void contributeHR()
override;
52 Add_Hexx_Type add_hexx_type = Add_Hexx_Type::R;
54 bool HR_fixed_done =
false;
55 bool initial_gga_done =
false;
57 std::vector<std::map<int, std::map<TAC, RI::Tensor<double>>>>* Hexxd =
nullptr;
58 std::vector<std::map<int, std::map<TAC, RI::Tensor<std::complex<double>>>>>* Hexxc =
nullptr;
64 int* two_level_step =
nullptr;
70 void add_loaded_Hexx(
const int ik);
77 RI::Cell_Nearest<int, int, 3, double, 3> cell_nearest;
78 bool use_cell_nearest =
true;
81 std::vector<std::vector<double>> Hexxd_k_load;
82 std::vector<std::vector<std::complex<double>>> Hexxc_k_load;
85using TAC = std::pair<int, std::array<int, 3>>;
87RI::Cell_Nearest<int, int, 3, double, 3> init_cell_nearest(
const UnitCell& ucell,
const std::array<int, 3>& Rs_period);
90template <
typename Tdata,
typename TR>
91void reallocate_hcontainer(
const std::vector<std::map<
int, std::map<
TAC, RI::Tensor<Tdata>>>>& Hexxs,
93 const RI::Cell_Nearest<int, int, 3, double, 3>*
const cell_nearest =
nullptr);
97void reallocate_hcontainer(
const int nat,
99 const std::array<int, 3>& Rs_period,
100 const RI::Cell_Nearest<int, int, 3, double, 3>*
const cell_nearest =
nullptr);
Definition hcontainer.h:144
#define T
Definition exp.cpp:237
Restart restart
Definition restart.cpp:47
int istep
Definition ions_move_basic.cpp:12
std::pair< int, TC > TAC
Definition ri_cv_io_test.cpp:10