diff --git a/electrons.irp.f b/electrons.irp.f index 9ab69b5..0011a93 100644 --- a/electrons.irp.f +++ b/electrons.irp.f @@ -51,6 +51,28 @@ BEGIN_PROVIDER [ double precision, elec_dist, (nelec, nelec) ] enddo END_PROVIDER +BEGIN_PROVIDER [double precision, asymp_jasb, (2)] + BEGIN_DOC + ! Asymptotic component subtracted from J_ee + END_DOC + implicit none + integer :: i, p + double precision :: asym_one, x + + asym_one = bord_vect(1) * kappa_inv / (1.0d0 + bord_vect(2) * kappa_inv) + asymp_jasb(:) = (/asym_one, 0.5d0 * asym_one/) + + do i = 1, 2 + x = kappa_inv + do p = 2, nbord + x = x * kappa_inv + asymp_jasb(i) = asymp_jasb(i) + bord_vect(p + 1) * x + end do + end do + +END_PROVIDER + + BEGIN_PROVIDER [double precision, factor_ee] implicit none BEGIN_DOC @@ -62,29 +84,26 @@ BEGIN_PROVIDER [double precision, factor_ee] factor_ee = 0.0d0 do j = 1, nelec - do i = 1, nelec + do i = 1, j - 1 x = rescale_ee(i, j) pow_ser = 0.0d0 spin_fact = 1.0d0 - ipar = 0 + ipar = 1 do p = 2, nbord x = x * rescale_ee(i, j) pow_ser = pow_ser + bord_vect(p + 1) * x end do - if ((i.le.nelec_up .and. j.le.nelec_up) .or. & - (i.gt.nelec_up .and. j.gt.nelec_up)) then + if (j.le.nelec_up .or. i.gt.nelec_up) then spin_fact = 0.5d0 - ipar = 1 + ipar = 2 end if factor_ee = factor_ee + spin_fact * bord_vect(1) * rescale_ee(i, j) & - / (1.0d0 + bord_vect(2) * rescale_ee(i, j)) + pow_ser + / (1.0d0 + bord_vect(2) * rescale_ee(i, j)) - asymp_jasb(ipar) + pow_ser end do end do - factor_ee = 0.5d0 * factor_ee - END_PROVIDER diff --git a/jastrow b/jastrow deleted file mode 100755 index a4f3b78..0000000 Binary files a/jastrow and /dev/null differ diff --git a/jastrow.irp.f b/jastrow.irp.f index 3b0a3eb..fd34fc7 100644 --- a/jastrow.irp.f +++ b/jastrow.irp.f @@ -2,6 +2,5 @@ program jastrow implicit none print *, 'The total Jastrow factor' print *, jastrow_full - print *, factor_een end program diff --git a/jastrow_provider.irp.f b/jastrow_provider.irp.f index 70a0acd..070381a 100644 --- a/jastrow_provider.irp.f +++ b/jastrow_provider.irp.f @@ -5,11 +5,14 @@ BEGIN_PROVIDER [ double precision, jastrow_full ] END_DOC integer :: i, j - print *, factor_ee - print *, factor_en - print *, factor_een + print *, "J_ee = ", factor_ee + print *, "J_en = ", factor_en + print *, "J_enn_naive = ", factor_een_naive + print *, "J_een = ", factor_een + print *, "J = J_ee + J_en + J_een = ", factor_ee + factor_en + factor_een + print *, "J = J_ee + J_en + J_een_naive = ", factor_ee + factor_en + factor_een_naive + !print *, "J_enn_prog = ", factor_een_prog jastrow_full = dexp(factor_ee + factor_en + factor_een) END_PROVIDER -