diff --git a/_multibuild b/_multibuild index 47f968d..a7a13e1 100644 --- a/_multibuild +++ b/_multibuild @@ -3,5 +3,5 @@ openmpi1 openmpi2 openmpi3 - mvapich2 + openmpi4 diff --git a/backports-6.4.1.git-diff b/backports-6.4.1.git-diff deleted file mode 100644 index a4db98b..0000000 --- a/backports-6.4.1.git-diff +++ /dev/null @@ -1,566 +0,0 @@ -diff --git a/FFTXlib/fft_types.f90 b/FFTXlib/fft_types.f90 -index c0d56bf4e..8d66c2e8a 100644 ---- a/FFTXlib/fft_types.f90 -+++ b/FFTXlib/fft_types.f90 -@@ -853,6 +853,7 @@ CONTAINS - SUBROUTINE realspace_grid_init( dfft, at, bg, gcutm, fft_fact ) - ! - ! ... Sets optimal values for dfft%nr[123] and dfft%nr[123]x -+ ! ... If input dfft%nr[123] are non-zero, leaves them unchanged - ! ... If fft_fact is present, force nr[123] to be multiple of fft_fac([123]) - ! - USE fft_support, only: good_fft_dimension, good_fft_order -@@ -876,28 +877,29 @@ CONTAINS - dfft%nr2 = int ( sqrt (gcutm) * sqrt (at(1, 2)**2 + at(2, 2)**2 + at(3, 2)**2) ) + 1 - dfft%nr3 = int ( sqrt (gcutm) * sqrt (at(1, 3)**2 + at(2, 3)**2 + at(3, 3)**2) ) + 1 - -- !write (6,*) sqrt(gcutm)*sqrt(at(1,1)**2 + at(2,1)**2 + at(3,1)**2) , dfft%nr1 -- !write (6,*) sqrt(gcutm)*sqrt(at(1,2)**2 + at(2,2)**2 + at(3,2)**2) , dfft%nr2 -- !write (6,*) sqrt(gcutm)*sqrt(at(1,3)**2 + at(2,3)**2 + at(3,3)**2) , dfft%nr3 -+#if defined (__DEBUG) -+ write (6,*) sqrt(gcutm)*sqrt(at(1,1)**2 + at(2,1)**2 + at(3,1)**2) , dfft%nr1 -+ write (6,*) sqrt(gcutm)*sqrt(at(1,2)**2 + at(2,2)**2 + at(3,2)**2) , dfft%nr2 -+ write (6,*) sqrt(gcutm)*sqrt(at(1,3)**2 + at(2,3)**2 + at(3,3)**2) , dfft%nr3 -+#endif - ! - CALL grid_set( dfft, bg, gcutm, dfft%nr1, dfft%nr2, dfft%nr3 ) - ! -+ IF ( PRESENT(fft_fact) ) THEN -+ dfft%nr1 = good_fft_order( dfft%nr1, fft_fact(1) ) -+ dfft%nr2 = good_fft_order( dfft%nr2, fft_fact(2) ) -+ dfft%nr3 = good_fft_order( dfft%nr3, fft_fact(3) ) -+ ELSE -+ dfft%nr1 = good_fft_order( dfft%nr1 ) -+ dfft%nr2 = good_fft_order( dfft%nr2 ) -+ dfft%nr3 = good_fft_order( dfft%nr3 ) -+ ENDIF - #if defined (__DEBUG) - ELSE - WRITE( stdout, '( /, 3X,"Info: using nr1, nr2, nr3 values from input" )' ) - #endif - END IF -- -- IF (PRESENT(fft_fact)) THEN -- dfft%nr1 = good_fft_order( dfft%nr1, fft_fact(1) ) -- dfft%nr2 = good_fft_order( dfft%nr2, fft_fact(2) ) -- dfft%nr3 = good_fft_order( dfft%nr3, fft_fact(3) ) -- ELSE -- dfft%nr1 = good_fft_order( dfft%nr1 ) -- dfft%nr2 = good_fft_order( dfft%nr2 ) -- dfft%nr3 = good_fft_order( dfft%nr3 ) -- END IF -- -+ ! - dfft%nr1x = good_fft_dimension( dfft%nr1 ) - dfft%nr2x = dfft%nr2 - dfft%nr3x = good_fft_dimension( dfft%nr3 ) -diff --git a/PHonon/PH/bcast_ph_input.f90 b/PHonon/PH/bcast_ph_input.f90 -index 6d8078c1b..4b454872a 100644 ---- a/PHonon/PH/bcast_ph_input.f90 -+++ b/PHonon/PH/bcast_ph_input.f90 -@@ -42,6 +42,7 @@ subroutine bcast_ph_input ( ) - USE YAMBO, ONLY : elph_yambo,dvscf_yambo - ! YAMBO < - USE elph_tetra_mod, ONLY : lshift_q -+ USE ldaU_ph, ONLY : read_dns_bare, d2ns_type - - implicit none - ! -@@ -67,6 +68,7 @@ subroutine bcast_ph_input ( ) - call mp_bcast (only_wfc, meta_ionode_id, world_comm ) - call mp_bcast (only_init, meta_ionode_id, world_comm ) - call mp_bcast (search_sym, meta_ionode_id, world_comm) -+ call mp_bcast (read_dns_bare, meta_ionode_id, world_comm) - ! YAMBO > - call mp_bcast (elph_yambo, meta_ionode_id, world_comm) - call mp_bcast (dvscf_yambo, meta_ionode_id, world_comm) -@@ -119,6 +121,7 @@ subroutine bcast_ph_input ( ) - call mp_bcast (tmp_dir, meta_ionode_id, world_comm ) - call mp_bcast (prefix, meta_ionode_id, world_comm ) - call mp_bcast (electron_phonon, meta_ionode_id, world_comm ) -+ call mp_bcast (d2ns_type, meta_ionode_id, world_comm ) - ! - ! derived type (one bit at a time) - ! -diff --git a/PHonon/PH/dynmat_hub_bare.f90 b/PHonon/PH/dynmat_hub_bare.f90 -index 0d57abcbc..22b932cb6 100644 ---- a/PHonon/PH/dynmat_hub_bare.f90 -+++ b/PHonon/PH/dynmat_hub_bare.f90 -@@ -82,6 +82,8 @@ SUBROUTINE dynmat_hub_bare - ! - CALL start_clock ( 'dynmat_hub_bare' ) - ! -+ ios = 0 -+ ! - ldim = 2*Hubbard_lmax + 1 - ! - ALLOCATE (dyn_hub_bare(3*nat,3*nat)) -diff --git a/PHonon/PH/dynmat_hub_scf.f90 b/PHonon/PH/dynmat_hub_scf.f90 -index 363327c2b..86c51f37c 100644 ---- a/PHonon/PH/dynmat_hub_scf.f90 -+++ b/PHonon/PH/dynmat_hub_scf.f90 -@@ -118,7 +118,7 @@ SUBROUTINE dynmat_hub_scf (irr, nu_i0, nper) - ! interrupted before the call of this routine) - ! - IF (rec_code_read==10) THEN -- WRITE(stdout,*) 'rec_code_read', rec_code_read -+ !WRITE(stdout,*) 'rec_code_read', rec_code_read - CALL dnsq_scf (nper, lmetq0, nu_i0, irr, .true.) - ENDIF - ! -diff --git a/PHonon/PH/phq_readin.f90 b/PHonon/PH/phq_readin.f90 -index 57ed4dd3e..088044227 100644 ---- a/PHonon/PH/phq_readin.f90 -+++ b/PHonon/PH/phq_readin.f90 -@@ -119,7 +119,7 @@ SUBROUTINE phq_readin() - elph_nbnd_min, elph_nbnd_max, el_ph_ngauss, & - el_ph_nsigma, el_ph_sigma, electron_phonon, & - q_in_band_form, q2d, qplot, low_directory_check, & -- lshift_q -+ lshift_q, read_dns_bare, d2ns_type - - ! tr2_ph : convergence threshold - ! amass : atomic masses -diff --git a/PP/src/ppacf.f90 b/PP/src/ppacf.f90 -index c7b5e9ef6..a55d6649f 100644 ---- a/PP/src/ppacf.f90 -+++ b/PP/src/ppacf.f90 -@@ -58,6 +58,7 @@ PROGRAM do_ppacf - USE vdW_DF_scale, ONLY : xc_vdW_DF_ncc, xc_vdW_DF_spin_ncc, & - get_q0cc_on_grid, get_q0cc_on_grid_spin - USE vasp_xml, ONLY : readxmlfile_vasp -+ USE symm_base, ONLY : fft_fact - - ! - IMPLICIT NONE -@@ -217,9 +218,7 @@ PROGRAM do_ppacf - IF (code_num == 1) THEN - ! - tmp_dir=TRIM(outdir) --! CALL read_xml_file_internal(.TRUE.) - CALL read_file() -- - ! Check exchange correlation functional - iexch = get_iexch() - icorr = get_icorr() -@@ -685,6 +684,7 @@ PROGRAM do_ppacf - DEALLOCATE ( igk_buf, gk ) - ! - ! CALL setup() -+ fft_fact(:)=1 - CALL exx_grid_init() - CALL exx_mp_init() - CALL exx_div_check() -diff --git a/PP/src/pw2wannier90.f90 b/PP/src/pw2wannier90.f90 -index d9e2c870e..5d977a4f0 100644 ---- a/PP/src/pw2wannier90.f90 -+++ b/PP/src/pw2wannier90.f90 -@@ -1162,7 +1162,7 @@ SUBROUTINE pw2wan_set_symm (nsym, sr, tvec) - ! - ! Uses nkqs and index_sym from module pw2wan, computes rir - ! -- USE symm_base, ONLY : s, ftau, allfrac -+ USE symm_base, ONLY : s, ft, allfrac - USE fft_base, ONLY : dffts - USE cell_base, ONLY : at, bg - USE wannier, ONLY : rir, read_sym -@@ -1174,8 +1174,8 @@ SUBROUTINE pw2wan_set_symm (nsym, sr, tvec) - INTEGER , intent(in) :: nsym - REAL(DP) , intent(in) :: sr(3,3,nsym), tvec(3,nsym) - REAL(DP) :: st(3,3), v(3) -- INTEGER, allocatable :: s_in(:,:,:), ftau_in(:,:) -- !REAL(DP), allocatable:: ftau_in(:,:) -+ INTEGER, allocatable :: s_in(:,:,:) -+ REAL(DP), allocatable:: ft_in(:,:) - INTEGER :: nxxs, nr1,nr2,nr3, nr1x,nr2x,nr3x - INTEGER :: ikq, isym, i,j,k, ri,rj,rk, ir - LOGICAL :: ispresent(nsym) -@@ -1189,7 +1189,7 @@ SUBROUTINE pw2wan_set_symm (nsym, sr, tvec) - nxxs = nr1x*nr2x*nr3x - ! - ! sr -> s -- ALLOCATE(s_in(3,3,nsym), ftau_in(3,nsym)) -+ ALLOCATE(s_in(3,3,nsym), ft_in(3,nsym)) - IF(read_sym ) THEN - IF(allfrac) THEN - call errore("pw2wan_set_symm", "use_all_frac = .true. + read_sym = .true. not supported", 1) -@@ -1199,17 +1199,17 @@ SUBROUTINE pw2wan_set_symm (nsym, sr, tvec) - st = transpose( matmul(transpose(bg), transpose(sr(:,:,isym))) ) - s_in(:,:,isym) = nint( matmul(transpose(at), st) ) - v = matmul(transpose(bg), tvec(:,isym)) -- ftau_in(1,isym) = nint(v(1)*nr1) -- ftau_in(2,isym) = nint(v(2)*nr2) -- ftau_in(3,isym) = nint(v(3)*nr3) -+ ft_in(1,isym) = v(1) -+ ft_in(2,isym) = v(2) -+ ft_in(3,isym) = v(3) - END DO -- IF( any(s(:,:,1:nsym) /= s_in(:,:,1:nsym)) .or. any(ftau_in(:,1:nsym) /= ftau(:,1:nsym)) ) THEN -+ IF( any(s(:,:,1:nsym) /= s_in(:,:,1:nsym)) .or. any(ft_in(:,1:nsym) /= ft(:,1:nsym)) ) THEN - write(stdout,*) " Input symmetry is different from crystal symmetry" - write(stdout,*) - END IF - ELSE - s_in = s(:,:,1:nsym) -- ftau_in = ftau(:,1:nsym) -+ ft_in = ft(:,1:nsym) - END IF - ! - IF(.not. allocated(rir)) ALLOCATE(rir(nxxs,nsym)) -@@ -1240,7 +1240,7 @@ SUBROUTINE pw2wan_set_symm (nsym, sr, tvec) - ENDDO - ENDDO - ENDDO -- DEALLOCATE(s_in, ftau_in) -+ DEALLOCATE(s_in, ft_in) - END SUBROUTINE pw2wan_set_symm - - !----------------------------------------------------------------------- -@@ -4142,7 +4142,7 @@ SUBROUTINE write_parity - ! 0-th Order - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! 1 -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! 1 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE -@@ -4150,21 +4150,21 @@ SUBROUTINE write_parity - ! 1st Order - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! x -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! x - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! y -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! y - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 1.d0 <= eps6) ) THEN ! z -+ (abs(g_abc(3,igv) - 1.d0) <= eps6) ) THEN ! z - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE -@@ -4172,63 +4172,63 @@ SUBROUTINE write_parity - ! 2nd Order - IF ( (abs(g_abc(1,igv) - 2.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! x^2 -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! x^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! xy -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! xy - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) + 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! xy -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! xy - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 1.d0 <= eps6) ) THEN ! xz -+ (abs(g_abc(3,igv) - 1.d0) <= eps6) ) THEN ! xz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 1.d0 <= eps6) ) THEN ! xz -+ (abs(g_abc(3,igv) + 1.d0) <= eps6) ) THEN ! xz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 2.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! y^2 -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! y^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 1.d0 <= eps6) ) THEN ! yz -+ (abs(g_abc(3,igv) - 1.d0) <= eps6) ) THEN ! yz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 1.d0 <= eps6) ) THEN ! yz -+ (abs(g_abc(3,igv) + 1.d0) <= eps6) ) THEN ! yz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 2.d0 <= eps6) ) THEN ! z^2 -+ (abs(g_abc(3,igv) - 2.d0) <= eps6) ) THEN ! z^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE -@@ -4236,133 +4236,133 @@ SUBROUTINE write_parity - ! 3rd Order - IF ( (abs(g_abc(1,igv) - 3.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! x^3 -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! x^3 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 2.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! x^2y -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! x^2y - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 2.d0) <= eps6) .and. & - (abs(g_abc(2,igv) + 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! x^2y -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! x^2y - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 2.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 1.d0 <= eps6) ) THEN ! x^2z -+ (abs(g_abc(3,igv) - 1.d0) <= eps6) ) THEN ! x^2z - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 2.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 1.d0 <= eps6) ) THEN ! x^2z -+ (abs(g_abc(3,igv) + 1.d0) <= eps6) ) THEN ! x^2z - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 2.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! xy^2 -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! xy^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) + 2.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! xy^2 -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! xy^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 1.d0 <= eps6) ) THEN ! xyz -+ (abs(g_abc(3,igv) - 1.d0) <= eps6) ) THEN ! xyz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 1.d0 <= eps6) ) THEN ! xyz -+ (abs(g_abc(3,igv) + 1.d0) <= eps6) ) THEN ! xyz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) + 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 1.d0 <= eps6) ) THEN ! xyz -+ (abs(g_abc(3,igv) - 1.d0) <= eps6) ) THEN ! xyz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) + 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 1.d0 <= eps6) ) THEN ! xyz -+ (abs(g_abc(3,igv) + 1.d0) <= eps6) ) THEN ! xyz - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 2.d0 <= eps6) ) THEN ! xz^2 -+ (abs(g_abc(3,igv) - 2.d0) <= eps6) ) THEN ! xz^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 1.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 2.d0 <= eps6) ) THEN ! xz^2 -+ (abs(g_abc(3,igv) + 2.d0) <= eps6) ) THEN ! xz^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 3.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 0.d0 <= eps6) ) THEN ! y^3 -+ (abs(g_abc(3,igv) - 0.d0) <= eps6) ) THEN ! y^3 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 2.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 1.d0 <= eps6) ) THEN ! y^2z -+ (abs(g_abc(3,igv) - 1.d0) <= eps6) ) THEN ! y^2z - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 2.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 1.d0 <= eps6) ) THEN ! y^2z -+ (abs(g_abc(3,igv) + 1.d0) <= eps6) ) THEN ! y^2z - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 2.d0 <= eps6) ) THEN ! yz^2 -+ (abs(g_abc(3,igv) - 2.d0) <= eps6) ) THEN ! yz^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and.& - (abs(g_abc(2,igv) - 1.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) + 2.d0 <= eps6) ) THEN ! yz^2 -+ (abs(g_abc(3,igv) + 2.d0) <= eps6) ) THEN ! yz^2 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE - ENDIF - IF ( (abs(g_abc(1,igv) - 0.d0) <= eps6) .and. & - (abs(g_abc(2,igv) - 0.d0) <= eps6) .and. & -- (abs(g_abc(3,igv)) - 3.d0 <= eps6) ) THEN ! z^3 -+ (abs(g_abc(3,igv) - 3.d0) <= eps6) ) THEN ! z^3 - num_G(mpime+1) = num_G(mpime+1) + 1 - ig_idx(num_G(mpime+1))=igv - CYCLE -diff --git a/PP/src/vasp_read_chgcar_mod.f90 b/PP/src/vasp_read_chgcar_mod.f90 -index c5187e024..536f5344c 100644 ---- a/PP/src/vasp_read_chgcar_mod.f90 -+++ b/PP/src/vasp_read_chgcar_mod.f90 -@@ -64,7 +64,6 @@ MODULE vasp_read_chgcar - INTEGER :: ngxf, ngyf, ngzf, nalloc - INTEGER :: ispin, iat, iz, ixy, nread - REAL(DP), ALLOCATABLE :: rho_r_(:,:), atomom(:) -- REAL(DP), ALLOCATABLE :: rho_r_up(:), rho_r_dn(:) - CHARACTER(LEN=80) :: errmsg - ! - ierr = 0 -@@ -102,15 +101,6 @@ MODULE vasp_read_chgcar - END DO - - CLOSE(iunchg) -- IF(nspin==2) THEN -- ALLOCATE(rho_r_up(dfftp%nr1x*dfftp%nr2x*dfftp%nr3x)) -- ALLOCATE(rho_r_dn(dfftp%nr1x*dfftp%nr2x*dfftp%nr3x)) -- rho_r_up=0.5_DP*(rho_r_(:,1)+rho_r_(:,2)) -- rho_r_dn=0.5_DP*(rho_r_(:,1)-rho_r_(:,2)) -- rho_r_(:,1)=rho_r_up -- rho_r_(:,2)=rho_r_dn -- DEALLOCATE(rho_r_up, rho_r_dn) -- END IF - END IF - ! CALL mp_bcast( atm, ionode_id, intra_image_comm ) - DO ispin = 1, nspin -diff --git a/PW/src/setup.f90 b/PW/src/setup.f90 -index 276588917..92543ddce 100644 ---- a/PW/src/setup.f90 -+++ b/PW/src/setup.f90 -@@ -137,7 +137,7 @@ SUBROUTINE setup() - IF (ecutfock /= 4*ecutwfc) CALL infomsg & - ('setup','Warning: US/PAW use ecutfock=4*ecutwfc, ecutfock ignored') - IF ( lmd .OR. lbfgs ) CALL errore & -- ('setup','forces for hybrid functionals + US/PAW not implemented') -+ ('setup','forces for hybrid functionals + US/PAW not implemented',1) - IF ( noncolin ) CALL errore & - ('setup','Noncolinear hybrid XC for USPP not implemented',1) - END IF -@@ -519,7 +519,11 @@ SUBROUTINE setup() - ! - ! ... nosym: do not use any point-group symmetry (s(:,:,1) is the identity) - ! -- IF ( nosym ) nsym = 1 -+ IF ( nosym ) THEN -+ nsym = 1 -+ invsym = .FALSE. -+ fft_fact(:) = 1 -+ END IF - ! - IF ( nsym > 1 .AND. ibrav == 0 ) CALL infomsg('setup', & - 'DEPRECATED: symmetry with ibrav=0, use correct ibrav instead') -diff --git a/PW/src/symm_base.f90 b/PW/src/symm_base.f90 -index 9d6cabf5c..4106be76a 100644 ---- a/PW/src/symm_base.f90 -+++ b/PW/src/symm_base.f90 -@@ -515,11 +515,14 @@ SUBROUTINE sgam_at ( nat, tau, ityp, sym, no_z_inv) - ! - ! ft_ is in crystal axis and is a valid fractional translation - ! only if ft_(i)=0 or ft_(i)=1/n, with n=2,3,4,6 -- ! The check below is less strict: n must be integer - ! - DO i=1,3 - IF ( ABS (ft_(i)) > eps2 ) THEN -- ftaux(i) = ABS (1.0_dp/ft_(i) - NINT(1.0_dp/ft_(i)) ) -+ ftaux(i) = ABS (1.0_dp/ft_(i) - NINT(1.0_dp/ft_(i)) ) -+ nfrac = NINT(1.0_dp/ABS(ft_(i))) -+ IF ( ftaux(i) < eps2 .AND. nfrac /= 2 .AND. & -+ nfrac /= 3 .AND. nfrac /= 4 .AND. nfrac /= 6 ) & -+ ftaux(i) = 2*eps2 - ELSE - ftaux(i) = 0.0_dp - END IF -diff --git a/PW/src/v_of_rho.f90 b/PW/src/v_of_rho.f90 -index 7782924f1..295da64fe 100644 ---- a/PW/src/v_of_rho.f90 -+++ b/PW/src/v_of_rho.f90 -@@ -221,7 +221,7 @@ SUBROUTINE v_xc_meta( rho, rho_core, rhog_core, etxc, vtxc, v, kedtaur ) - ! spin-polarised case - ! - rhoup = ( rho%of_r(k, 1) + rho%of_r(k, 2) )*0.5d0 -- rhodw = ( rho%of_r(k, 2) - rho%of_r(k, 2) )*0.5d0 -+ rhodw = ( rho%of_r(k, 1) - rho%of_r(k, 2) )*0.5d0 - - rh = rhoup + rhodw - diff --git a/devicexlib-0.1.0.tar.gz b/devicexlib-0.1.0.tar.gz new file mode 100644 index 0000000..d9ff441 --- /dev/null +++ b/devicexlib-0.1.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b2beab4cf3a863751a14eca8bfccc0cb4bf4bb36e7758ea57e8986064841240 +size 5321512 diff --git a/q-e-qe-6.4.1.tar.bz2 b/q-e-qe-6.4.1.tar.bz2 deleted file mode 100644 index e5340b9..0000000 --- a/q-e-qe-6.4.1.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45cbf53aeace68d2f625a7014f56f055789cfca6620687a6d464f4684fe0c4a5 -size 77778235 diff --git a/q-e-qe-6.8.tar.bz2 b/q-e-qe-6.8.tar.bz2 new file mode 100644 index 0000000..ba2bddd --- /dev/null +++ b/q-e-qe-6.8.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f15cfa40332b6953cdc4c399847094f532185972b127e779c53adbb19040f43f +size 67865847 diff --git a/quantum-espresso-devxlib-no-download.patch b/quantum-espresso-devxlib-no-download.patch new file mode 100644 index 0000000..d8bb67d --- /dev/null +++ b/quantum-espresso-devxlib-no-download.patch @@ -0,0 +1,20 @@ +Index: q-e-qe-6.8/install/extlibs_makefile +=================================================================== +--- q-e-qe-6.8.orig/install/extlibs_makefile ++++ q-e-qe-6.8/install/extlibs_makefile +@@ -93,14 +93,13 @@ CUDA_PATH := $(if $(GPU_ARCH),$(CUDA_PAT + libcuda_devxlib : + cd ../external/devxlib; \ + if test ! -e configure; then \ +- wget $(DEVXLIB_URL) -O devxlib.tar.gz || curl $(DEVXLIB_URL) -o devxlib.tar.gz ; \ + tar xzf devxlib.tar.gz --strip-components=1 -C . ; \ + rm devxlib.tar.gz ; \ + fi; \ + touch make.inc; \ + $(MAKE) clean; \ + export F90FLAGS="$(FOX_FLAGS)"; \ +- ./configure FC=$(F90) CC=$(CC) \ ++ ./configure FC=$(FC) CC=$(CC) \ + --with-cuda=$(CUDA_PATH) \ + --with-cuda-cc=$(GPU_ARCH) \ + --with-cuda-runtime=$(CUDA_RUNTIME) \ diff --git a/quantum-espresso.changes b/quantum-espresso.changes index d99ad36..2b9a516 100644 --- a/quantum-espresso.changes +++ b/quantum-espresso.changes @@ -1,3 +1,32 @@ +------------------------------------------------------------------- +Sun Nov 21 13:31:34 UTC 2021 - Atri Bhattacharya + +- Update to version 6.8: + * See release notes here: + . +- Drop backports-6.4.1.git-diff: incorporated upstream. +- Add quantum-espresso-devxlib-no-download.patch: Patch to avoid + downloading devxlib from the web; we supply it as an additional + source instead. +- Add devxlib as an additional source and copy it to dir where + quantum-espresso build expects. +- Add openmpi4 as multibuild flavor. +- Drop mvapich2 multibuild flavor, not well supported and builds + fail. +- Hack-ish work-arounds to prevent build failures all around + (locally checked that tests work; but they need further + downloads and hacks, and is best avoided within the build system + itself): + * Turn off errors on return-type warnings in %optflags. + * Allow compilation to proceed despite minor rank mis-matches by + passing -fallow-argument-mismatch as an additional flag to + fortran compiler (for GCC >= 10 only). + * Explicitly pass blas, lapack, and fftw3 library flags to + configure; otherwise the build tried to build each of these + internally; for fftw3 use parallel or serial library depending + on mulbuild flavor. +- Link against scalapack for parallel build flavors. + ------------------------------------------------------------------- Mon Feb 10 00:17:26 UTC 2020 - Stefan BrĂ¼ns diff --git a/quantum-espresso.spec b/quantum-espresso.spec index fec1bab..900367b 100644 --- a/quantum-espresso.spec +++ b/quantum-espresso.spec @@ -1,7 +1,7 @@ # -# spec file for package quantum-espresso +# spec file # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -58,6 +58,12 @@ ExclusiveArch: x86_64 %{?DisOMPI3} %endif +%if "%{flavor}" == "openmpi4" +%global mpi_flavor openmpi +%define mpi_vers 4 +%{?DisOMPI4} +%endif + %{?mpi_flavor:%{bcond_without mpi}}%{!?mpi_flavor:%{bcond_with mpi}} %{?with_mpi:%{!?mpi_flavor:error "No MPI family specified!"}} @@ -76,6 +82,7 @@ ExclusiveArch: x86_64 %else %define my_prefix %{_libdir}/mpi/gcc/%{mpi_flavor}%{?mpi_ext} %define my_bindir %{my_prefix}/bin + %define my_libdir %{my_prefix}/%{_lib} %define my_suffix -%{mpi_flavor}%{?mpi_ext} %endif @@ -83,23 +90,35 @@ ExclusiveArch: x86_64 %define package_name %pname%{?my_suffix} %endif +%global devlibx_version 0.1.0 +# Unimportant rank mismatch issues that otherwise cause builds to fail for GCC >= 10 +%if 0%{?suse_version} > 1500 +%global extra_gfortran_flags -fallow-argument-mismatch +%else +%global extra_gfortran_flags %{nil} +%endif +# We need to turn off "-Werror=return-type" in optflags to avoid build failures +%global optflags %(echo "%{optflags}" | sed "s/ -Werror=return-type//") Name: %{package_name} -Version: 6.4.1 +Version: 6.8 Release: 0 Summary: A suite for electronic-structure calculations and materials modeling License: GPL-2.0-only Group: Productivity/Scientific/Physics URL: http://www.quantum-espresso.org Source0: https://gitlab.com/QEF/q-e/-/archive/qe-%{version}/q-e-qe-%{version}.tar.bz2 -# PATCH-FIX-UPSTREAM backports-6.4.1.git-diff badshah400@gmail.com -- Backported fixes for version 6.4.1 from upstream -Patch0: https://gitlab.com/QEF/q-e/wikis/uploads/3e4b6d3844989c02d0ebb03a935e1976/backports-6.4.1.git-diff +Source1: https://gitlab.com/max-centre/components/devicexlib/-/archive/%{devlibx_version}/devicexlib-%{devlibx_version}.tar.gz +# PATCH-FEATURE-OPENSUSE quantum-espresso-devxlib-no-download.patch badshah400@gmail.com -- Do not try to download devxlib, use SOURCE1 instead. +Patch1: quantum-espresso-devxlib-no-download.patch +BuildRequires: blas-devel BuildRequires: fdupes BuildRequires: gcc-fortran BuildRequires: lapack-devel %if %{with mpi} BuildRequires: %{mpi_flavor}%{?mpi_ext}-devel BuildRequires: fftw3-mpi-devel -%if 0%{?suse_version} >= 1550 && %{mpi_flavor} == "openmpi" +BuildRequires: libscalapack2-%{mpi_flavor}%{?mpi_ext}-devel +%if 0%{?suse_version} >= 1550 && "%{mpi_flavor}" == "openmpi" # hackish workaround for multiple openmpiX-config all providing openmpi-runtime-config BuildRequires: %{mpi_flavor}%{?mpi_ext}-config %endif @@ -129,18 +148,36 @@ It is based on density-functional theory, plane waves, and pseudopotentials. %prep %autosetup -p1 -n q-e-qe-%{version} +cp %{SOURCE1} ./external/devxlib/devxlib.tar.gz +# Need to pass -D__FFTW, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=980677 +# Error: Symbol 'cft_2xy' at (1) has no IMPLICIT type +sed -i 's|MANUAL_DFLAGS =|MANUAL_DFLAGS = -D__FFTW %{extra_gfortran_flags}|' install/make.inc.in %build +# Note: optflags should not be passed to fortran flags as they cause build failures %if %{with mpi} export CC="%{my_bindir}/mpicc" +export CFLAGS='%{extra_gfortran_flags} %{optflags}' export FC="%{my_bindir}/mpif90" +export FCFLAGS='%{extra_gfortran_flags}' +export FFLAGS='%{extra_gfortran_flags}' +export BLAS_LIBS="-L%{_libdir} -lblas" +export LAPACK_LIBS="-L%{_libdir} -llapack" +export FFT_LIBS="-L%{_libdir} -lfftw3_mpi" +export SCALAPACK_LIBS="-L%{my_libdir} -lscalapack" %configure --enable-parallel %else export CC=gcc +export CFLAGS='%{extra_gfortran_flags} %{optflags}' export FC=gfortran +export FCFLAGS='%{extra_gfortran_flags}' +export FFLAGS='%{extra_gfortran_flags}' +export BLAS_LIBS="-L%{_libdir} -lblas" +export LAPACK_LIBS="-L%{_libdir} -llapack" +export FFT_LIBS="-lfftw3" %configure --disable-parallel %endif -make %{?_smp_mflags} all +%make_build all %install mkdir -p %{buildroot}%{my_bindir} @@ -153,14 +190,12 @@ popd %fdupes -s Doc/ %files -%defattr(-,root,root) %doc README.md %license License %{my_bindir}/*.x %if %{without mpi} %files doc -%defattr(-,root,root) %doc Doc/* %endif