9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2024-06-02 02:35:18 +02:00

fixed bug in Laplacians

This commit is contained in:
Emmanuel Giner 2022-01-25 18:20:03 +01:00
parent 188ccf0d06
commit a65902aa33
2 changed files with 24 additions and 12 deletions

View File

@ -91,7 +91,19 @@
enddo enddo
END_PROVIDER END_PROVIDER
BEGIN_PROVIDER[double precision, aos_lapl_in_r_array, (ao_num,n_points_final_grid,3)] BEGIN_PROVIDER [double precision, aos_lapl_in_r_array_transp, (ao_num, n_points_final_grid,3)]
implicit none
integer :: i,j,m
do i = 1, n_points_final_grid
do j = 1, ao_num
do m = 1, 3
aos_lapl_in_r_array_transp(j,i,m) = aos_lapl_in_r_array(m,j,i)
enddo
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [double precision, aos_lapl_in_r_array, (3,ao_num,n_points_final_grid)]
implicit none implicit none
BEGIN_DOC BEGIN_DOC
! aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point ! aos_lapl_in_r_array(i,j,k) = value of the kth component of the laplacian of jth ao on the ith grid point
@ -100,20 +112,20 @@
END_DOC END_DOC
integer :: i,j,m integer :: i,j,m
double precision :: aos_array(ao_num), r(3) double precision :: aos_array(ao_num), r(3)
double precision :: aos_grad_array(ao_num,3) double precision :: aos_grad_array(3,ao_num)
double precision :: aos_lapl_array(ao_num,3) double precision :: aos_lapl_array(3,ao_num)
!$OMP PARALLEL DO & !$OMP PARALLEL DO &
!$OMP DEFAULT (NONE) & !$OMP DEFAULT (NONE) &
!$OMP PRIVATE (i,r,aos_array,aos_grad_array,aos_lapl_array,j,m) & !$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) !$OMP SHARED(aos_lapl_in_r_array,n_points_final_grid,ao_num,final_grid_points)
do m = 1, 3 do i = 1, n_points_final_grid
do i = 1, n_points_final_grid r(1) = final_grid_points(1,i)
r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i)
r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,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)
call give_all_aos_and_grad_and_lapl_at_r(r,aos_array,aos_grad_array,aos_lapl_array) do j = 1, ao_num
do j = 1, ao_num do m = 1, 3
aos_lapl_in_r_array(j,i,m) = aos_lapl_array(j,m) aos_lapl_in_r_array(m,j,i) = aos_lapl_array(m,j)
enddo enddo
enddo enddo
enddo enddo

View File

@ -138,7 +138,7 @@
integer :: m integer :: m
mos_lapl_in_r_array = 0.d0 mos_lapl_in_r_array = 0.d0
do m=1,3 do m=1,3
call dgemm('N','N',mo_num,n_points_final_grid,ao_num,1.d0,mo_coef_transp,mo_num,aos_lapl_in_r_array(1,1,m),ao_num,0.d0,mos_lapl_in_r_array(1,1,m),mo_num) call dgemm('N','N',mo_num,n_points_final_grid,ao_num,1.d0,mo_coef_transp,mo_num,aos_lapl_in_r_array_transp(1,1,m),ao_num,0.d0,mos_lapl_in_r_array(1,1,m),mo_num)
enddo enddo
END_PROVIDER END_PROVIDER