ABACUS develop
Atomic-orbital Based Ab-initio Computation at UStc
Loading...
Searching...
No Matches
RPA_LRI.h
Go to the documentation of this file.
1//=======================
2// AUTHOR : Rong Shi
3// DATE : 2022-12-09
4//=======================
5
6#ifndef RPA_LRI_H
7#define RPA_LRI_H
8
10#include "LRI_CV.h"
11// #include "module_xc/exx_info.h"
12// #include "source_basis/module_ao/ORB_atomic_lm.h"
13#include "source_base/matrix.h"
14// #include "source_lcao/module_ri/Exx_LRI.h"
15// #include <RI/physics/Exx.h>
16#include <RI/ri/RI_Tools.h>
17#include <array>
18#include <map>
19#include <mpi.h>
20#include <vector>
21
23class K_Vectors;
24
25template <typename T, typename Tdata> class RPA_LRI
26{
27 private:
28 using TA = int;
29 using Tcell = int;
30 static constexpr std::size_t Ndim = 3;
31 using TC = std::array<Tcell, Ndim>;
32 using TAC = std::pair<TA, TC>;
33 using TatomR = std::array<double, Ndim>; // tmp
34
35 public:
36 RPA_LRI(const Exx_Info::Exx_Info_RI &info_in) : info(info_in)
37 {
38 }
40 void init(const MPI_Comm &mpi_comm_in, const K_Vectors &kv_in, const std::vector<double>& orb_cutoff);
41 void cal_rpa_cv(const UnitCell &ucell);
43 const MPI_Comm& mpi_comm_in,
44 const UnitCell& ucell,
45 const K_Vectors& kv,
46 const LCAO_Orbitals& orb);
47 void out_for_RPA(const UnitCell& ucell,
48 const Parallel_Orbitals& parav,
49 const psi::Psi<T>& psi,
50 const elecstate::ElecState* pelec);
51 void out_eigen_vector(const Parallel_Orbitals& parav, const psi::Psi<T>& psi);
52 void out_struc(const UnitCell &ucell);
53 void out_bands(const elecstate::ElecState *pelec);
54
55 void out_Cs(const UnitCell &ucell);
56 void out_coulomb_k(const UnitCell &ucell);
57 // void print_matrix(char *desc, const ModuleBase::matrix &mat);
58 // void print_complex_matrix(char *desc, const ModuleBase::ComplexMatrix &mat);
59 // void init(const MPI_Comm &mpi_comm_in);
60 // void cal_rpa_ions();
61
62 Tdata Erpa;
63
64 private:
66 const K_Vectors *p_kv=nullptr;
67 MPI_Comm mpi_comm;
68 std::vector<double> orb_cutoff_;
69
70 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> lcaos;
71 std::vector<std::vector<std::vector<Numerical_Orbital_Lm>>> abfs;
72
73 // Exx_LRI<double> exx_postSCF_double(info);
74 // LRI_CV<Tdata> cv;
75 std::map<TA, std::map<TAC, RI::Tensor<Tdata>>> Vs_period;
76 std::map<TA, std::map<TAC, RI::Tensor<Tdata>>> Cs_period;
77 // RI::RPA<TA,Tcell,Ndim,Tdata> rpa_lri;
78
79 // Tdata post_process_Erpa( const Tdata &Erpa_in ) const;
80};
82#include "RPA_LRI.hpp"
83
84#endif
Exx_LRI< double > exx_lri_rpa(GlobalC::exx_info.info_ri)
Definition Exx_LRI.h:51
Definition klist.h:13
Definition ORB_read.h:19
Definition parallel_orbitals.h:9
Definition RPA_LRI.h:26
std::vector< double > orb_cutoff_
Definition RPA_LRI.h:68
const Exx_Info::Exx_Info_RI & info
Definition RPA_LRI.h:65
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > Cs_period
Definition RPA_LRI.h:76
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:76
static constexpr std::size_t Ndim
Definition RPA_LRI.h:30
MPI_Comm mpi_comm
Definition RPA_LRI.h:67
void out_coulomb_k(const UnitCell &ucell)
Definition RPA_LRI.hpp:350
void out_Cs(const UnitCell &ucell)
Definition RPA_LRI.hpp:312
void out_bands(const elecstate::ElecState *pelec)
Definition RPA_LRI.hpp:274
std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > Vs_period
Definition RPA_LRI.h:75
int Tcell
Definition RPA_LRI.h:29
void out_struc(const UnitCell &ucell)
Definition RPA_LRI.hpp:225
int TA
Definition RPA_LRI.h:28
RPA_LRI(const Exx_Info::Exx_Info_RI &info_in)
Definition RPA_LRI.h:36
std::array< Tcell, Ndim > TC
Definition RPA_LRI.h:31
Tdata Erpa
Definition RPA_LRI.h:62
std::pair< TA, TC > TAC
Definition RPA_LRI.h:32
const K_Vectors * p_kv
Definition RPA_LRI.h:66
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > abfs
Definition RPA_LRI.h:71
~RPA_LRI()
Definition RPA_LRI.h:39
void out_for_RPA(const UnitCell &ucell, const Parallel_Orbitals &parav, const psi::Psi< T > &psi, const elecstate::ElecState *pelec)
Definition RPA_LRI.hpp:133
std::vector< std::vector< std::vector< Numerical_Orbital_Lm > > > lcaos
Definition RPA_LRI.h:70
void cal_rpa_cv(const UnitCell &ucell)
Definition RPA_LRI.hpp:33
void out_eigen_vector(const Parallel_Orbitals &parav, const psi::Psi< T > &psi)
Definition RPA_LRI.hpp:159
std::array< double, Ndim > TatomR
Definition RPA_LRI.h:33
void init(const MPI_Comm &mpi_comm_in, const K_Vectors &kv_in, const std::vector< double > &orb_cutoff)
Definition RPA_LRI.hpp:18
Definition unitcell.h:16
Definition density_matrix.h:36
Definition elecstate.h:15
Definition psi.h:37
Exx_Info exx_info
Definition test_xc.cpp:29
Definition exx_lip.h:23
Definition exx_info.h:53