Fixed bug (nelec_8)

This commit is contained in:
Anthony Scemama 2021-03-18 10:48:23 +01:00
parent b15cd4dac3
commit 3c6352730b
4 changed files with 23 additions and 16 deletions

View File

@ -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

View File

@ -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

View File

@ -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) + (&

View File

@ -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