diff --git a/.gitignore b/.gitignore index 7ac9fbf..c61bd0a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ IRPF90_temp/ IRPF90_man/ irpf90.make irpf90_entities -tags \ No newline at end of file +tags +*.mod \ No newline at end of file diff --git a/el_nuc_el.irp.f b/el_nuc_el.irp.f index e69de29..1190e8d 100644 --- a/el_nuc_el.irp.f +++ b/el_nuc_el.irp.f @@ -0,0 +1,32 @@ +BEGIN_PROVIDER [double precision, factor_een] + implicit none + BEGIN_DOC + ! Electron-electron nucleus contribution to Jastrow factor + END_DOC + integer :: i, j, alpha, p, k, l, lmax = 0 + factor_een = 0.0d0 + + do alpha = 1, nnuc + do j = 1, nelec + do i = 1, nelec + do p = 2, ncord + do k = p - 1, 0 + if ( k == 0 ) then + lmax = p - k - 2 + else + lmax = p - k + end if + do l = lmax, 0 + if ( mod(p - k - l, 2) == 0 ) then + factor_een = factor_een + cord_vect(p, k, l) * rescale_een_e(i, j) ** k & + * (rescale_een_n(i, alpha) ** l + rescale_een_n(j, alpha) ** l) * & + (rescale_een_n(i, alpha) * rescale_een_n(j, alpha)) ** ((p - k - l) * 0.5d0) + end if + end do + end do + end do + end do + end do + end do + +END_PROVIDER diff --git a/electrons.irp.f b/electrons.irp.f index e165403..c9fd51a 100644 --- a/electrons.irp.f +++ b/electrons.irp.f @@ -43,6 +43,10 @@ BEGIN_PROVIDER [double precision, factor_ee] BEGIN_DOC ! Electron-electron contribution to Jastrow factor END_DOC + integer :: i, j + double precision :: pow_ser = 0.0d0 + factor_ee = 0.0d0 + do j = 1 , nelec do i = 1, nelec do p = 2, nbord diff --git a/jastrow b/jastrow new file mode 100755 index 0000000..dd3601f Binary files /dev/null and b/jastrow differ diff --git a/jastrow.irp.f b/jastrow.irp.f index 3851ff8..3986c32 100644 --- a/jastrow.irp.f +++ b/jastrow.irp.f @@ -1,8 +1,6 @@ program jastrow implicit none - print *, elec_coord - print *, '' - print *, elec_dist - print *, '' - print *, rescale_ee + print *, 'The total Jastrow factor' + print *, dexp(factor_ee + factor_en + factor_een) + end program diff --git a/nuclei.irp.f b/nuclei.irp.f index 34a514a..c2b431c 100644 --- a/nuclei.irp.f +++ b/nuclei.irp.f @@ -44,7 +44,9 @@ BEGIN_PROVIDER [double precision, factor_en] ! Electron-nuclei contribution to Jastrow factor END_DOC integer :: i, j, p - double precision :: pow_ser + double precision :: pow_ser = 0.0d0 + factor_en = 0.0d0 + do j = 1 , nnuc do i = 1, nnuc do p = 2, naord diff --git a/orders.irp.f b/orders.irp.f index 0cf61a1..ab48763 100644 --- a/orders.irp.f +++ b/orders.irp.f @@ -45,7 +45,7 @@ END_PROVIDER BEGIN_PROVIDER [double precision, cord_vect, (ncord)] implicit none BEGIN_DOC - ! Vector of the `b' coefficients + ! Vector of the `c' coefficients END_DOC do i = 1, ncord call random_number(cord_vect) diff --git a/rescale.irp.f b/rescale.irp.f index b5e6a80..d919b59 100644 --- a/rescale.irp.f +++ b/rescale.irp.f @@ -11,13 +11,13 @@ BEGIN_PROVIDER [ double precision, kappa_inv ] BEGIN_DOC ! inverse of kappa END_DOC - kappa_inv = 1.d0/kappa + kappa_inv = 1.d0 / kappa END_PROVIDER BEGIN_PROVIDER [ double precision, rescale_ee, (nelec, nelec) ] implicit none BEGIN_DOC - ! R = (1 - exp(-kappa r))/kappa for electron-electron + ! R = (1 - exp(-kappa r))/kappa for electron-electron for $J_{ee}$ END_DOC integer :: i, j do j=1,nelec @@ -30,12 +30,38 @@ END_PROVIDER BEGIN_PROVIDER [ double precision, rescale_en, (nelec, nnuc) ] implicit none BEGIN_DOC - ! R = (1 - exp(-kappa r))/kappa for electron-nucleus + ! R = (1 - exp(-kappa r))/kappa for electron-nucleus for $J_{en}$ END_DOC integer :: i, j do j = 1, nnuc do i = 1, nelec - rescale_en(i,j) = (1.d0 - dexp(-kappa * elnuc_dist(i,j))) * kappa_inv + rescale_en(i, j) = (1.d0 - dexp(-kappa * elnuc_dist(i, j))) * kappa_inv + enddo + enddo +END_PROVIDER + +BEGIN_PROVIDER [double precision, rescale_een_e, (nelec, 3)] + implicit none + BEGIN_DOC + ! R = exp(-kappa r) for electron-electron for $J_{een}$ + END_DOC + integer :: i, j + do j = 1, nelec + do i = 1, nelec + rescale_een_e(i, j) = dexp(-kappa * elec_dist(i, j)) + enddo + enddo +END_PROVIDER + +BEGIN_PROVIDER [double precision, rescale_een_n, (nnuc, 3)] + implicit none + BEGIN_DOC + ! R = exp(-kappa r) for electron-electron for $J_{een}$ + END_DOC + integer :: i, j + do j = 1, nnuc + do i = 1, nelec + rescale_een_n(i, j) = dexp(-kappa * elnuc_dist(i, j)) enddo enddo END_PROVIDER