irpjast/deriv_num.irp.f

53 lines
967 B
Fortran

program jastrow
implicit none
print *, 'Derivatives test'
integer :: k
double precision :: j1, j2, j0, deriv, dt, lapl
dt = 1.0d-4
BEGIN_TEMPLATE
lapl = 0.0d0
j0 = $X $Y
do k = 1, 3
elec_coord(1, k) -= dt
TOUCH elec_coord
j1 = $X $Y
elec_coord(1, k) += 2.0d0*dt
TOUCH elec_coord
j2 = $X $Y
deriv = (j2 - j1) / (2.0d0 * dt)
lapl += (j2 - 2.0d0*j0 + j1) / (dt*dt)
print *, 'Deriv $X '
print *, deriv
print *, $X_deriv_e(k, $Z)
print *, ''
elec_coord(1, k) -= dt
TOUCH elec_coord
enddo
print *, 'Lapl $X '
print *, lapl
print *, $X_deriv_e(4, $Z)
print *, ''
SUBST [X, Y, Z]
factor_ee ; ; 1;;
END_TEMPLATE
!factor_een ; ; 1;;
!rescale_een_e ; (1,3,1) ; 1,3,1 ;;
!rescale_een_n ; (1,1,2) ; 1,1,2 ;;
!rescale_een_e ; (1, 2, 2) ; 1, 2, 2 ;;
!factor_en ; ; 1;;
!rescale_en ; (1, 2) ; 1, 2 ;;
!factor_ee ; ; 1;;
!rescale_ee ; (1, 2) ; 1, 2 ;;
!elnuc_dist ; (1,1); 1,1 ;;
!elec_dist ; (1,2); 1,2 ;;
end program