mirror of
https://github.com/TREX-CoE/irpjast.git
synced 2024-08-25 06:31:46 +02:00
Accelerated Jeen
This commit is contained in:
parent
907d62e5ac
commit
916ca5234c
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user