diff --git a/src/gw_utils.F b/src/gw_utils.F index e0a5e1ecba..64714f645d 100644 --- a/src/gw_utils.F +++ b/src/gw_utils.F @@ -264,6 +264,7 @@ CONTAINS CALL section_vals_val_get(gw_sec, "REGULARIZATION_RI", r_val=bs_env%input_regularization_RI) CALL section_vals_val_get(gw_sec, "MEMORY_PER_PROC", r_val=bs_env%input_memory_per_proc_GB) CALL section_vals_val_get(gw_sec, "APPROX_KP_EXTRAPOL", l_val=bs_env%approx_kp_extrapol) + CALL section_vals_val_get(gw_sec, "HEDIN_SHIFT", l_val=bs_env%do_hedin_shift) CALL timestop(handle) @@ -2854,8 +2855,8 @@ CONTAINS Sigma_c_ikp_n_freq(:, 1:bs_env%num_freq_points_fit, 1)*z_one + & Sigma_c_ikp_n_freq(:, 1:bs_env%num_freq_points_fit, 2)*gaussi, & Sigma_x_ikp_n(:) - V_xc_ikp_n(:), & - eigenval_scf(:), & - eigenval_scf(:), & + eigenval_scf(:), eigenval_scf(:), & + bs_env%do_hedin_shift, & i_mo, bs_env%n_occ(ispin), bs_env%n_vir(ispin), & bs_env%nparam_pade, bs_env%num_freq_points_fit, & ri_rpa_g0w0_crossing_newton, bs_env%n_occ(ispin), & @@ -2879,6 +2880,11 @@ CONTAINS is_bandstruc_kpoint = (ikp > bs_env%nkp_only_DOS) print_ikp = print_DOS_kpoints .OR. is_bandstruc_kpoint + IF (bs_env%unit_nr > 0) THEN + WRITE (bs_env%unit_nr, FMT="(T2,A)") " " + WRITE (bs_env%unit_nr, FMT="(T2,A,L80)") "Apply Hedin shift", bs_env%do_hedin_shift + END IF + IF (bs_env%para_env%is_source() .AND. print_ikp) THEN IF (print_DOS_kpoints) THEN diff --git a/src/input_cp2k_mp2.F b/src/input_cp2k_mp2.F index 16def9ee8f..59b4429a41 100644 --- a/src/input_cp2k_mp2.F +++ b/src/input_cp2k_mp2.F @@ -760,6 +760,18 @@ CONTAINS CALL section_add_keyword(section, keyword) CALL keyword_release(keyword) + CALL keyword_create(keyword, __LOCATION__, name="HEDIN_SHIFT", & + description="If true, use Hedin's shift in G0W0, evGW and evGW0 "// & + "(aka scGW0). Details see in Li et al. JCTC 18, 7570 "// & + "(2022), Figure 1. G0W0 with Hedin's shift should give "// & + "similar GW eigenvalues as evGW0; at a lower "// & + "computational cost.", & + usage="HEDIN_SHIFT", & + default_l_val=.FALSE., & + lone_keyword_l_val=.TRUE.) + CALL section_add_keyword(section, keyword) + CALL keyword_release(keyword) + CALL keyword_create(keyword, __LOCATION__, name="EV_GW_ITER", & description="Maximum number of iterations for eigenvalue self-consistency cycle. The "// & "computational effort of GW scales linearly with this number. ", & diff --git a/src/input_cp2k_properties_dft.F b/src/input_cp2k_properties_dft.F index 272f3c28e7..bfe63bacd8 100644 --- a/src/input_cp2k_properties_dft.F +++ b/src/input_cp2k_properties_dft.F @@ -2105,6 +2105,18 @@ CONTAINS CALL section_add_keyword(section, keyword) CALL keyword_release(keyword) + CALL keyword_create(keyword, __LOCATION__, name="HEDIN_SHIFT", & + description="If true, use Hedin's shift in G0W0, evGW and evGW0. "// & + "Details see in Li et al. JCTC 18, 7570 "// & + "(2022), Figure 1. G0W0 with Hedin's shift should give "// & + "similar GW eigenvalues as evGW0; at a lower "// & + "computational cost.", & + usage="HEDIN_SHIFT", & + default_l_val=.TRUE., & + lone_keyword_l_val=.TRUE.) + CALL section_add_keyword(section, keyword) + CALL keyword_release(keyword) + NULLIFY (subsection, print_key) CALL section_create(subsection, __LOCATION__, name="PRINT", & description="Printing of GW restarts.", & diff --git a/src/mp2_setup.F b/src/mp2_setup.F index acbe5aa8ee..d5f6f05e19 100644 --- a/src/mp2_setup.F +++ b/src/mp2_setup.F @@ -140,6 +140,8 @@ CONTAINS i_val=mp2_env%ri_g0w0%crossing_search) CALL section_vals_val_get(mp2_section, "RI_RPA%GW%FERMI_LEVEL_OFFSET", & r_val=mp2_env%ri_g0w0%fermi_level_offset) + CALL section_vals_val_get(mp2_section, "RI_RPA%GW%HEDIN_SHIFT", & + l_val=mp2_env%ri_g0w0%do_hedin_shift) CALL section_vals_val_get(mp2_section, "RI_RPA%GW%EV_GW_ITER", & i_val=mp2_env%ri_g0w0%iter_evGW) CALL section_vals_val_get(mp2_section, "RI_RPA%GW%SC_GW0_ITER", & diff --git a/src/mp2_types.F b/src/mp2_types.F index cd2b99ba84..fecf1001cc 100644 --- a/src/mp2_types.F +++ b/src/mp2_types.F @@ -204,7 +204,8 @@ MODULE mp2_types INTEGER :: iter_evGW = 0, & iter_sc_GW0 = 0 REAL(KIND=dp) :: eps_iter = 0.0_dp - LOGICAL :: do_ri_Sigma_x = .FALSE., & + LOGICAL :: do_hedin_shift = .FALSE., & + do_ri_Sigma_x = .FALSE., & do_periodic = .FALSE., & print_self_energy = .FALSE. REAL(KIND=dp), ALLOCATABLE, DIMENSION(:, :, :) :: vec_Sigma_x_minus_vxc_gw diff --git a/src/post_scf_bandstructure_types.F b/src/post_scf_bandstructure_types.F index 0be67ae5f3..46d12b0405 100644 --- a/src/post_scf_bandstructure_types.F +++ b/src/post_scf_bandstructure_types.F @@ -75,6 +75,9 @@ MODULE post_scf_bandstructure_types band_edges_G0W0, & band_edges_HF + ! parameters that influence the GW flavor + LOGICAL :: do_hedin_shift = .FALSE. + ! general parameters on molecular orbitals and basis sets INTEGER :: n_ao = -1, & n_RI = -1, & @@ -103,6 +106,7 @@ MODULE post_scf_bandstructure_types TYPE(kpoint_type), POINTER :: kpoints_chi_eps_W => NULL(), & kpoints_DOS => NULL() LOGICAL :: approx_kp_extrapol = .FALSE. + REAL(KIND=dp) :: wkp_orig = -1.0_dp REAL(KIND=dp), DIMENSION(:), ALLOCATABLE :: wkp_s_p, & wkp_no_extra diff --git a/src/rpa_gw.F b/src/rpa_gw.F index b638b0275e..0bd931343b 100644 --- a/src/rpa_gw.F +++ b/src/rpa_gw.F @@ -1435,7 +1435,8 @@ CONTAINS CALL continuation_pade(vec_gw_energ(:, ikp, 1), vec_omega_fit_gw, & z_value(:, ikp, 1), m_value(:, ikp, 1), vec_Sigma_c_gw(:, :, ikp, 1), & mp2_env%ri_g0w0%vec_Sigma_x_minus_vxc_gw(:, 1, ikp), & - Eigenval(:, ikp, 1), Eigenval_scf(:, ikp, 1), n_level_gw, & + Eigenval(:, ikp, 1), Eigenval_scf(:, ikp, 1), & + mp2_env%ri_g0w0%do_hedin_shift, n_level_gw, & gw_corr_lev_occ(1), gw_corr_lev_virt(1), mp2_env%ri_g0w0%nparam_pade, & num_fit_points, crossing_search, homo(1), fermi_level_offset, & do_im_time, mp2_env%ri_g0w0%print_self_energy, count_ev_sc_GW, & @@ -1443,7 +1444,6 @@ CONTAINS mp2_env%ri_g0w0%min_level_self_energy, & mp2_env%ri_g0w0%max_level_self_energy, mp2_env%ri_g0w0%dos_eta, & mp2_env%ri_g0w0%dos_min, mp2_env%ri_g0w0%dos_max) - CASE DEFAULT CPABORT("Only two-model and Pade approximation are implemented.") END SELECT @@ -1463,7 +1463,8 @@ CONTAINS CALL continuation_pade(vec_gw_energ(:, ikp, 2), vec_omega_fit_gw, & z_value(:, ikp, 2), m_value(:, ikp, 2), vec_Sigma_c_gw(:, :, ikp, 2), & mp2_env%ri_g0w0%vec_Sigma_x_minus_vxc_gw(:, 2, ikp), & - Eigenval(:, ikp, 2), Eigenval_scf(:, ikp, 2), n_level_gw, & + Eigenval(:, ikp, 2), Eigenval_scf(:, ikp, 2), & + mp2_env%ri_g0w0%do_hedin_shift, n_level_gw, & gw_corr_lev_occ(2), gw_corr_lev_virt(2), mp2_env%ri_g0w0%nparam_pade, & num_fit_points, crossing_search, homo(2), & fermi_level_offset, do_im_time, & @@ -4279,6 +4280,7 @@ CONTAINS !> \param vec_Sigma_x_minus_vxc_gw ... !> \param Eigenval quasiparticle energy during ev self-consistent GW !> \param Eigenval_scf KS/HF eigenvalue +!> \param do_hedin_shift ... !> \param n_level_gw ... !> \param gw_corr_lev_occ ... !> \param gw_corr_lev_vir ... @@ -4303,7 +4305,8 @@ CONTAINS ! ************************************************************************************************** SUBROUTINE continuation_pade(vec_gw_energ, vec_omega_fit_gw, & z_value, m_value, vec_Sigma_c_gw, vec_Sigma_x_minus_vxc_gw, & - Eigenval, Eigenval_scf, n_level_gw, gw_corr_lev_occ, gw_corr_lev_vir, & + Eigenval, Eigenval_scf, do_hedin_shift, n_level_gw, & + gw_corr_lev_occ, gw_corr_lev_vir, & nparam_pade, num_fit_points, crossing_search, homo, & fermi_level_offset, do_gw_im_time, print_self_energy, count_ev_sc_GW, & vec_gw_dos, dos_lower_bound, dos_precision, ndos, & @@ -4317,6 +4320,7 @@ CONTAINS COMPLEX(KIND=dp), DIMENSION(:, :), INTENT(IN) :: vec_Sigma_c_gw REAL(KIND=dp), DIMENSION(:), INTENT(IN) :: vec_Sigma_x_minus_vxc_gw, Eigenval, & Eigenval_scf + LOGICAL, INTENT(IN) :: do_hedin_shift INTEGER, INTENT(IN) :: n_level_gw, gw_corr_lev_occ, & gw_corr_lev_vir, nparam_pade, & num_fit_points, crossing_search, homo @@ -4340,8 +4344,9 @@ CONTAINS Sigma_c_gw_reorder INTEGER :: handle, i_omega, idos, iunit, jquad, & n_level_gw_ref, num_omega - REAL(KIND=dp) :: e_fermi, energy_val, level_energ_GW, & - omega, omega_dos, omega_dos_pade_eval, & + REAL(KIND=dp) :: e_fermi, energy_val, hedin_shift, & + level_energ_GW_start, omega, & + omega_dos, omega_dos_pade_eval, & sign_occ_virt REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: vec_omega_fit_gw_sign, & vec_omega_fit_gw_sign_reorder, & @@ -4410,17 +4415,24 @@ CONTAINS coeff_pade, sigma_c_pade) CALL get_z_and_m_value_pade(energy_val, nparam_pade, omega_points_pade, & coeff_pade, z_value(n_level_gw), m_value(n_level_gw)) - level_energ_GW = (Eigenval_scf(n_level_gw_ref) - & - m_value(n_level_gw)*Eigenval(n_level_gw_ref) + & - REAL(sigma_c_pade) + & - vec_Sigma_x_minus_vxc_gw(n_level_gw_ref))* & - z_value(n_level_gw) + level_energ_GW_start = (Eigenval_scf(n_level_gw_ref) - & + m_value(n_level_gw)*Eigenval(n_level_gw_ref) + & + REAL(sigma_c_pade) + & + vec_Sigma_x_minus_vxc_gw(n_level_gw_ref))* & + z_value(n_level_gw) + + ! calculate Hedin shift; the last line is for evGW0 and evGW + hedin_shift = 0.0_dp + IF (do_hedin_shift) hedin_shift = REAL(sigma_c_pade) + & + vec_Sigma_x_minus_vxc_gw(n_level_gw_ref) & + - Eigenval(n_level_gw_ref) + Eigenval_scf(n_level_gw_ref) END IF iunit = cp_logger_get_default_unit_nr() IF (PRESENT(min_level_self_energy) .AND. PRESENT(max_level_self_energy)) THEN - IF (n_level_gw_ref >= min_level_self_energy .AND. n_level_gw_ref <= max_level_self_energy) THEN + IF (n_level_gw_ref >= min_level_self_energy .AND. & + n_level_gw_ref <= max_level_self_energy) THEN ALLOCATE (vec_sigma_real(ndos)) ALLOCATE (vec_sigma_imag(ndos)) WRITE (string_level, "(I4)") n_level_gw_ref @@ -4435,6 +4447,8 @@ CONTAINS IF (PRESENT(ndos)) THEN IF (ndos /= 0) THEN + ! Hedin shift not implemented + CPASSERT(.NOT. do_hedin_shift) DO idos = 1, ndos omega_dos = dos_lower_bound + REAL(idos - 1, KIND=dp)*dos_precision omega_dos_pade_eval = omega_dos - e_fermi @@ -4495,6 +4509,8 @@ CONTAINS !*** perform crossing search SELECT CASE (crossing_search) CASE (ri_rpa_g0w0_crossing_z_shot) + ! Hedin shift not implemented + CPASSERT(.NOT. do_hedin_shift) energy_val = Eigenval(n_level_gw_ref) - e_fermi CALL evaluate_pade_function(energy_val, nparam_pade, omega_points_pade, & coeff_pade, sigma_c_pade) @@ -4507,7 +4523,7 @@ CONTAINS CALL get_sigma_c_bisection_pade(vec_gw_energ(n_level_gw), Eigenval_scf(n_level_gw_ref), & vec_Sigma_x_minus_vxc_gw(n_level_gw_ref), e_fermi, & nparam_pade, omega_points_pade, coeff_pade, & - start_val=level_energ_GW) + level_energ_GW_start, hedin_shift) z_value(n_level_gw) = 1.0_dp m_value(n_level_gw) = 0.0_dp @@ -4515,7 +4531,7 @@ CONTAINS CALL get_sigma_c_newton_pade(vec_gw_energ(n_level_gw), Eigenval_scf(n_level_gw_ref), & vec_Sigma_x_minus_vxc_gw(n_level_gw_ref), e_fermi, & nparam_pade, omega_points_pade, coeff_pade, & - start_val=level_energ_GW) + level_energ_GW_start, hedin_shift) z_value(n_level_gw) = 1.0_dp m_value(n_level_gw) = 0.0_dp @@ -4747,36 +4763,32 @@ CONTAINS !> \param omega_points_pade selection of frequency points of Sigma_c(iomega) !> \param coeff_pade pade coefficients !> \param start_val start value for the quasiparticle iteration +!> \param hedin_shift ... ! ************************************************************************************************** SUBROUTINE get_sigma_c_bisection_pade(gw_energ, Eigenval_scf, Sigma_x_minus_vxc_gw, e_fermi, & - nparam_pade, omega_points_pade, coeff_pade, start_val) + nparam_pade, omega_points_pade, coeff_pade, start_val, & + hedin_shift) REAL(KIND=dp), INTENT(OUT) :: gw_energ REAL(KIND=dp), INTENT(IN) :: Eigenval_scf, Sigma_x_minus_vxc_gw, & e_fermi INTEGER, INTENT(IN) :: nparam_pade COMPLEX(KIND=dp), DIMENSION(:), INTENT(IN) :: omega_points_pade, coeff_pade - REAL(KIND=dp), INTENT(IN), OPTIONAL :: start_val + REAL(KIND=dp), INTENT(IN) :: start_val, hedin_shift CHARACTER(LEN=*), PARAMETER :: routineN = 'get_sigma_c_bisection_pade' COMPLEX(KIND=dp) :: sigma_c INTEGER :: handle, icount - REAL(KIND=dp) :: delta, energy_val, my_start_val, & - qp_energy, qp_energy_old, threshold + REAL(KIND=dp) :: delta, energy_val, qp_energy, & + qp_energy_old, threshold CALL timeset(routineN, handle) threshold = 1.0E-7_dp - IF (PRESENT(start_val)) THEN - my_start_val = start_val - ELSE - my_start_val = Eigenval_scf - END IF - - qp_energy = my_start_val - qp_energy_old = my_start_val + qp_energy = start_val + qp_energy_old = start_val delta = 1.0E-3_dp icount = 0 @@ -4784,7 +4796,7 @@ CONTAINS icount = icount + 1 qp_energy = qp_energy_old + 0.5_dp*delta qp_energy_old = qp_energy - energy_val = qp_energy - e_fermi + energy_val = qp_energy - e_fermi - hedin_shift CALL evaluate_pade_function(energy_val, nparam_pade, omega_points_pade, & coeff_pade, sigma_c) qp_energy = Eigenval_scf + REAL(sigma_c) + Sigma_x_minus_vxc_gw @@ -4809,43 +4821,38 @@ CONTAINS !> \param omega_points_pade selection of frequency points of Sigma_c(iomega) !> \param coeff_pade pade coefficients !> \param start_val start value for the quasiparticle iteration +!> \param hedin_shift ... ! ************************************************************************************************** SUBROUTINE get_sigma_c_newton_pade(gw_energ, Eigenval_scf, Sigma_x_minus_vxc_gw, e_fermi, & - nparam_pade, omega_points_pade, coeff_pade, start_val) + nparam_pade, omega_points_pade, coeff_pade, start_val, & + hedin_shift) REAL(KIND=dp), INTENT(OUT) :: gw_energ REAL(KIND=dp), INTENT(IN) :: Eigenval_scf, Sigma_x_minus_vxc_gw, & e_fermi INTEGER, INTENT(IN) :: nparam_pade COMPLEX(KIND=dp), DIMENSION(:), INTENT(IN) :: omega_points_pade, coeff_pade - REAL(KIND=dp), INTENT(IN), OPTIONAL :: start_val + REAL(KIND=dp), INTENT(IN) :: start_val, hedin_shift CHARACTER(LEN=*), PARAMETER :: routineN = 'get_sigma_c_newton_pade' COMPLEX(KIND=dp) :: sigma_c INTEGER :: handle, icount - REAL(KIND=dp) :: delta, energy_val, m_value, & - my_start_val, qp_energy, & + REAL(KIND=dp) :: delta, energy_val, m_value, qp_energy, & qp_energy_old, threshold CALL timeset(routineN, handle) threshold = 1.0E-7_dp - IF (PRESENT(start_val)) THEN - my_start_val = start_val - ELSE - my_start_val = Eigenval_scf - END IF - - qp_energy = my_start_val - qp_energy_old = my_start_val + qp_energy = start_val + qp_energy_old = start_val delta = 1.0E-3_dp icount = 0 DO WHILE (ABS(delta) > threshold) icount = icount + 1 - energy_val = qp_energy - e_fermi + energy_val = qp_energy - e_fermi - hedin_shift CALL evaluate_pade_function(energy_val, nparam_pade, omega_points_pade, & coeff_pade, sigma_c) !get m_value --> derivative of function diff --git a/tests/QS/regtest-gw/G0W0_H2O_PBE0_Hedin_shift.inp b/tests/QS/regtest-gw/G0W0_H2O_PBE0_Hedin_shift.inp new file mode 100644 index 0000000000..471d17a906 --- /dev/null +++ b/tests/QS/regtest-gw/G0W0_H2O_PBE0_Hedin_shift.inp @@ -0,0 +1,85 @@ +&GLOBAL + PRINT_LEVEL MEDIUM + PROJECT G0W0_H2O_PBE0 + RUN_TYPE ENERGY + &TIMINGS + THRESHOLD 0.01 + &END TIMINGS +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME HFX_BASIS + POTENTIAL_FILE_NAME GTH_POTENTIALS + &MGRID + CUTOFF 100 + REL_CUTOFF 20 + &END MGRID + &POISSON + PERIODIC NONE + POISSON_SOLVER WAVELET + &END POISSON + &QS + EPS_DEFAULT 1.0E-15 + EPS_PGF_ORB 1.0E-30 + METHOD GPW + &END QS + &SCF + EPS_SCF 1.0E-7 + MAX_SCF 100 + SCF_GUESS ATOMIC + &PRINT + &RESTART OFF + &END RESTART + &END PRINT + &END SCF + &XC + &HF + FRACTION 0.2500000 + &SCREENING + EPS_SCHWARZ 1.0E-6 + SCREEN_ON_INITIAL_P FALSE + &END SCREENING + &END HF + &WF_CORRELATION + &RI_RPA + RPA_NUM_QUAD_POINTS 10 + &GW + CORR_MOS_OCC 10 + CORR_MOS_VIRT 10 + HEDIN_SHIFT + &END GW + &END RI_RPA + &END WF_CORRELATION + &XC_FUNCTIONAL PBE + &PBE + SCALE_C 1.0000000 + SCALE_X 0.7500000 + &END PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &SUBSYS + &CELL + ABC [angstrom] 6.000 6.000 6.000 + PERIODIC NONE + &END CELL + &KIND H + BASIS_SET DZVP-GTH + BASIS_SET RI_AUX RI_DZVP-GTH + POTENTIAL GTH-PBE-q1 + &END KIND + &KIND O + BASIS_SET DZVP-GTH + BASIS_SET RI_AUX RI_DZVP-GTH + POTENTIAL GTH-PBE-q6 + &END KIND + &TOPOLOGY + COORD_FILE_FORMAT xyz + COORD_FILE_NAME H2O_gas.xyz + &CENTER_COORDINATES + &END CENTER_COORDINATES + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-gw/TEST_FILES b/tests/QS/regtest-gw/TEST_FILES index ee590cd117..b7620f3a93 100644 --- a/tests/QS/regtest-gw/TEST_FILES +++ b/tests/QS/regtest-gw/TEST_FILES @@ -10,4 +10,5 @@ G0W0_H2O_PBE_pade.inp 78 1e-04 evGW_OH_PBE_svd.inp 11 1e-08 -16.414920515699585 evGW_H2O_PBE_RI_HFX_svd.inp 11 1e-08 -13.112474185078236 scGW0_H2O_PBE.inp 11 1e-08 -17.118441200805574 +G0W0_H2O_PBE0_Hedin_shift.inp 78 1e-04 16.806 #EOF diff --git a/tests/QS/regtest-scalable-gw/01_G0W0_periodic_H2O.inp b/tests/QS/regtest-scalable-gw/01_G0W0_periodic_H2O.inp index 5856a0a8ca..02cd8723e3 100644 --- a/tests/QS/regtest-scalable-gw/01_G0W0_periodic_H2O.inp +++ b/tests/QS/regtest-scalable-gw/01_G0W0_periodic_H2O.inp @@ -40,6 +40,7 @@ KPOINTS 1 2 2 &END DOS &GW + HEDIN_SHIFT FALSE NUM_TIME_FREQ_POINTS 6 &END GW &END BANDSTRUCTURE diff --git a/tests/QS/regtest-scalable-gw/02_G0W0_IH_SOC_LDOS.inp b/tests/QS/regtest-scalable-gw/02_G0W0_IH_SOC_LDOS.inp index 78ced9c159..d58b53ff3e 100644 --- a/tests/QS/regtest-scalable-gw/02_G0W0_IH_SOC_LDOS.inp +++ b/tests/QS/regtest-scalable-gw/02_G0W0_IH_SOC_LDOS.inp @@ -48,6 +48,7 @@ &END DOS &GW EPS_FILTER 1.0E-6 + HEDIN_SHIFT FALSE NUM_TIME_FREQ_POINTS 10 &END GW &SOC diff --git a/tests/QS/regtest-scalable-gw/03_G0W0_bandstructure_IH_chain.inp b/tests/QS/regtest-scalable-gw/03_G0W0_bandstructure_IH_chain.inp index 48a3a9d307..75f09dcdaf 100644 --- a/tests/QS/regtest-scalable-gw/03_G0W0_bandstructure_IH_chain.inp +++ b/tests/QS/regtest-scalable-gw/03_G0W0_bandstructure_IH_chain.inp @@ -50,6 +50,7 @@ &END BANDSTRUCTURE_PATH &GW EPS_FILTER 1.0E-5 + HEDIN_SHIFT FALSE NUM_TIME_FREQ_POINTS 10 &END GW &SOC diff --git a/tests/QS/regtest-scalable-gw/04_G0W0_SOC_TeH_chain_open_shell_kp_extrapol.inp b/tests/QS/regtest-scalable-gw/04_G0W0_SOC_TeH_chain_open_shell_kp_extrapol.inp index 0b77da314a..1946c2b542 100644 --- a/tests/QS/regtest-scalable-gw/04_G0W0_SOC_TeH_chain_open_shell_kp_extrapol.inp +++ b/tests/QS/regtest-scalable-gw/04_G0W0_SOC_TeH_chain_open_shell_kp_extrapol.inp @@ -41,6 +41,7 @@ &GW APPROX_KP_EXTRAPOL EPS_FILTER 1.0E-6 + HEDIN_SHIFT FALSE NUM_TIME_FREQ_POINTS 10 &END GW &SOC diff --git a/tests/QS/regtest-scalable-gw/05_G0W0_SOC_TeH_chain_open_shell.inp b/tests/QS/regtest-scalable-gw/05_G0W0_SOC_TeH_chain_open_shell.inp index ba94657b85..6c0f74e50c 100644 --- a/tests/QS/regtest-scalable-gw/05_G0W0_SOC_TeH_chain_open_shell.inp +++ b/tests/QS/regtest-scalable-gw/05_G0W0_SOC_TeH_chain_open_shell.inp @@ -40,6 +40,7 @@ &BANDSTRUCTURE &GW EPS_FILTER 1.0E-6 + HEDIN_SHIFT FALSE NUM_TIME_FREQ_POINTS 10 &END GW &SOC diff --git a/tests/QS/regtest-scalable-gw/06_G0W0_periodic_H2O_Hedin_shift.inp b/tests/QS/regtest-scalable-gw/06_G0W0_periodic_H2O_Hedin_shift.inp new file mode 100644 index 0000000000..8a80cf852f --- /dev/null +++ b/tests/QS/regtest-scalable-gw/06_G0W0_periodic_H2O_Hedin_shift.inp @@ -0,0 +1,73 @@ +&GLOBAL + PRINT_LEVEL SILENT + PROJECT scalable_GW + RUN_TYPE ENERGY + &TIMINGS + THRESHOLD 0.01 + &END TIMINGS +&END GLOBAL + +&FORCE_EVAL + METHOD Quickstep + &DFT + BASIS_SET_FILE_NAME HFX_BASIS + BASIS_SET_FILE_NAME ./REGTEST_BASIS + POTENTIAL_FILE_NAME GTH_POTENTIALS + SORT_BASIS EXP + &MGRID + CUTOFF 100 + REL_CUTOFF 20 + &END MGRID + &QS + EPS_DEFAULT 1.0E-15 + EPS_PGF_ORB 1.0E-15 + METHOD GPW + &END QS + &SCF + ADDED_MOS -1 + EPS_SCF 1.0E-5 + MAX_SCF 100 + SCF_GUESS ATOMIC + &END SCF + &XC + &XC_FUNCTIONAL PBE + &END XC_FUNCTIONAL + &END XC + &END DFT + &PROPERTIES + &BANDSTRUCTURE + &DOS + KPOINTS 1 2 2 + &END DOS + &GW + HEDIN_SHIFT + NUM_TIME_FREQ_POINTS 6 + &END GW + &END BANDSTRUCTURE + &END PROPERTIES + &SUBSYS + &CELL + ABC [angstrom] 8.000 8.000 8.000 + MULTIPLE_UNIT_CELL 1 1 1 + PERIODIC YZ + &END CELL + &COORD + H 0.0 -0.5 -4.5 + O 0.5 0.0 4.5 + H 0.0 0.5 -4.5 + &END COORD + &KIND H + BASIS_SET ORB DZVP-GTH + BASIS_SET RI_AUX RI-dummy-regtest + POTENTIAL GTH-PBE-q1 + &END KIND + &KIND O + BASIS_SET ORB DZVP-GTH + BASIS_SET RI_AUX RI-dummy-regtest + POTENTIAL GTH-PBE-q6 + &END KIND + &TOPOLOGY + MULTIPLE_UNIT_CELL 1 1 1 + &END TOPOLOGY + &END SUBSYS +&END FORCE_EVAL diff --git a/tests/QS/regtest-scalable-gw/TEST_FILES b/tests/QS/regtest-scalable-gw/TEST_FILES index d2adf0ffef..ede4580900 100644 --- a/tests/QS/regtest-scalable-gw/TEST_FILES +++ b/tests/QS/regtest-scalable-gw/TEST_FILES @@ -7,4 +7,5 @@ 05_G0W0_SOC_TeH_chain_open_shell.inp 106 5e-04 5.178 05_G0W0_SOC_TeH_chain_open_shell.inp 107 5e-04 0.306 05_G0W0_SOC_TeH_chain_open_shell.inp 108 5e-04 5.134 +06_G0W0_periodic_H2O_Hedin_shift.inp 106 1e-03 10.417 #EOF