Skip to content

Commit 9f58d81

Browse files
committed
typo and OMP bug
1 parent a4791e5 commit 9f58d81

File tree

2 files changed

+39
-31
lines changed

2 files changed

+39
-31
lines changed

src/common/bibliography.F

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4022,7 +4022,7 @@ SUBROUTINE add_all_references()
40224022
"AU Ren,Xinguo", &
40234023
" Tkatchenko,Aleksandre", &
40244024
" Rinke,Patrick", &
4025-
" Scgeffler,Matthias", &
4025+
" Scheffler,Matthias", &
40264026
"TI Beyond the Random-Phase Approximation for the Electron Correlation Energy: ", &
40274027
" The Importance of Single Excitations", &
40284028
"SO PHYSICAL REVIEW LETTERS", &
@@ -4037,7 +4037,7 @@ SUBROUTINE add_all_references()
40374037
"AU Ren,Xinguo", &
40384038
" Rinke,Patrick", &
40394039
" Scuseria,Gustavo", &
4040-
" Scgeffler,Matthias", &
4040+
" Scheffler,Matthias", &
40414041
"TI Renormalized second-order perturbation theory for the electron correlation energy: ", &
40424042
" Concept, implementation, and benchmarks", &
40434043
"SO PHYSICAL REVIEW B", &

src/rpa_rse.F

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ SUBROUTINE rse_energy(qs_env, mp2_env, para_env, dft_control, &
106106
nrow_local
107107
INTEGER, DIMENSION(:), POINTER :: col_indices, row_indices
108108
LOGICAL :: beta, do_hfx, hfx_treat_lsd_in_core
109-
REAL(KIND=dp) :: coeff, rse_corr, rse_corr_beta, rse_term
109+
REAL(KIND=dp) :: coeff, rse_corr, rse_corr_beta
110110
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: diag_diff
111111
TYPE(cp_blacs_env_type), POINTER :: blacs_env
112112
TYPE(cp_fm_struct_type), POINTER :: fm_struct_tmp
@@ -274,17 +274,16 @@ SUBROUTINE rse_energy(qs_env, mp2_env, para_env, dft_control, &
274274

275275
! Compute the correction
276276
rse_corr = 0.0_dp
277-
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global, rse_term) &
278-
!$OMP SHARED(rse_corr,ncol_local,nrow_local,col_indices,row_indices,diag_diff, eigenval, fm_X_mo,homo)
277+
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global) &
278+
!$OMP REDUCTION(+: rse_corr) &
279+
!$OMP SHARED(ncol_local,nrow_local,col_indices,row_indices,diag_diff, eigenval, fm_X_mo,homo)
279280
DO jjB = 1, ncol_local
280281
j_global = col_indices(jjB)
281282
DO iiB = 1, nrow_local
282283
i_global = row_indices(iiB)
283284
IF ((i_global .LE. homo) .AND. (j_global .GT. homo)) THEN
284-
rse_term = 0.0_dp
285-
rse_term = fm_X_mo%local_data(iib, jjb)**2.0_dp/ &
285+
rse_corr = rse_corr+fm_X_mo%local_data(iib, jjb)**2.0_dp/ &
286286
(eigenval(i_global)-eigenval(j_global)-diag_diff(i_global)+diag_diff(j_global))
287-
rse_corr = rse_corr+rse_term
288287
ENDIF
289288
END DO
290289
END DO
@@ -317,17 +316,17 @@ SUBROUTINE rse_energy(qs_env, mp2_env, para_env, dft_control, &
317316
!$OMP END PARALLEL DO
318317
CALL mp_sum(diag_diff, para_env%group)
319318

320-
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global, rse_term) &
321-
!$OMP SHARED(rse_corr_beta,ncol_local,nrow_local,col_indices,row_indices,diag_diff,eigenval_beta,fm_X_mo_Beta,homo_beta)
319+
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global) &
320+
!$OMP REDUCTION(+: rse_corr_beta) &
321+
!$OMP SHARED(ncol_local,nrow_local,col_indices,row_indices,diag_diff,eigenval_beta,fm_X_mo_Beta,homo_beta)
322322
DO jjB = 1, ncol_local
323323
j_global = col_indices(jjB)
324324
DO iiB = 1, nrow_local
325325
i_global = row_indices(iiB)
326-
rse_term = 0.0_dp
327-
IF ((i_global .LE. homo_beta) .AND. (j_global .GT. homo_beta)) &
328-
rse_term = fm_X_mo_beta%local_data(iib, jjb)**2.0_dp/ &
329-
(eigenval_beta(i_global)-eigenval_beta(j_global)-diag_diff(i_global)+diag_diff(j_global))
330-
rse_corr_beta = rse_corr_beta+rse_term
326+
IF ((i_global .LE. homo_beta) .AND. (j_global .GT. homo_beta)) THEN
327+
rse_corr_beta = rse_corr_beta+fm_X_mo_beta%local_data(iib, jjb)**2.0_dp/ &
328+
(eigenval_beta(i_global)-eigenval_beta(j_global)-diag_diff(i_global)+diag_diff(j_global))
329+
ENDIF
331330
END DO
332331
END DO
333332
!$OMP END PARALLEL DO
@@ -605,8 +604,8 @@ END SUBROUTINE xc_contribution
605604
!> \param eigenval_beta ...
606605
!> \param homo_beta ...
607606
! **************************************************************************************************
608-
SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, blacs_env, &
609-
rse_corr, fm_F_mo_beta, eigenval_beta, homo_beta)
607+
SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, &
608+
blacs_env, rse_corr, fm_F_mo_beta, eigenval_beta, homo_beta)
610609
TYPE(cp_fm_type), POINTER :: fm_F_mo
611610
REAL(KIND=dp), DIMENSION(:) :: Eigenval
612611
INTEGER :: dimen, homo
@@ -624,7 +623,7 @@ SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, blacs_env, &
624623
virtual_beta
625624
INTEGER, DIMENSION(:), POINTER :: col_indices, row_indices
626625
LOGICAL :: alpha_beta
627-
REAL(KIND=dp) :: rse_corr_beta, rse_term
626+
REAL(KIND=dp) :: rse_corr_beta
628627
REAL(KIND=dp), ALLOCATABLE, DIMENSION(:) :: eig_o, eig_semi_can, eig_v
629628
TYPE(cp_fm_struct_type), POINTER :: fm_struct_tmp
630629
TYPE(cp_fm_type), POINTER :: fm_F_oo, fm_F_ov, fm_F_vv, fm_O, fm_tmp, &
@@ -648,8 +647,10 @@ SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, blacs_env, &
648647
j_global = col_indices(jjB)
649648
DO iiB = 1, nrow_local
650649
i_global = row_indices(iiB)
651-
IF (i_global .EQ. j_global) fm_F_mo%local_data(iib, jjb) = &
652-
fm_F_mo%local_data(iib, jjb)+eigenval(i_global)
650+
IF (i_global .EQ. j_global) THEN
651+
fm_F_mo%local_data(iib, jjb) = &
652+
fm_F_mo%local_data(iib, jjb)+eigenval(i_global)
653+
ENDIF
653654
END DO
654655
END DO
655656
!$OMP END PARALLEL DO
@@ -706,6 +707,7 @@ SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, blacs_env, &
706707
t_firstrow=1, t_firstcol=1)
707708

708709
! Diagonalize occupied-occupied and virtual-virtual matrices
710+
709711
ALLOCATE (eig_o(homo))
710712
ALLOCATE (eig_v(virtual))
711713
eig_v = 0.0_dp
@@ -734,9 +736,17 @@ SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, blacs_env, &
734736
s_firstrow=1, s_firstcol=homo+1, &
735737
t_firstrow=1, t_firstcol=1)
736738

739+
CALL cp_fm_get_info(matrix=fm_F_ov, &
740+
nrow_local=nrow_local, &
741+
ncol_local=ncol_local, &
742+
row_indices=row_indices, &
743+
col_indices=col_indices)
744+
737745
CALL cp_gemm(transa='N', transb='N', m=homo, n=virtual, k=homo, alpha=1.0_dp, &
738746
matrix_a=fm_O, matrix_b=fm_F_ov, beta=0.0_dp, matrix_c=fm_tmp)
739747

748+
CALL cp_fm_set_all(fm_F_ov, 0.0_dp)
749+
740750
CALL cp_gemm(transa='N', transb='N', m=homo, n=virtual, k=virtual, alpha=1.0_dp, &
741751
matrix_a=fm_tmp, matrix_b=fm_U, beta=0.0_dp, matrix_c=fm_F_ov)
742752

@@ -748,16 +758,15 @@ SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, blacs_env, &
748758
col_indices=col_indices)
749759

750760
rse_corr = 0.0_dp
751-
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global,rse_term) &
752-
!$OMP SHARED(ncol_local,nrow_local,col_indices,row_indices,fm_F_ov,eig_semi_can,rse_corr,homo)
761+
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global) &
762+
!$OMP REDUCTION(+:rse_corr) &
763+
!$OMP SHARED(ncol_local,nrow_local,col_indices,row_indices,fm_F_ov,eig_semi_can,homo)
753764
DO jjB = 1, ncol_local
754765
j_global = col_indices(jjB)
755766
DO iiB = 1, nrow_local
756767
i_global = row_indices(iiB)
757-
rse_term = 0.0_dp
758-
rse_term = fm_F_ov%local_data(iib, jjb)**2.0_dp/ &
768+
rse_corr = rse_corr+fm_F_ov%local_data(iib, jjb)**2.0_dp/ &
759769
(eig_semi_can(i_global)-eig_semi_can(j_global+homo))
760-
rse_corr = rse_corr+rse_term
761770
END DO
762771
END DO
763772
!$OMP END PARALLEL DO
@@ -848,16 +857,15 @@ SUBROUTINE non_diag_rse(fm_F_mo, eigenval, dimen, homo, para_env, blacs_env, &
848857
row_indices=row_indices, &
849858
col_indices=col_indices)
850859
rse_corr_beta = 0.0_dp
851-
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global,rse_term) &
852-
!$OMP SHARED(ncol_local,nrow_local,col_indices,row_indices,fm_F_ov,eig_semi_can,rse_corr_beta,homo_beta)
860+
!$OMP PARALLEL DO DEFAULT(NONE) PRIVATE(jjB,iiB,i_global,j_global) &
861+
!$OMP REDUCTION(+:rse_corr_beta) &
862+
!$OMP SHARED(ncol_local,nrow_local,col_indices,row_indices,fm_F_ov,eig_semi_can,homo_beta)
853863
DO jjB = 1, ncol_local
854864
j_global = col_indices(jjB)
855865
DO iiB = 1, nrow_local
856866
i_global = row_indices(iiB)
857-
rse_term = 0.0_dp
858-
rse_term = fm_F_ov%local_data(iib, jjb)**2.0_dp/ &
859-
(eig_semi_can(i_global)-eig_semi_can(j_global+homo_beta))
860-
rse_corr_beta = rse_corr_beta+rse_term
867+
rse_corr_beta = rse_corr_beta+fm_F_ov%local_data(iib, jjb)**2.0_dp/ &
868+
(eig_semi_can(i_global)-eig_semi_can(j_global+homo_beta))
861869
END DO
862870
END DO
863871
!$OMP END PARALLEL DO

0 commit comments

Comments
 (0)