Skip to content

Commit

Permalink
singles correction (RSE) to RPA
Browse files Browse the repository at this point in the history
  • Loading branch information
rybkinjr committed Aug 23, 2019
1 parent afd7d03 commit 1e6dd03
Show file tree
Hide file tree
Showing 12 changed files with 254 additions and 1 deletion.
33 changes: 32 additions & 1 deletion src/common/bibliography.F
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@ MODULE bibliography
Becke1988b, Migliore2009, Mavros2015, Holmberg2017, Marek2014, &
Stoychev2016, Futera2017, Bailey2006, Papior2017, Lehtola2018, &
Brieuc2016, Barca2018, Scheiber2018, Huang2011, Heaton_Burgess2007, &
Schuett2018, Holmberg2018, Togo2018, Staub2019, Grimme2017, Kondov2007
Schuett2018, Holmberg2018, Togo2018, Staub2019, Grimme2017, Kondov2007, &
Ren2011, Ren2013

CONTAINS

Expand Down Expand Up @@ -4017,6 +4018,36 @@ SUBROUTINE add_all_references()
"ER"), &
DOI="10.1063/1.3700154")

CALL add_reference(key=Ren2011, ISI_record=s2a( &
"AU Ren,Xinguo", &
" Tkatchenko,Aleksandre", &
" Rinke,Patrick", &
" Scgeffler,Matthias", &

This comment has been minimized.

Copy link
@mbanck

mbanck Aug 24, 2019

Contributor

@rybkinjr typo, that should be "Scheffler", same for the Ren2013 entry

"TI Beyond the Random-Phase Approximation for the Electron Correlation Energy: ", &
" The Importance of Single Excitations", &
"SO PHYSICAL REVIEW LETTERS", &
"PY 2011", &
"VL 106", &
"IS 15", &
"BP 153003", &
"ER"), &
DOI="10.1103/PhysRevLett.106.153003")

CALL add_reference(key=Ren2013, ISI_record=s2a( &
"AU Ren,Xinguo", &
" Rinke,Patrick", &
" Scuseria,Gustavo", &
" Scgeffler,Matthias", &
"TI Renormalized second-order perturbation theory for the electron correlation energy: ", &
" Concept, implementation, and benchmarks", &
"SO PHYSICAL REVIEW B", &
"PY 2013", &
"VL 88", &
"IS 3", &
"BP 035120", &
"ER"), &
DOI="10.1103/PhysRevB.88.035120")

END SUBROUTINE add_all_references

END MODULE bibliography
11 changes: 11 additions & 0 deletions src/input_cp2k_mp2.F
Original file line number Diff line number Diff line change
Expand Up @@ -582,6 +582,17 @@ SUBROUTINE create_ri_rpa(section)
CALL section_add_keyword(section, keyword)
CALL keyword_release(keyword)

CALL keyword_create( &
keyword, __LOCATION__, &
name="RSE", &
variants=(/"SE"/), &
description="Decide whether to add singles correction.", &
usage="RI_AXK", &
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="ADMM", &
Expand Down
9 changes: 9 additions & 0 deletions src/mp2.F
Original file line number Diff line number Diff line change
Expand Up @@ -723,13 +723,22 @@ SUBROUTINE mp2_main(qs_env, calc_forces)
IF (mp2_env%ri_rpa%do_ri_axk) THEN
IF (unit_nr > 0) WRITE (unit_nr, '(T3,A,T56,F25.14)') 'RI-RPA-AXK energy=', mp2_env%ri_rpa%ener_axk
ENDIF
IF (mp2_env%ri_rpa%do_rse) THEN
IF (unit_nr > 0) WRITE (unit_nr, '(T3,A,T56,F25.14)') 'Diagonal singles correction (dRSE) = ', &
mp2_env%ri_rpa%rse_corr_diag
IF (unit_nr > 0) WRITE (unit_nr, '(T3,A,T56,F25.14)') 'Full singles correction (RSE) =', &
mp2_env%ri_rpa%rse_corr
ENDIF
END IF
IF (unit_nr > 0) WRITE (unit_nr, *)
! we have it !!!!
IF (mp2_env%ri_rpa%do_ri_axk) THEN
Emp2 = Emp2+mp2_env%ri_rpa%ener_axk
ENDIF
IF (mp2_env%ri_rpa%do_rse) THEN
Emp2 = Emp2+mp2_env%ri_rpa%rse_corr
ENDIF
energy%mp2 = Emp2
energy%total = energy%total+Emp2
Expand Down
11 changes: 11 additions & 0 deletions src/mp2_gpw.F
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ MODULE mp2_gpw
USE qs_rho_types, ONLY: qs_rho_get,&
qs_rho_type
USE rpa_main, ONLY: rpa_ri_compute_en
USE rpa_rse, ONLY: rse_energy
USE task_list_methods, ONLY: generate_qs_task_list
USE task_list_types, ONLY: allocate_task_list,&
deallocate_task_list,&
Expand Down Expand Up @@ -739,6 +740,12 @@ SUBROUTINE mp2_gpw_main(qs_env, mp2_env, Emp2, Emp2_Cou, Emp2_EX, Emp2_S, Emp2_T
mp2_env%mp2_gpw%eps_filter, BIb_C_beta, homo_beta, Eigenval_beta, &
gd_B_virtual_beta, &
mo_coeff_beta, BIb_C_gw_beta, gw_corr_lev_occ_beta, gw_corr_lev_virt_beta)

IF (mp2_env%ri_rpa%do_rse) &
CALL rse_energy(qs_env, mp2_env, para_env, dft_control, &
mo_coeff, nmo, homo, Eigenval, &
Eigenval_beta, homo_beta, mo_coeff_beta)

ELSE
CALL rpa_ri_compute_en(qs_env, Emp2, mp2_env, BIb_C, BIb_C_gw, BIb_C_bse_ij, BIb_C_bse_ab, &
para_env, para_env_sub_RPA, color_sub, &
Expand All @@ -753,6 +760,10 @@ SUBROUTINE mp2_gpw_main(qs_env, mp2_env, Emp2, Emp2_Cou, Emp2_EX, Emp2_S, Emp2_T
starts_array_mc_t, ends_array_mc_t, &
mat_3c_overl_int_mao_for_occ, mat_3c_overl_int_mao_for_virt, &
mp2_env%mp2_gpw%eps_filter)

IF (mp2_env%ri_rpa%do_rse) &
CALL rse_energy(qs_env, mp2_env, para_env, dft_control, &
mo_coeff, nmo, homo, Eigenval)
END IF

IF (do_im_time) THEN
Expand Down
3 changes: 3 additions & 0 deletions src/mp2_setup.F
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,9 @@ SUBROUTINE read_mp2_section(input, mp2_env)
CALL section_vals_val_get(mp2_section, "RI_RPA%AXK", &
l_val=mp2_env%ri_rpa%do_ri_axk)

CALL section_vals_val_get(mp2_section, "RI_RPA%RSE", &
l_val=mp2_env%ri_rpa%do_rse)

CALL section_vals_val_get(mp2_section, "RI_RPA%RI_G0W0%CORR_MOS_OCC", &
i_val=mp2_env%ri_g0w0%corr_mos_occ)
CALL section_vals_val_get(mp2_section, "RI_RPA%RI_G0W0%CORR_MOS_VIRT", &
Expand Down
3 changes: 3 additions & 0 deletions src/mp2_types.F
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,12 @@ MODULE mp2_types
LOGICAL :: do_admm
LOGICAL :: do_RI_overlap
LOGICAL :: do_ri_axk
LOGICAL :: do_rse
TYPE(dbcsr_type), POINTER :: mo_coeff_o, &
mo_coeff_v
REAL(KIND=dp) :: ener_axk
REAL(KIND=dp) :: rse_corr_diag
REAL(KIND=dp) :: rse_corr
END TYPE

TYPE ri_rpa_im_time_util
Expand Down
6 changes: 6 additions & 0 deletions src/rpa_main.F
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ MODULE rpa_main
USE bibliography, ONLY: Bates2013,&
DelBen2013,&
DelBen2015,&
Ren2011,&
Ren2013,&
cite_reference
USE bse, ONLY: do_subspace_iterations,&
mult_B_with_W_and_fill_local_3c_arrays
Expand Down Expand Up @@ -260,6 +262,10 @@ SUBROUTINE rpa_ri_compute_en(qs_env, Erpa, mp2_env, BIb_C, BIb_C_gw, BIb_C_bse_i
CALL cite_reference(Bates2013)

ENDIF
IF (mp2_env%ri_rpa%do_rse) THEN
CALL cite_reference(Ren2011)
CALL cite_reference(Ren2013)
ENDIF

my_open_shell = .FALSE.
IF (PRESENT(BIb_C_beta) .AND. &
Expand Down
85 changes: 85 additions & 0 deletions tests/QS/regtest-ri-rpa-rse/Cubic_RPA_RSE_H2.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
&GLOBAL
PROJECT RI_RPA_cubic_RSE_H2
PRINT_LEVEL MEDIUM
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END
&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 MT
&END POISSON
&QS
METHOD GPW
EPS_DEFAULT 1.0E-15
EPS_PGF_ORB 1.0E-30
&END QS
&SCF
SCF_GUESS ATOMIC
EPS_SCF 1.0E-7
MAX_SCF 100
&PRINT
&RESTART OFF
&END
&END
&END SCF
&XC
&XC_FUNCTIONAL PBE
&END XC_FUNCTIONAL
&WF_CORRELATION
METHOD RI_RPA_GPW
RI OVERLAP
&WFC_GPW
! normally, this EPS_FILTER controls the accuracy and
! the time for the cubic_scaling RPA calculation
EPS_FILTER 1.0E-4
EPS_GRID 1.0E-4
&END
! ERI_METHOD MME
ERI_METHOD OS
IM_TIME
&RI_RPA
RPA_NUM_QUAD_POINTS 6
MINIMAX
RSE .TRUE.
&HF
FRACTION 1.0000000
&SCREENING
EPS_SCHWARZ 1.0E-8
SCREEN_ON_INITIAL_P FALSE
&END SCREENING
&END HF
&END RI_RPA
MEMORY 200.
NUMBER_PROC 1
&END
&END XC
&END DFT
&SUBSYS
&CELL
ABC [angstrom] 9.000 9.000 9.000
PERIODIC NONE
&END CELL
&KIND H
BASIS_SET DZVP-GTH
BASIS_SET RI_AUX RI_DZVP-GTH
POTENTIAL GTH-PBE-q1
&END KIND
&TOPOLOGY
COORD_FILE_NAME H2.xyz
COORD_FILE_FORMAT xyz
&CENTER_COORDINATES
&END
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
4 changes: 4 additions & 0 deletions tests/QS/regtest-ri-rpa-rse/H2.xyz
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
2

H 0.000000 0.000000 -0.111000
H 0.000000 -0.744000 0.495000
86 changes: 86 additions & 0 deletions tests/QS/regtest-ri-rpa-rse/RI_RPA_RSE_H2_minus.inp
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
&GLOBAL
PROJECT RI_RPA_RSE_H2_minus
PRINT_LEVEL MEDIUM
RUN_TYPE ENERGY
&TIMINGS
THRESHOLD 0.01
&END
&END GLOBAL
&FORCE_EVAL
METHOD Quickstep
&DFT
UKS .TRUE.
MULTIPLICITY 2
CHARGE -1
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
METHOD GPW
EPS_DEFAULT 1.0E-15
EPS_PGF_ORB 1.0E-30
&END QS
&SCF
SCF_GUESS ATOMIC
EPS_SCF 1.0E-7
MAX_SCF 100
&PRINT
&RESTART OFF
&END
&END
&END SCF
&XC
&XC_FUNCTIONAL PBE
&END XC_FUNCTIONAL
&WF_CORRELATION
METHOD RI_RPA_GPW
&WFC_GPW
CUTOFF 100
REL_CUTOFF 20
&END
&RI_RPA
RPA_NUM_QUAD_POINTS 40
RSE .TRUE.
&HF
FRACTION 1.0000000
&SCREENING
EPS_SCHWARZ 1.0E-8
SCREEN_ON_INITIAL_P FALSE
&END SCREENING
&END HF
&END RI_RPA
MEMORY 200.
NUMBER_PROC 1
&END
&END XC
&END DFT
&SUBSYS
&CELL
ABC [angstrom] 8.000 8.000 8.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_NAME H2.xyz
COORD_FILE_FORMAT xyz
&CENTER_COORDINATES
&END
&END TOPOLOGY
&END SUBSYS
&END FORCE_EVAL
3 changes: 3 additions & 0 deletions tests/QS/regtest-ri-rpa-rse/TEST_FILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
RI_RPA_RSE_H2_minus.inp 11 1e-09 -1.770179828237745
Cubic_RPA_RSE_H2.inp 11 1e-09 -3.265455671390318
#EOF
1 change: 1 addition & 0 deletions tests/TEST_DIRS
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
QS/regtest-negf
QS/regtest-negf-fft fftw3
QS/regtest-ri-rpa-axk libint
QS/regtest-ri-rpa-rse libint
QS/regtest-cdft-hirshfeld-2 parallel mpiranks>1
QS/regtest-cdft-hirshfeld
SIRIUS/regtest-1 sirius
Expand Down

0 comments on commit 1e6dd03

Please sign in to comment.