14#include <RI/physics/Exx.h>
26 template<
typename T,
typename Tdata>
29 template<
typename T,
typename Tdata>
34 template<
typename T,
typename TR>
41template<
typename Tdata>
48 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>
abfs_ccp;
51template<
typename Tdata>
57 static constexpr std::size_t
Ndim = 3;
58 using TC = std::array<Tcell,Ndim>;
59 using TAC = std::pair<TA,TC>;
60 using TatomR = std::array<double,Ndim>;
68 const MPI_Comm &mpi_comm_in,
73 const MPI_Comm &mpi_comm_in,
77 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& abfs_in);
86 const std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>& abfs_in);
89 std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& Vs_cut_IJR,
90 std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& Cs,
92 const bool write_cv =
false);
94 std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& Vs_full_IJR,
95 std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& Cs,
97 const bool write_cv =
false);
99 const std::vector<std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>>& Ds,
110 std::vector< std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>>
Hexxs;
120 std::shared_ptr<ORB_gaunt_table>
MGT;
123 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>
lcaos;
124 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>
abfs;
126 std::map<Conv_Coulomb_Pot_K::Coulomb_Method, Exx_Obj<Tdata>>
exx_objs;
137 friend class RPA_LRI<double, Tdata>;
147#include "Exx_LRI.hpp"
Definition Exx_LRI_interface.h:35
ModuleBase::matrix stress_exx
Definition Exx_LRI.h:113
void post_process_Hexx(std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Hexxs_io) const
Definition Exx_LRI.hpp:965
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > lcaos
Definition Exx_LRI.h:123
std::map< Conv_Coulomb_Pot_K::Coulomb_Method, std::pair< bool, std::map< Conv_Coulomb_Pot_K::Coulomb_Type, std::vector< std::map< std::string, std::string > > > > > coulomb_settings
Definition Exx_LRI.h:132
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > abfs
Definition Exx_LRI.h:124
void init(const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv_in, const LCAO_Orbitals &orb)
Definition Exx_LRI.hpp:85
void reset_Vs(const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_in)
Definition Exx_LRI.h:107
void cal_cut_coulomb_cs(std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_cut_IJR, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs, const UnitCell &ucell, const bool write_cv=false)
Definition Exx_LRI.hpp:760
static constexpr std::size_t Ndim
Definition Exx_LRI.h:57
const Exx_Info::Exx_Info_RI & info
Definition Exx_LRI.h:117
Exx_LRI(const Exx_Info::Exx_Info_RI &info_in)
Definition Exx_LRI.h:63
std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > Hexxs
Definition Exx_LRI.h:110
ModuleBase::matrix force_exx
Definition Exx_LRI.h:112
void init_spencer(const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv_in, const LCAO_Orbitals &orb)
Definition Exx_LRI.hpp:179
void cal_exx_elec(const std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > &Ds, const UnitCell &ucell, const Parallel_Orbitals &pv, const ModuleSymmetry::Symmetry_rotation *p_symrot=nullptr)
Definition Exx_LRI.hpp:913
std::shared_ptr< ORB_gaunt_table > MGT
Definition Exx_LRI.h:120
double post_process_Eexx(const double &Eexx_in) const
Definition Exx_LRI.hpp:976
std::pair< TA, TC > TAC
Definition Exx_LRI.h:59
void reset_Cs(const std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs_in)
Definition Exx_LRI.h:106
int TA
Definition Exx_LRI.h:55
double Eexx
Definition Exx_LRI.h:111
std::map< Conv_Coulomb_Pot_K::Coulomb_Method, Exx_Obj< Tdata > > exx_objs
Definition Exx_LRI.h:126
void cal_exx_ions(const UnitCell &ucell, const bool write_cv=false)
Definition Exx_LRI.hpp:306
MPI_Comm mpi_comm
Definition Exx_LRI.h:118
void cal_exx_force(const int &nat)
Definition Exx_LRI.hpp:1002
std::array< Tcell, Ndim > TC
Definition Exx_LRI.h:58
std::array< double, Ndim > TatomR
Definition Exx_LRI.h:60
RI::Exx< TA, Tcell, Ndim, Tdata > exx_lri
Definition Exx_LRI.h:128
void cal_ewald_coulomb(std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs_full_IJR, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs, const UnitCell &ucell, const bool write_cv=false)
Definition Exx_LRI.hpp:835
Exx_LRI operator=(const Exx_LRI &)=delete
int Tcell
Definition Exx_LRI.h:56
void cal_exx_stress(const double &omega, const double &lat0)
Definition Exx_LRI.hpp:1025
const K_Vectors * p_kv
Definition Exx_LRI.h:119
Exx_LRI operator=(Exx_LRI &&)
std::vector< double > orb_cutoff_
Definition Exx_LRI.h:121
LRI_CV< Tdata > cv
Definition Exx_LRI.h:46
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > abfs_ccp
Definition Exx_LRI.h:48
Ewald_Vq< Tdata > evq
Definition Exx_LRI.h:47
Excited State Solver: Linear Response TDDFT (Tamm Dancoff Approximation)
Definition esolver_lrtd_lcao.h:27
Definition symmetry_rotation.h:16
Definition parallel_orbitals.h:9
std::complex< double > complex
Definition diago_cusolver.cpp:15
Coulomb_Type
Definition conv_coulomb_pot_k.h:10
Coulomb_Method
Definition conv_coulomb_pot_k.h:16
Definition esolver_ks_lcao.h:20
double V_threshold
Definition exx_info.h:63
double C_threshold
Definition exx_info.h:62