10
0
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-11-07 22:53:52 +01:00
QuantumPackage/src/dft_utils_in_r/ao_in_r.irp.f

142 lines
3.9 KiB
Fortran
Raw Normal View History

2020-04-05 13:58:17 +02:00
2019-01-25 11:39:31 +01:00
BEGIN_PROVIDER[double precision, aos_in_r_array, (ao_num,n_points_final_grid)]
implicit none
BEGIN_DOC
! aos_in_r_array(i,j) = value of the ith ao on the jth grid point
END_DOC
integer :: i,j
double precision :: aos_array(ao_num), r(3)
2020-04-05 13:58:17 +02:00
!$OMP PARALLEL DO &
!$OMP DEFAULT (NONE) &
!$OMP PRIVATE (i,r,aos_array,j) &
!$OMP SHARED(aos_in_r_array,n_points_final_grid,ao_num,final_grid_points)
2019-01-25 11:39:31 +01:00
do i = 1, n_points_final_grid
r(1) = final_grid_points(1,i)
r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i)
call give_all_aos_at_r(r,aos_array)
do j = 1, ao_num
aos_in_r_array(j,i) = aos_array(j)
enddo
enddo
2020-04-05 13:58:17 +02:00
!$OMP END PARALLEL DO
2019-01-25 11:39:31 +01:00
END_PROVIDER
2020-04-05 13:58:17 +02:00
BEGIN_PROVIDER[double precision, aos_in_r_array_transp, (n_points_final_grid,ao_num)]
2019-01-25 11:39:31 +01:00
implicit none
BEGIN_DOC
2020-04-05 13:58:17 +02:00
! aos_in_r_array_transp(i,j) = value of the jth ao on the ith grid point
END_DOC
2020-04-05 13:58:17 +02:00
integer :: i,j
double precision :: aos_array(ao_num), r(3)
do i = 1, n_points_final_grid
2020-04-05 13:58:17 +02:00
do j = 1, ao_num
aos_in_r_array_transp(i,j) = aos_in_r_array(j,i)
enddo
enddo
2020-04-05 13:58:17 +02:00
END_PROVIDER
2020-04-05 13:58:17 +02:00
BEGIN_PROVIDER[double precision, aos_grad_in_r_array, (ao_num,n_points_final_grid,3)]
implicit none
BEGIN_DOC
2020-04-05 13:58:17 +02:00
! aos_grad_in_r_array(i,j,k) = value of the kth component of the gradient of ith ao on the jth grid point
2019-01-25 11:39:31 +01:00
!
! k = 1 : x, k= 2, y, k 3, z
END_DOC
integer :: i,j,m
double precision :: aos_array(ao_num), r(3)
double precision :: aos_grad_array(3,ao_num)
2020-04-05 13:58:17 +02:00
!$OMP PARALLEL DO &
!$OMP DEFAULT (NONE) &
!$OMP PRIVATE (i,r,aos_array,aos_grad_array,j,m) &
!$OMP SHARED(aos_grad_in_r_array,n_points_final_grid,ao_num,final_grid_points)
2019-01-25 11:39:31 +01:00
do i = 1, n_points_final_grid
r(1) = final_grid_points(1,i)
r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i)
call give_all_aos_and_grad_at_r(r,aos_array,aos_grad_array)
do m = 1, 3
do j = 1, ao_num
2020-04-05 13:58:17 +02:00
aos_grad_in_r_array(j,i,m) = aos_grad_array(m,j)
2019-01-25 11:39:31 +01:00
enddo
enddo
enddo
2020-04-05 13:58:17 +02:00
!$OMP END PARALLEL DO
END_PROVIDER
2020-04-05 13:58:17 +02:00
BEGIN_PROVIDER[double precision, aos_grad_in_r_array_transp, (3,ao_num,n_points_final_grid)]
implicit none
BEGIN_DOC
2020-04-05 13:58:17 +02:00
! aos_grad_in_r_array_transp(k,i,j) = value of the kth component of the gradient of jth ao on the ith grid point
!
! k = 1 : x, k= 2, y, k 3, z
END_DOC
integer :: i,j,m
double precision :: aos_array(ao_num), r(3)
double precision :: aos_grad_array(3,ao_num)
do i = 1, n_points_final_grid
do m = 1, 3
do j = 1, ao_num
2020-04-05 13:58:17 +02:00
aos_grad_in_r_array_transp(m,j,i) = aos_grad_in_r_array(j,i,m)
enddo
enddo
enddo
2019-01-25 11:39:31 +01:00
END_PROVIDER
BEGIN_PROVIDER[double precision, aos_lapl_in_r_array, (ao_num,n_points_final_grid,3)]
implicit none
BEGIN_DOC
2020-04-05 13:58:17 +02:00
! aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
2019-01-25 11:39:31 +01:00
!
! k = 1 : x, k= 2, y, k 3, z
END_DOC
integer :: i,j,m
double precision :: aos_array(ao_num), r(3)
double precision :: aos_grad_array(ao_num,3)
double precision :: aos_lapl_array(ao_num,3)
2020-04-05 13:58:17 +02:00
!$OMP PARALLEL DO &
!$OMP DEFAULT (NONE) &
!$OMP PRIVATE (i,r,aos_array,aos_grad_array,aos_lapl_array,j,m) &
!$OMP SHARED(aos_lapl_in_r_array,n_points_final_grid,ao_num,final_grid_points)
2019-01-25 11:39:31 +01:00
do m = 1, 3
do i = 1, n_points_final_grid
r(1) = final_grid_points(1,i)
r(2) = final_grid_points(2,i)
r(3) = final_grid_points(3,i)
call give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array)
do j = 1, ao_num
aos_lapl_in_r_array(j,i,m) = aos_lapl_array(j,m)
2020-04-05 13:58:17 +02:00
enddo
enddo
enddo
!$OMP END PARALLEL DO
END_PROVIDER
2020-10-28 11:24:32 +01:00
BEGIN_PROVIDER[double precision, aos_grad_in_r_array_transp_bis, (n_points_final_grid,ao_num,3)]
implicit none
2021-01-02 15:40:03 +01:00
BEGIN_DOC
! Transposed gradients
!
END_DOC
2020-10-28 11:24:32 +01:00
integer :: i,j,m
double precision :: aos_array(ao_num), r(3)
double precision :: aos_grad_array(3,ao_num)
do m = 1, 3
do j = 1, ao_num
do i = 1, n_points_final_grid
aos_grad_in_r_array_transp_bis(i,j,m) = aos_grad_in_r_array(j,i,m)
enddo
enddo
enddo
END_PROVIDER
2020-04-05 13:58:17 +02:00