diff --git a/deriv_num b/deriv_num index 265024e..97d3421 100755 Binary files a/deriv_num and b/deriv_num differ diff --git a/el_nuc_el.irp.f b/el_nuc_el.irp.f index 1f61f4a..36e4313 100644 --- a/el_nuc_el.irp.f +++ b/el_nuc_el.irp.f @@ -1,11 +1,11 @@ BEGIN_PROVIDER [ double precision, factor_een ] - implicit none - BEGIN_DOC - ! ElectronE-electron-nuclei contribution to Jastrow factor - END_DOC - integer :: i, j, a, p, k, l, lmax, m - double precision :: rjam_cn - double precision :: cn + implicit none + BEGIN_DOC + ! ElectronE-electron-nuclei contribution to Jastrow factor + END_DOC + integer :: i, j, a, p, k, l, lmax, m, n + double precision :: cn, accu2, accu + double precision :: f(nnuc,0:ncord-2,0:ncord-2) factor_een = 0.0d0 @@ -21,18 +21,17 @@ BEGIN_PROVIDER [ double precision, factor_een ] m = (p - k - l) / 2 do a = 1, nnuc cn = cord_vect_lkp(l, k, p, typenuc_arr(a)) - rjam_cn = rescale_een_n(2, a, m) * cn - factor_een = factor_een + rescale_een_e(1,2,k) * & - (rescale_een_n(1,a,l) + rescale_een_n(2,a,l)) * & - rescale_een_n(1,a,m) * rjam_cn - do j = 3, nelec - rjam_cn = rescale_een_n(j, a, m) * cn + accu2 = 0.d0 + do j = 2, nelec + accu = 0.d0 do i = 1, j - 1 - factor_een = factor_een + rescale_een_e(i,j,k) * & + accu = accu + rescale_een_e(i,j,k) * & (rescale_een_n(i,a,l) + rescale_een_n(j,a,l)) * & - rescale_een_n(i,a,m) * rjam_cn + rescale_een_n(i,a,m) enddo + accu2 = accu2 + accu * rescale_een_n(j, a, m) enddo + factor_een = factor_een + accu2 * cn enddo enddo enddo diff --git a/jastrow b/jastrow index 4216937..68e5eea 100755 Binary files a/jastrow and b/jastrow differ diff --git a/rescale.irp.f b/rescale.irp.f index d182197..b7fa5ba 100644 --- a/rescale.irp.f +++ b/rescale.irp.f @@ -107,24 +107,18 @@ BEGIN_PROVIDER [double precision, rescale_een_e, (nelec, nelec, 0:ncord)] BEGIN_DOC ! R = exp(-kappa r) for electron-electron for $J_{een}$ END_DOC - integer :: i, j, l + integer :: i, j, k, l double precision :: x double precision, parameter :: f = dexp(1.d0) rescale_een_e(:, :, 0) = 1.d0 - do j = 1, nelec - do i = 1, j-1 - x = dexp(-kappa * elec_dist(i, j)) - rescale_een_e(i, j, 1) = x - rescale_een_e(j, i, 1) = x - enddo - enddo - - do l = 2, ncord + do l = 1, ncord + k=0 do j = 1, nelec do i = 1, j-1 - x = rescale_een_e(i, j, l-1) * rescale_een_e(i, j, 1) + k = k+1 + x = rescale_een_e_ij(k,l) rescale_een_e(i, j, l) = x rescale_een_e(j, i, l) = x enddo @@ -138,6 +132,33 @@ BEGIN_PROVIDER [double precision, rescale_een_e, (nelec, nelec, 0:ncord)] enddo END_PROVIDER +BEGIN_PROVIDER [double precision, rescale_een_e_ij, (nelec*(nelec-1)/2, 0:ncord)] + implicit none + BEGIN_DOC + ! R = exp(-kappa r) for electron-electron for $J_{een}$ + END_DOC + integer :: i, j, l,k + double precision :: x + double precision, parameter :: f = dexp(1.d0) + + rescale_een_e_ij(:, 0) = 1.d0 + + k=0 + do j = 1, nelec + do i = 1, j-1 + k = k+1 + rescale_een_e_ij(k, 1) = dexp(-kappa * elec_dist(i, j)) + enddo + enddo + + do l = 2, ncord + do k=1,(nelec*nelec-nelec)/2 + rescale_een_e_ij(k, l) = rescale_een_e_ij(k, l-1) * rescale_een_e_ij(k, 1) + enddo + enddo + +END_PROVIDER + BEGIN_PROVIDER [double precision, rescale_een_n, (nelec, nnuc, 0:ncord)] implicit none BEGIN_DOC