mirror of
https://gitlab.com/scemama/eplf
synced 2024-11-19 04:22:38 +01:00
129 lines
2.6 KiB
FortranFixed
129 lines
2.6 KiB
FortranFixed
|
BEGIN_PROVIDER [ real, ao_oneD_prim_p, (ao_prim_num_max,ao_num) ]
|
||
|
implicit none
|
||
|
include 'types.F'
|
||
|
|
||
|
BEGIN_DOC
|
||
|
! Exponentials of the primitive AOs
|
||
|
END_DOC
|
||
|
integer :: i, k
|
||
|
real:: r2, rtemp
|
||
|
|
||
|
! Compute alpha*r or alpha*r^2
|
||
|
do i=1,ao_num
|
||
|
r2 = point_nucl_dist_2(ao_nucl(i))
|
||
|
do k=1,ao_prim_num(i)
|
||
|
ao_oneD_prim_p(k,i) = r2
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
! Compute exp(-alpha*r) or exp(-alpha*r^2)
|
||
|
do i=1,ao_num
|
||
|
do k=1,ao_prim_num(i)
|
||
|
ao_oneD_prim_p(k,i) = exp(-ao_oneD_prim_p(k,i)*ao_expo(k,i))
|
||
|
enddo
|
||
|
! Cut below 1.d-12
|
||
|
do k=1,ao_prim_num(i)
|
||
|
if ( abs(ao_oneD_prim_p(k,i)) < 1.e-12 ) then
|
||
|
ao_oneD_prim_p(k,i) = 0.
|
||
|
endif
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
END_PROVIDER
|
||
|
|
||
|
BEGIN_PROVIDER [ real, ao_oneD_p, (ao_num) ]
|
||
|
implicit none
|
||
|
include 'types.F'
|
||
|
|
||
|
BEGIN_DOC
|
||
|
! One-dimensional component of the AOs
|
||
|
END_DOC
|
||
|
|
||
|
integer :: i, k
|
||
|
|
||
|
do i=1,ao_num
|
||
|
ao_oneD_p(i) = 0.
|
||
|
do k=1,ao_prim_num(i)
|
||
|
ao_oneD_p(i) = ao_oneD_p(i) + ao_coef(k,i)*ao_oneD_prim_p(k,i)
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
END_PROVIDER
|
||
|
|
||
|
|
||
|
BEGIN_PROVIDER [ real, ao_oneD_prim_grad_p, (ao_prim_num_max,ao_num,3) ]
|
||
|
implicit none
|
||
|
include 'types.F'
|
||
|
|
||
|
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 i=1,ao_num
|
||
|
factor = -2.*point_nucl_dist_vec(ao_nucl(i),l)
|
||
|
do k=1,ao_prim_num(i)
|
||
|
ao_oneD_prim_grad_p(k,i,l) = factor*ao_expo(k,i)*ao_oneD_prim_p(k,i)
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
END_PROVIDER
|
||
|
|
||
|
BEGIN_PROVIDER [ real, ao_oneD_grad_p, (ao_num,3) ]
|
||
|
implicit none
|
||
|
include 'types.F'
|
||
|
|
||
|
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.
|
||
|
do k=1,ao_prim_num(i)
|
||
|
ao_oneD_grad_p(i,l) = ao_oneD_grad_p(i,l) + ao_coef(k,i)*ao_oneD_prim_grad_p(k,i,l)
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
END_PROVIDER
|
||
|
|
||
|
BEGIN_PROVIDER [ real, ao_oneD_prim_lapl_p, (ao_prim_num_max,ao_num) ]
|
||
|
implicit none
|
||
|
include 'types.F'
|
||
|
|
||
|
BEGIN_DOC
|
||
|
! Laplacian of the one-dimensional component of the primitive AOs
|
||
|
END_DOC
|
||
|
integer :: i, k, l
|
||
|
do i=1,ao_num
|
||
|
do k=1,ao_prim_num(i)
|
||
|
ao_oneD_prim_lapl_p(k,i) = ao_oneD_prim_p(k,i) * ao_expo(k,i) * &
|
||
|
( 4.*ao_expo(k,i)*point_nucl_dist_2(ao_nucl(i)) - 6. )
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
END_PROVIDER
|
||
|
|
||
|
BEGIN_PROVIDER [ real, ao_oneD_lapl_p, (ao_num) ]
|
||
|
implicit none
|
||
|
include 'types.F'
|
||
|
|
||
|
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.
|
||
|
do k=1,ao_prim_num(i)
|
||
|
ao_oneD_lapl_p(i) = ao_oneD_lapl_p(i) + ao_coef(k,i)*ao_oneD_prim_lapl_p(k,i)
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
END_PROVIDER
|
||
|
|