11#include " conv_coulomb_pot_k.h"
22#include " ../module_base/constants.h"
33#include " ../module_orbital/ORB_atomic_lm.h"
4-
4+ # include " ../src_pw/global.h "
55std::vector<double > Conv_Coulomb_Pot_K::cal_psi_ccp ( const std::vector<double > & psif )
66{
77 std::vector<double > psik2_ccp (psif.size ());
@@ -10,6 +10,21 @@ std::vector<double> Conv_Coulomb_Pot_K::cal_psi_ccp( const std::vector<double> &
1010 return psik2_ccp;
1111}
1212
13+ // rongshi add 2022-07-27
14+ // Sphere truction -- Spencer
15+ std::vector<double > Conv_Coulomb_Pot_K::cal_psi_hf (const std::vector<double > &psif,
16+ const std::vector<double > &k_radial,
17+ const double omega = 0 )
18+ {
19+ double Rc = pow (0.75 * GlobalC::kv.nks * GlobalC::ucell.omega / (ModuleBase::PI), 0.3333334 );
20+ // cout << "hf_Rc: " << Rc << endl;
21+ std::vector<double > psik2_ccp (psif.size ());
22+ for (size_t ik = 0 ; ik < psif.size (); ++ik)
23+ psik2_ccp[ik] = ModuleBase::FOUR_PI * psif[ik] * (1 - std::cos (k_radial[ik] * Rc));
24+ return psik2_ccp;
25+ }
26+
27+
1328std::vector<double > Conv_Coulomb_Pot_K::cal_psi_hse (
1429 const std::vector<double > & psif,
1530 const std::vector<double > & k_radial,
@@ -35,6 +50,8 @@ Numerical_Orbital_Lm Conv_Coulomb_Pot_K::cal_orbs_ccp<Numerical_Orbital_Lm>(
3550 {
3651 case Ccp_Type::Ccp:
3752 psik2_ccp = cal_psi_ccp ( orbs.get_psif () ); break ;
53+ case Ccp_Type::Hf:
54+ psik2_ccp = cal_psi_hf (orbs.get_psif (), orbs.get_k_radial ()); break ;
3855 case Ccp_Type::Hse:
3956 psik2_ccp = cal_psi_hse ( orbs.get_psif (), orbs.get_k_radial (), parameter.at (" hse_omega" ) ); break ;
4057 default :
0 commit comments