diff --git a/Makefile b/Makefile index dd997d9..2962eb7 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ IRPF90 = irpf90/bin/irpf90 --codelet=factor_een:2 --align=4096 # -s nelec_8:504 -s nnuc:100 -s ncord:5 #-a -d -FC = ifort -xCORE-AVX512 -g -mkl=sequential -qopt-zmm-usage=high -#FC = ifort -xCORE-AVX2 -g -mkl=sequential +#FC = ifort -xCORE-AVX512 -g -mkl=sequential -qopt-zmm-usage=high +FC = ifort -xCORE-AVX2 -g -mkl=sequential FCFLAGS= -O3 -I . NINJA = ninja ARCHIVE = ar crs diff --git a/el_nuc_el.irp.f b/el_nuc_el.irp.f index 3560d57..c991702 100644 --- a/el_nuc_el.irp.f +++ b/el_nuc_el.irp.f @@ -36,7 +36,7 @@ BEGIN_PROVIDER [ double precision, factor_een ] END_PROVIDER -BEGIN_PROVIDER [ double precision, factor_een_deriv_e, (4, nelec) ] +BEGIN_PROVIDER [ double precision, factor_een_deriv_e, (nelec,4) ] implicit none BEGIN_DOC ! Derivative of the Jeen @@ -45,10 +45,10 @@ BEGIN_PROVIDER [ double precision, factor_een_deriv_e, (4, nelec) ] integer :: i, j, a, p, k, l, lmax, m, n double precision :: cn, accu, accu2, daccu(1:4), daccu2(1:4) -! factor_een_deriv_e(1:4,1:nelec) = factor_een_deriv_e_blas(1:4,1:nelec) +! factor_een_deriv_e(1:nelec,1:4) = factor_een_deriv_e_blas(1:4,1:nelec) ! return - factor_een_deriv_e(1:4,1:nelec) = 0.0d0 + factor_een_deriv_e(1:nelec,1:4) = 0.0d0 do n = 1, dim_cord_vect @@ -79,11 +79,11 @@ BEGIN_PROVIDER [ double precision, factor_een_deriv_e, (4, nelec) ] rescale_een_n(i,a,m+l) enddo - factor_een_deriv_e(1:4,j) = factor_een_deriv_e(1:4,j) + & + factor_een_deriv_e(j,1:4) = factor_een_deriv_e(j,1:4) + & (accu * rescale_een_n_deriv_e(j,1:4,a,m+l) + daccu(1:4) * rescale_een_n(j,a,m+l) +& daccu2(1:4)* rescale_een_n(j,a,m) + accu2*rescale_een_n_deriv_e(j,1:4,a,m)) * cn - factor_een_deriv_e(4,j) = factor_een_deriv_e(4,j) + 2.d0*( & + factor_een_deriv_e(j,4) = factor_een_deriv_e(j,4) + 2.d0*( & daccu (1) * rescale_een_n_deriv_e(j,1,a,m+l) + & daccu (2) * rescale_een_n_deriv_e(j,2,a,m+l) + & daccu (3) * rescale_een_n_deriv_e(j,3,a,m+l) + & @@ -96,7 +96,7 @@ BEGIN_PROVIDER [ double precision, factor_een_deriv_e, (4, nelec) ] END_PROVIDER -BEGIN_PROVIDER [ double precision, factor_een_deriv_e_ref, (4, nelec) ] +BEGIN_PROVIDER [ double precision, factor_een_deriv_e_ref, (nelec,4) ] implicit none BEGIN_DOC ! Dimensions 1-3 : dx, dy, dz @@ -152,14 +152,14 @@ BEGIN_PROVIDER [ double precision, factor_een_deriv_e_ref, (4, nelec) ] d2 = drjam_cn(ii) * riam lap1 = lap1 + d1 * d2 lap2 = lap2 + drijk(ii) * drjal(ii) - factor_een_deriv_e_ref(ii, j) = factor_een_deriv_e_ref(ii, j) + v1 * d2 + d1 * v2 + factor_een_deriv_e_ref(j,ii) = factor_een_deriv_e_ref(j,ii) + v1 * d2 + d1 * v2 enddo ! v(x) u''(x) + 2 * u'(x) v'(x) + u(x) v''(x) ii = 4 d1 = drijk(ii) * rial + rijk * drjal(ii) + lap2 + lap2 d2 = drjam_cn(ii) * riam - factor_een_deriv_e_ref(ii, j) = factor_een_deriv_e_ref(ii, j) + v1 * d2 + d1 * v2 + lap1 + lap1 + factor_een_deriv_e_ref(j,ii) = factor_een_deriv_e_ref(j,ii) + v1 * d2 + d1 * v2 + lap1 + lap1 enddo enddo diff --git a/el_nuc_el_blas.irp.f b/el_nuc_el_blas.irp.f index c5d5660..3a39825 100644 --- a/el_nuc_el_blas.irp.f +++ b/el_nuc_el_blas.irp.f @@ -21,10 +21,12 @@ ! dr_{ij}^k . R_{ja}^l -> dtmp_c_{ia}^{kl} do k=0,ncord-1 - call dgemm('N','N', 4*nelec, nnuc*(ncord+1), nelec, 1.d0, & - rescale_een_e_deriv_e(1,1,1,k), 4*size(rescale_een_e_deriv_e,1),& - rescale_een_n(1,1,0), size(rescale_een_n,1), 0.d0, & - dtmp_c(1,1,1,0,k), 4*size(dtmp_c,1)) + call dgemm('N','N', 4*nelec_8, nnuc*(ncord+1), nelec, 1.d0, & + rescale_een_e_deriv_e(1,1,1,k), & + size(rescale_een_e_deriv_e,1)*size(rescale_een_e_deriv_e,2), & + rescale_een_n(1,1,0), & + size(rescale_een_n,1), 0.d0, & + dtmp_c(1,1,1,0,k), size(dtmp_c,1)*size(dtmp_c,2)) enddo @@ -80,7 +82,6 @@ END_PROVIDER )*cn2 enddo - do ii=1,4 do j=1,nelec factor_een_deriv_e_blas(j,ii) = factor_een_deriv_e_blas(j,ii) + (& diff --git a/jastrow.irp.f b/jastrow.irp.f index 01af425..f86c2cf 100644 --- a/jastrow.irp.f +++ b/jastrow.irp.f @@ -1,5 +1,6 @@ program jastrow implicit none + print *, 'Number of electrons: ', nelec print *, 'The total Jastrow factor' print *, jastrow_full print *, 'REF' @@ -7,7 +8,12 @@ program jastrow print *, 'X' print *, factor_een_deriv_e print *, 'BLAS' - print *, factor_een_deriv_e_blas + print *, factor_een_deriv_e_blas(1:nelec,1:4) + print *, '' + print *, factor_een_deriv_e_ref(1:nelec,1) - factor_een_deriv_e_blas(1:nelec,1) + print *, factor_een_deriv_e_ref(1:nelec,2) - factor_een_deriv_e_blas(1:nelec,2) + print *, factor_een_deriv_e_ref(1:nelec,3) - factor_een_deriv_e_blas(1:nelec,3) + print *, factor_een_deriv_e_ref(1:nelec,4) - factor_een_deriv_e_blas(1:nelec,4) !PROVIDE jastrow_full end program