15#include <RI/ri/RI_Tools.h>
24template <
typename T,
typename Tdata>
class RPA_LRI
29 static constexpr std::size_t
Ndim = 3;
30 using TC = std::array<Tcell, Ndim>;
31 using Tq = std::array<double, Ndim>;
32 using TAC = std::pair<TA, TC>;
33 using TAq = std::pair<TA, Tq>;
34 using TatomR = std::array<double, Ndim>;
42 const MPI_Comm& mpi_comm_in,
49 void init(
const MPI_Comm &mpi_comm_in,
const K_Vectors &kv_in,
const std::vector<double>& orb_cutoff);
51 const MPI_Comm& mpi_comm_in,
59 std::map<
TA, std::map<
TAq, RI::Tensor<std::complex<double>>>>& overlap_abfs_abfs,
62 std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& overlap_abfs_abfs,
63 std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& overlap_abfs_abf,
72 void out_Cs(
const UnitCell& ucell, std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& Cs_in, std::string filename);
74 std::map<
TA, std::map<
TAC, RI::Tensor<Tdata>>>& Vs,
91 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>
lcaos;
92 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>
abfs;
94 std::shared_ptr<ORB_gaunt_table>
MGT;
95 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>>
abfs_shrink;
100 std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>
Vs_period;
101 std::map<TA, std::map<TAC, RI::Tensor<Tdata>>>
Cs_period;
Exx_LRI< double > exx_lri_rpa(GlobalC::exx_info.info_ri)
Definition parallel_orbitals.h:9
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > abfs_shrink
Definition RPA_LRI.h:95
std::vector< double > orb_cutoff_
Definition RPA_LRI.h:88
const Exx_Info::Exx_Info_RI & info
Definition RPA_LRI.h:85
std::pair< TA, Tq > TAq
Definition RPA_LRI.h:33
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > Cs_period
Definition RPA_LRI.h:101
void cal_postSCF_exx(const elecstate::DensityMatrix< T, Tdata > &dm, const MPI_Comm &mpi_comm_in, const UnitCell &ucell, const K_Vectors &kv, const LCAO_Orbitals &orb)
Definition RPA_LRI.hpp:103
static constexpr std::size_t Ndim
Definition RPA_LRI.h:29
Exx_LRI< double > * exx_cut_coulomb
Definition RPA_LRI.h:106
void output_cut_coulomb_cs(const UnitCell &ucell, Exx_LRI< double > *exx_lri_rpa)
Definition RPA_LRI.hpp:200
MPI_Comm mpi_comm
Definition RPA_LRI.h:87
void cal_large_Cs(const UnitCell &ucell, const LCAO_Orbitals &orb, const K_Vectors &kv)
Definition RPA_LRI.hpp:311
void out_abfs_overlap(const UnitCell &ucell, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &overlap_abfs_abfs, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &overlap_abfs_abf, std::string filename, const ModuleBase::Element_Basis_Index::IndexLNM &index_abfs_s, const ModuleBase::Element_Basis_Index::IndexLNM &index_abfs)
Definition RPA_LRI.hpp:576
void out_Cs(const UnitCell &ucell, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Cs_in, std::string filename)
Definition RPA_LRI.hpp:1105
std::array< double, Ndim > Tq
Definition RPA_LRI.h:31
void out_bands(const elecstate::ElecState *pelec)
Definition RPA_LRI.hpp:1067
void out_coulomb_k(const UnitCell &ucell, std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > &Vs, std::string filename, Exx_LRI< double > *exx_lri)
Definition RPA_LRI.hpp:1147
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > Vs_period
Definition RPA_LRI.h:100
int Tcell
Definition RPA_LRI.h:28
void inverse_olp(const UnitCell &ucell, std::map< TA, std::map< TAq, RI::Tensor< std::complex< double > > > > &overlap_abfs_abfs, const ModuleBase::Element_Basis_Index::IndexLNM &index_abfs_s)
Definition RPA_LRI.hpp:736
void postSCF(const UnitCell &ucell, const MPI_Comm &mpi_comm_in, const elecstate::DensityMatrix< T, Tdata > &dm, const elecstate::ElecState *pelec, const K_Vectors &kv, const LCAO_Orbitals &orb, const Parallel_Orbitals ¶v, const psi::Psi< T > &psi)
Definition RPA_LRI.hpp:37
double ccp_rmesh_times_ewald
Definition RPA_LRI.h:89
void out_struc(const UnitCell &ucell)
Definition RPA_LRI.hpp:1002
int TA
Definition RPA_LRI.h:27
RPA_LRI(const Exx_Info::Exx_Info_RI &info_in)
Definition RPA_LRI.h:37
std::array< Tcell, Ndim > TC
Definition RPA_LRI.h:30
Tdata Erpa
Definition RPA_LRI.h:82
std::shared_ptr< ORB_gaunt_table > MGT
Definition RPA_LRI.h:94
void output_ewald_coulomb(const UnitCell &ucell, const K_Vectors &kv, const LCAO_Orbitals &orb)
Definition RPA_LRI.hpp:254
std::pair< TA, TC > TAC
Definition RPA_LRI.h:32
const K_Vectors * p_kv
Definition RPA_LRI.h:86
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > abfs
Definition RPA_LRI.h:92
~RPA_LRI()
Definition RPA_LRI.h:40
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > lcaos
Definition RPA_LRI.h:91
void out_eigen_vector(const Parallel_Orbitals ¶v, const psi::Psi< T > &psi)
Definition RPA_LRI.hpp:936
void cal_abfs_overlap(const UnitCell &ucell, const LCAO_Orbitals &orb, const K_Vectors &kv)
Definition RPA_LRI.hpp:418
std::array< double, Ndim > TatomR
Definition RPA_LRI.h:34
void init(const MPI_Comm &mpi_comm_in, const K_Vectors &kv_in, const std::vector< double > &orb_cutoff)
Definition RPA_LRI.hpp:79
Exx_LRI< double > * exx_full_coulomb
Definition RPA_LRI.h:107
Definition density_matrix.h:70
Definition elecstate.h:15
Exx_Info exx_info
Definition exx_info.cpp:8
std::vector< Index_T > IndexLNM
Definition element_basis_index.h:42
std::pair< int, TC > TAC
Definition ri_cv_io_test.cpp:10