eplf/src/ao_oneD_point.irp.f

131 lines
2.6 KiB
Fortran

BEGIN_PROVIDER [ real, ao_oneD_prim_p, (ao_num,ao_prim_num_max) ]
implicit none
BEGIN_DOC
! Exponentials of the primitive AOs
END_DOC
integer :: i, k
real:: r2, rtemp
! Compute alpha*r or alpha*r^2
do k=1,ao_prim_num_max
do i=1,ao_num
ao_oneD_prim_p(i,k) = point_nucl_dist_2(ao_nucl(i))
enddo
enddo
! Compute exp(-alpha*r) or exp(-alpha*r^2)
do k=1,ao_prim_num_max
do i=1,ao_num
ao_oneD_prim_p(i,k) = exp(-ao_oneD_prim_p(i,k)*ao_expo_transp(i,k))
enddo
enddo
! Cut below 1.d-12
do k=1,ao_prim_num_max
do i=1,ao_num
if ( abs(ao_oneD_prim_p(i,k)) < 1.e-12 ) then
ao_oneD_prim_p(i,k) = 0.
endif
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ real, ao_oneD_p, (ao_num) ]
implicit none
BEGIN_DOC
! One-dimensional component of the AOs
END_DOC
integer :: i, k
do i=1,ao_num
ao_oneD_p(i) = 0.
enddo
do k=1,ao_prim_num_max
do i=1,ao_num
ao_oneD_p(i) = ao_oneD_p(i) + ao_coef_transp(i,k)*ao_oneD_prim_p(i,k)
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ real, ao_oneD_prim_grad_p, (ao_num,ao_prim_num_max,3) ]
implicit none
BEGIN_DOC
! Gradients of the one-dimensional component of the primitive AOs
END_DOC
integer :: i, k, l
real:: factor
do l=1,3
do k=1,ao_prim_num_max
do i=1,ao_num
factor = -2.*point_nucl_dist_vec(ao_nucl(i),l)
ao_oneD_prim_grad_p(i,k,l) = factor*ao_expo_transp(i,k)*ao_oneD_prim_p(i,k)
enddo
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ real, ao_oneD_grad_p, (ao_num,3) ]
implicit none
BEGIN_DOC
! Gradients of the one-dimensional component of the AOs
END_DOC
integer :: i, k, l
do l=1,3
do i=1,ao_num
ao_oneD_grad_p(i,l) = 0.
enddo
do k=1,ao_prim_num_max
do i=1,ao_num
ao_oneD_grad_p(i,l) = ao_oneD_grad_p(i,l) + ao_coef_transp(i,k)*ao_oneD_prim_grad_p(i,k,l)
enddo
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ real, ao_oneD_prim_lapl_p, (ao_num,ao_prim_num_max) ]
implicit none
BEGIN_DOC
! Laplacian of the one-dimensional component of the primitive AOs
END_DOC
integer :: i, k, l
do k=1,ao_prim_num_max
do i=1,ao_num
ao_oneD_prim_lapl_p(i,k) = ao_oneD_prim_p(i,k) * ao_expo_transp(i,k) * &
( 4.*ao_expo_transp(i,k)*point_nucl_dist_2(ao_nucl(i)) - 6. )
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ real, ao_oneD_lapl_p, (ao_num) ]
implicit none
BEGIN_DOC
! Laplacian of the one-dimensional component of the AOs
END_DOC
integer :: i, k
do i=1,ao_num
ao_oneD_lapl_p(i) = 0.
enddo
do k=1,ao_prim_num_max
do i=1,ao_num
ao_oneD_lapl_p(i) = ao_oneD_lapl_p(i) + ao_coef_transp(i,k)*ao_oneD_prim_lapl_p(i,k)
enddo
enddo
END_PROVIDER