Workaround flang bug.

This commit is contained in:
Ye Luo 2024-04-16 12:30:53 -05:00
parent ae42f60d96
commit d1e93397e1
1 changed files with 8 additions and 10 deletions

View File

@ -1833,7 +1833,8 @@ PRIVATE :: GetVdWParam
REAL(DP) :: FDV0,FDR0,FCV0,FRR0,FDV1,FCVA1,FCVB1,FDVA2,FDVB2,FDR2,FRR2,FCVA2,FCVB2,FDVi,FDRi(3),FDRii(3,3),FCVi,FRRi(3),FRRii(3,3)
REAL(DP) :: EtsvdW_period,RAB0,edamp,fdamp,fdamp2,D1A,D1B,D2A,D2B,D12A,D12B,dptmp1,dptmp2,vtmp1(3),vtmp2(3)
REAL(DP), DIMENSION(:), ALLOCATABLE :: predveffAdn_period
REAL(DP), DIMENSION(:,:), ALLOCATABLE :: FtsvdW_period,HtsvdW_period
REAL(DP), DIMENSION(:,:), ALLOCATABLE :: FtsvdW_period
REAL(DP) :: HtsvdW_period(3,3)
!
CALL start_clock('tsvdw_energy')
!
@ -1848,7 +1849,7 @@ PRIVATE :: GetVdWParam
! Allocate and initialize periodic contributions to TS-vdW ionic forces, cell forces, and dispersion potential prefactor...
!
ALLOCATE(FtsvdW_period(3,nat)); FtsvdW_period=0.0_DP
ALLOCATE(HtsvdW_period(3,3)); HtsvdW_period=0.0_DP
HtsvdW_period=0.0_DP
ALLOCATE(predveffAdn_period(nat)); predveffAdn_period=0.0_DP
!
! Precompute quantities outside all loops...
@ -1890,14 +1891,13 @@ PRIVATE :: GetVdWParam
!
! Inner loop over atoms B...
!
!$omp parallel private(ibs,RAB0,FRR2,FDR2,FDVA2,FDVB2,FCVB2,FCVA2, &
!$omp parallel do private(ibs,RAB0,FRR2,FDR2,FDVA2,FDVB2,FCVB2,FCVA2, &
!$omp dAB,dAB2,FDVi,FDRi,FDRii,FCVi,FRRi,FRRii,n1,n2,n3,dsAB,dABimg2, &
!$omp dABimg,dABimgn1,dABimgn2,dABimgn5,dABimgn6,edamp,fdamp,fdamp2,dptmp1, &
!$omp dptmp2,i,j,vtmp1,vtmp2,D1A,D2A,D1B,D2B,D12A,D12B,ic), &
!$omp reduction(+:EtsvdW_period),reduction(+:FtsvdW_period), &
!$omp reduction(+:HtsvdW_period),reduction(+:predveffAdn_period)
!$omp do
!$omp reduction(+:EtsvdW_period, FtsvdW_period, HtsvdW_period), &
!$omp reduction(+:predveffAdn_period)
DO ib=1,nat
!
! Connect atom type with species-dependent quantities...
@ -2124,8 +2124,7 @@ PRIVATE :: GetVdWParam
END IF
!
END DO !ib
!$omp end do
!$omp end parallel
!$omp end parallel do
!
END DO !iproc
!
@ -2158,7 +2157,6 @@ PRIVATE :: GetVdWParam
! Deallocate temporary arrays...
!
IF (ALLOCATED(FtsvdW_period)) DEALLOCATE(FtsvdW_period)
IF (ALLOCATED(HtsvdW_period)) DEALLOCATE(HtsvdW_period)
IF (ALLOCATED(predveffAdn_period)) DEALLOCATE(predveffAdn_period)
!
CALL stop_clock('tsvdw_energy')