2020-11-17 21:35:52 +01:00
|
|
|
BEGIN_PROVIDER [ integer, nnuc ]
|
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Number of nuclei
|
|
|
|
END_DOC
|
2020-11-26 16:12:33 +01:00
|
|
|
nnuc = 10
|
2020-11-17 21:35:52 +01:00
|
|
|
END_PROVIDER
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_PROVIDER [ double precision, nuc_coord, (nnuc, 3) ]
|
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Nuclei coordinates
|
|
|
|
END_DOC
|
|
|
|
integer :: i, j
|
|
|
|
do j = 1 , 3
|
|
|
|
do i = 1, nnuc
|
|
|
|
call random_number(nuc_coord(i, j))
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
|
|
|
|
END_PROVIDER
|
|
|
|
|
2020-11-26 16:12:33 +01:00
|
|
|
BEGIN_PROVIDER [ double precision, elnuc_dist, (nelec, nnuc) ]
|
2020-11-17 21:35:52 +01:00
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! e-n distance
|
|
|
|
END_DOC
|
|
|
|
integer :: i, j
|
|
|
|
double precision :: x, y, z
|
|
|
|
do j = 1, nnuc
|
|
|
|
do i = 1, nelec
|
|
|
|
x = elec_coord(i, 1) - nuc_coord(j, 1)
|
|
|
|
y = elec_coord(i, 2) - nuc_coord(j, 2)
|
|
|
|
z = elec_coord(i, 3) - nuc_coord(j, 3)
|
|
|
|
elnuc_dist(i, j) = dsqrt( x*x + y*y + z*z )
|
|
|
|
enddo
|
|
|
|
enddo
|
|
|
|
END_PROVIDER
|
|
|
|
|
|
|
|
BEGIN_PROVIDER [double precision, factor_en]
|
|
|
|
implicit none
|
|
|
|
BEGIN_DOC
|
|
|
|
! Electron-nuclei contribution to Jastrow factor
|
|
|
|
END_DOC
|
|
|
|
integer :: i, j, p
|
2020-11-25 16:59:53 +01:00
|
|
|
double precision :: pow_ser = 0.0d0
|
|
|
|
factor_en = 0.0d0
|
|
|
|
|
2020-11-17 21:35:52 +01:00
|
|
|
do j = 1 , nnuc
|
|
|
|
do i = 1, nnuc
|
|
|
|
do p = 2, naord
|
2020-11-26 16:12:33 +01:00
|
|
|
pow_ser = pow_ser + aord_vect(p) * rescale_en(i, j) ** p
|
2020-11-17 21:35:52 +01:00
|
|
|
end do
|
|
|
|
factor_en = factor_en + aord_vect(1) * rescale_en(i, j) &
|
|
|
|
/ (1 + aord_vect(2) * rescale_en(i, j)) + pow_ser
|
|
|
|
end do
|
|
|
|
end do
|
2020-11-25 18:09:13 +01:00
|
|
|
|
|
|
|
factor_en = 0.5d0 * factor_en
|
2020-11-17 21:35:52 +01:00
|
|
|
END_PROVIDER
|