1
0
mirror of https://github.com/TREX-CoE/irpjast.git synced 2024-12-22 04:14:54 +01:00

Almost functional version. Need correct Cord

This commit is contained in:
Panadestein 2020-11-25 16:59:53 +01:00
parent 32576e0221
commit 0af276cfc5
8 changed files with 75 additions and 12 deletions

3
.gitignore vendored
View File

@ -2,4 +2,5 @@ IRPF90_temp/
IRPF90_man/ IRPF90_man/
irpf90.make irpf90.make
irpf90_entities irpf90_entities
tags tags
*.mod

View File

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

View File

@ -43,6 +43,10 @@ BEGIN_PROVIDER [double precision, factor_ee]
BEGIN_DOC BEGIN_DOC
! Electron-electron contribution to Jastrow factor ! Electron-electron contribution to Jastrow factor
END_DOC END_DOC
integer :: i, j
double precision :: pow_ser = 0.0d0
factor_ee = 0.0d0
do j = 1 , nelec do j = 1 , nelec
do i = 1, nelec do i = 1, nelec
do p = 2, nbord do p = 2, nbord

BIN
jastrow Executable file

Binary file not shown.

View File

@ -1,8 +1,6 @@
program jastrow program jastrow
implicit none implicit none
print *, elec_coord print *, 'The total Jastrow factor'
print *, '' print *, dexp(factor_ee + factor_en + factor_een)
print *, elec_dist
print *, ''
print *, rescale_ee
end program end program

View File

@ -44,7 +44,9 @@ BEGIN_PROVIDER [double precision, factor_en]
! Electron-nuclei contribution to Jastrow factor ! Electron-nuclei contribution to Jastrow factor
END_DOC END_DOC
integer :: i, j, p integer :: i, j, p
double precision :: pow_ser double precision :: pow_ser = 0.0d0
factor_en = 0.0d0
do j = 1 , nnuc do j = 1 , nnuc
do i = 1, nnuc do i = 1, nnuc
do p = 2, naord do p = 2, naord

View File

@ -45,7 +45,7 @@ END_PROVIDER
BEGIN_PROVIDER [double precision, cord_vect, (ncord)] BEGIN_PROVIDER [double precision, cord_vect, (ncord)]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! Vector of the `b' coefficients ! Vector of the `c' coefficients
END_DOC END_DOC
do i = 1, ncord do i = 1, ncord
call random_number(cord_vect) call random_number(cord_vect)

View File

@ -11,13 +11,13 @@ BEGIN_PROVIDER [ double precision, kappa_inv ]
BEGIN_DOC BEGIN_DOC
! inverse of kappa ! inverse of kappa
END_DOC END_DOC
kappa_inv = 1.d0/kappa kappa_inv = 1.d0 / kappa
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER [ double precision, rescale_ee, (nelec, nelec) ] BEGIN_PROVIDER [ double precision, rescale_ee, (nelec, nelec) ]
implicit none implicit none
BEGIN_DOC 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 END_DOC
integer :: i, j integer :: i, j
do j=1,nelec do j=1,nelec
@ -30,12 +30,38 @@ END_PROVIDER
BEGIN_PROVIDER [ double precision, rescale_en, (nelec, nnuc) ] BEGIN_PROVIDER [ double precision, rescale_en, (nelec, nnuc) ]
implicit none implicit none
BEGIN_DOC 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 END_DOC
integer :: i, j integer :: i, j
do j = 1, nnuc do j = 1, nnuc
do i = 1, nelec 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
enddo enddo
END_PROVIDER END_PROVIDER