1#ifndef __WRITE_VXC_R_H_
2#define __WRITE_VXC_R_H_
34#ifndef SET_GINT_POINTER_H
35#define SET_GINT_POINTER_H
46void set_gint_pointer<std::complex<double>>(
Gint_Gamma& gint_gamma,
56 std::set<Abfs::Vector3_Order<int>> all_R_coor;
62std::map<Abfs::Vector3_Order<int>, std::map<size_t, std::map<size_t, TR>>>
64 const int current_spin,
65 const double sparse_thr);
68std::map<Abfs::Vector3_Order<int>, std::map<size_t, std::map<size_t, double>>>
70 const int current_spin,
71 const double sparse_thr)
73 std::map<Abfs::Vector3_Order<int>, std::map<size_t, std::map<size_t, double>>> target;
78std::map<Abfs::Vector3_Order<int>, std::map<size_t, std::map<size_t, std::complex<double>>>>
80 const int current_spin,
81 const double sparse_thr)
83 std::map<Abfs::Vector3_Order<int>, std::map<size_t, std::map<size_t, std::complex<double>>>> target;
90template <
typename TK,
typename TR>
103 const std::vector<double>& orb_cutoff,
106 const std::vector<std::map<
int, std::map<
TAC, RI::Tensor<double>>>>*
const Hexxd,
107 const std::vector<std::map<
int, std::map<
TAC, RI::Tensor<std::complex<double>>>>>*
const Hexxc,
109const double sparse_thr=1e-10)
119 =
new elecstate::Potential(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &solvent, &etxc, &vtxc);
120 std::vector<std::string> compnents_list = {
"xc"};
126 int nspin0 = (nspin == 2) ? 2 : 1;
129 std::array<int, 3> Rs_period = { kv.
nmp[0], kv.
nmp[1], kv.
nmp[2] };
130 const auto cell_nearest = hamilt::init_cell_nearest(ucell, Rs_period);
132 for (
int is = 0; is < nspin0; ++is)
134 if (std::is_same<TK, double>::value) { vxcs_R_ao[is].fix_gamma(); }
139 hamilt::reallocate_hcontainer(*Hexxd, &vxcs_R_ao[is], &cell_nearest) :
140 hamilt::reallocate_hcontainer(*Hexxc, &vxcs_R_ao[is], &cell_nearest);
148 set_gint_pointer<TK>(gint_gamma, gint_k, gint);
149 std::vector<hamilt::Veff<hamilt::OperatorLCAO<TK, TR>>*> vxcs_op_ao(nspin0);
150 for (
int is = 0; is < nspin0; ++is)
153 &vxc_k_ao, kv.
kvec_d, potxc, &vxcs_R_ao[is], &ucell, orb_cutoff, &gd, nspin);
185 for (
int is = 0; is < nspin0; ++is)
188 const std::string filename =
"Vxc_R_spin" + std::to_string(is);
Definition gint_gamma.h:23
Definition sltk_grid_driver.h:43
int nmp[3]
distinguish spin up and down k points
Definition klist.h:23
std::vector< ModuleBase::Vector3< double > > kvec_d
Cartesian coordinates of k points.
Definition klist.h:16
A class which can convert a function of "r" to the corresponding linear superposition of plane waves ...
Definition pw_basis.h:56
Definition parallel_orbitals.h:9
const System_para & globalv
Definition parameter.h:30
Definition structure_factor.h:11
Definition potential_new.h:48
void pot_register(const std::vector< std::string > &components_list)
Definition potential_new.cpp:62
void update_from_charge(const Charge *const chg, const UnitCell *const ucell)
Definition potential_new.cpp:152
Definition hcontainer.h:144
const Parallel_Orbitals * get_paraV() const
get parallel orbital pointer to check parallel information
Definition hcontainer.h:192
Definition hs_matrix_k.hpp:11
Definition veff_lcao.h:20
void contributeHR()
Definition veff_lcao.cpp:60
std::complex< double > complex
Definition diago_cusolver.cpp:13
Exx_Info exx_info
Definition test_xc.cpp:29
void TITLE(const std::string &class_name, const std::string &function_name, const bool disable)
Definition tool_title.cpp:18
This class has two functions: restart psi from the previous calculation, and write psi to the disk.
Definition cal_dos.h:9
std::pair< int, TC > TAC
Definition restart_exx_csr.h:11
void set_gint_pointer< double >(Gint_Gamma &gint_gamma, Gint_k &gint_k, typename TGint< double >::type *&gint)
Definition write_vxc.hpp:136
void write_Vxc_R(const int nspin, const Parallel_Orbitals *pv, const UnitCell &ucell, Structure_Factor &sf, surchem &solvent, const ModulePW::PW_Basis &rho_basis, const ModulePW::PW_Basis &rhod_basis, const ModuleBase::matrix &vloc, const Charge &chg, Gint_Gamma &gint_gamma, Gint_k &gint_k, const K_Vectors &kv, const std::vector< double > &orb_cutoff, Grid_Driver &gd, const double sparse_thr=1e-10)
write the Vxc matrix in KS orbital representation, usefull for GW calculation including terms: local/...
Definition write_vxc_r.hpp:91
void set_gint_pointer(Gint_Gamma &gint_gamma, Gint_k &gint_k, typename TGint< T >::type *&gint)
std::set< Abfs::Vector3_Order< int > > get_R_range(const hamilt::HContainer< TR > &hR)
Definition write_vxc_r.hpp:54
std::map< Abfs::Vector3_Order< int >, std::map< size_t, std::map< size_t, TR > > > cal_HR_sparse(const hamilt::HContainer< TR > &hR, const int current_spin, const double sparse_thr)
void save_sparse(const std::map< Abfs::Vector3_Order< int >, std::map< size_t, std::map< size_t, Tdata > > > &smat, const std::set< Abfs::Vector3_Order< int > > &all_R_coor, const double &sparse_thr, const bool &binary, const std::string &filename, const Parallel_Orbitals &pv, const std::string &label, const int &istep=-1, const bool &reduce=true)
Definition write_HS_sparse.cpp:704
void add_HexxR(const int current_spin, const double alpha, const std::vector< std::map< TA, std::map< TAC, RI::Tensor< Tdata > > > > &Hs, const Parallel_Orbitals &pv, const int npol, hamilt::HContainer< TR > &HlocR, const RI::Cell_Nearest< int, int, 3, double, 3 > *const cell_nearest=nullptr)
Definition RI_2D_Comm.hpp:238
Parameter PARAM
Definition parameter.cpp:3
base device SOURCES math_dngvd_test cpp endif() if(ENABLE_GOOGLEBENCH) AddTest(TARGET PERF_MODULE_HSOLVER_KERNELS LIBS parameter $
Definition CMakeLists.txt:10
bool real_number
Definition exx_info.h:56
Exx_Info_RI info_ri
Definition exx_info.h:78
std::string global_out_dir
global output directory
Definition system_parameter.h:42
Definition write_vxc.hpp:16