mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-22 20:34:58 +01:00
Less memory with QMCkl Jastrow
This commit is contained in:
parent
145e18f394
commit
6ad2dd668f
@ -121,8 +121,11 @@
|
|||||||
double precision :: f
|
double precision :: f
|
||||||
f = 1.d0 / dble(elec_num - 1)
|
f = 1.d0 / dble(elec_num - 1)
|
||||||
|
|
||||||
integer*8 :: n_points, k
|
integer*8 :: n_points, n_points_max, k
|
||||||
n_points = n_points_extra_final_grid * n_points_final_grid
|
integer :: ipoint_block, ipoint_end
|
||||||
|
|
||||||
|
n_points_max = n_points_extra_final_grid * n_points_final_grid
|
||||||
|
n_points = 100_8*n_points_extra_final_grid
|
||||||
|
|
||||||
double precision, allocatable :: rij(:,:,:)
|
double precision, allocatable :: rij(:,:,:)
|
||||||
allocate( rij(3, 2, n_points) )
|
allocate( rij(3, 2, n_points) )
|
||||||
@ -131,92 +134,96 @@
|
|||||||
integer(qmckl_exit_code) :: rc
|
integer(qmckl_exit_code) :: rc
|
||||||
|
|
||||||
double precision, allocatable :: gl(:,:,:)
|
double precision, allocatable :: gl(:,:,:)
|
||||||
|
|
||||||
allocate( gl(2,4,n_points) )
|
allocate( gl(2,4,n_points) )
|
||||||
|
|
||||||
k=0
|
do ipoint_block = 1, n_points_final_grid, 100 ! r1
|
||||||
do ipoint = 1, n_points_final_grid ! r1
|
ipoint_end = min(n_points_final_grid, ipoint_block+100)
|
||||||
do jpoint = 1, n_points_extra_final_grid ! r2
|
|
||||||
k=k+1
|
k=0
|
||||||
rij(1:3, 1, k) = final_grid_points (1:3, ipoint)
|
do ipoint = ipoint_block, ipoint_end
|
||||||
rij(1:3, 2, k) = final_grid_points_extra(1:3, jpoint)
|
do jpoint = 1, n_points_extra_final_grid ! r2
|
||||||
|
k=k+1
|
||||||
|
rij(1:3, 1, k) = final_grid_points (1:3, ipoint)
|
||||||
|
rij(1:3, 2, k) = final_grid_points_extra(1:3, jpoint)
|
||||||
|
end do
|
||||||
enddo
|
enddo
|
||||||
enddo
|
|
||||||
|
|
||||||
|
rc = qmckl_set_electron_coord(qmckl_ctx_jastrow, 'N', n_points, rij, n_points*6_8)
|
||||||
|
if (rc /= QMCKL_SUCCESS) then
|
||||||
|
print *, irp_here, 'qmckl error in set_electron_coord'
|
||||||
|
rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
||||||
|
stop -1
|
||||||
|
endif
|
||||||
|
|
||||||
rc = qmckl_set_electron_coord(qmckl_ctx_jastrow, 'N', n_points, rij, n_points*6_8)
|
! ---
|
||||||
if (rc /= QMCKL_SUCCESS) then
|
! e-e term
|
||||||
print *, irp_here, 'qmckl error in set_electron_coord'
|
|
||||||
rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
|
||||||
stop -1
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
rc = qmckl_get_jastrow_champ_factor_ee_gl(qmckl_ctx_jastrow, gl, 8_8*n_points)
|
||||||
|
if (rc /= QMCKL_SUCCESS) then
|
||||||
|
print *, irp_here, ' qmckl error in fact_ee_gl'
|
||||||
|
rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
||||||
|
stop -1
|
||||||
|
endif
|
||||||
|
|
||||||
! ---
|
k=0
|
||||||
! e-e term
|
do ipoint = ipoint_block, ipoint_end
|
||||||
|
do jpoint = 1, n_points_extra_final_grid ! r2
|
||||||
rc = qmckl_get_jastrow_champ_factor_ee_gl(qmckl_ctx_jastrow, gl, 8_8*n_points)
|
k=k+1
|
||||||
if (rc /= QMCKL_SUCCESS) then
|
grad1_u12_num(jpoint,ipoint,1) = gl(1,1,k)
|
||||||
print *, irp_here, ' qmckl error in fact_ee_gl'
|
grad1_u12_num(jpoint,ipoint,2) = gl(1,2,k)
|
||||||
rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
grad1_u12_num(jpoint,ipoint,3) = gl(1,3,k)
|
||||||
stop -1
|
enddo
|
||||||
endif
|
|
||||||
|
|
||||||
k=0
|
|
||||||
do ipoint = 1, n_points_final_grid ! r1
|
|
||||||
do jpoint = 1, n_points_extra_final_grid ! r2
|
|
||||||
k=k+1
|
|
||||||
grad1_u12_num(jpoint,ipoint,1) = gl(1,1,k)
|
|
||||||
grad1_u12_num(jpoint,ipoint,2) = gl(1,2,k)
|
|
||||||
grad1_u12_num(jpoint,ipoint,3) = gl(1,3,k)
|
|
||||||
enddo
|
enddo
|
||||||
enddo
|
|
||||||
|
|
||||||
! ---
|
! ---
|
||||||
! e-e-n term
|
! e-e-n term
|
||||||
|
|
||||||
! rc = qmckl_get_jastrow_champ_factor_een_gl(qmckl_ctx_jastrow, gl, 8_8*n_points)
|
! rc = qmckl_get_jastrow_champ_factor_een_gl(qmckl_ctx_jastrow, gl, 8_8*n_points)
|
||||||
! if (rc /= QMCKL_SUCCESS) then
|
! if (rc /= QMCKL_SUCCESS) then
|
||||||
! print *, irp_here, 'qmckl error in fact_een_gl'
|
! print *, irp_here, 'qmckl error in fact_een_gl'
|
||||||
! rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
! rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
||||||
! stop -1
|
! stop -1
|
||||||
! endif
|
! endif
|
||||||
!
|
!
|
||||||
! k=0
|
! k=0
|
||||||
! do ipoint = 1, n_points_final_grid ! r1
|
! do ipoint = 1, n_points_final_grid ! r1
|
||||||
! do jpoint = 1, n_points_extra_final_grid ! r2
|
! do jpoint = 1, n_points_extra_final_grid ! r2
|
||||||
! k=k+1
|
! k=k+1
|
||||||
! grad1_u12_num(jpoint,ipoint,1) = grad1_u12_num(jpoint,ipoint,1) + gl(1,1,k)
|
! grad1_u12_num(jpoint,ipoint,1) = grad1_u12_num(jpoint,ipoint,1) + gl(1,1,k)
|
||||||
! grad1_u12_num(jpoint,ipoint,2) = grad1_u12_num(jpoint,ipoint,2) + gl(1,2,k)
|
! grad1_u12_num(jpoint,ipoint,2) = grad1_u12_num(jpoint,ipoint,2) + gl(1,2,k)
|
||||||
! grad1_u12_num(jpoint,ipoint,3) = grad1_u12_num(jpoint,ipoint,3) + gl(1,3,k)
|
! grad1_u12_num(jpoint,ipoint,3) = grad1_u12_num(jpoint,ipoint,3) + gl(1,3,k)
|
||||||
! enddo
|
! enddo
|
||||||
! enddo
|
! enddo
|
||||||
|
|
||||||
! ---
|
! ---
|
||||||
! e-n term
|
! e-n term
|
||||||
|
|
||||||
rc = qmckl_get_jastrow_champ_factor_en_gl(qmckl_ctx_jastrow, gl, 8_8*n_points)
|
rc = qmckl_get_jastrow_champ_factor_en_gl(qmckl_ctx_jastrow, gl, 8_8*n_points)
|
||||||
if (rc /= QMCKL_SUCCESS) then
|
if (rc /= QMCKL_SUCCESS) then
|
||||||
print *, irp_here, 'qmckl error in fact_en_gl'
|
print *, irp_here, 'qmckl error in fact_en_gl'
|
||||||
rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
rc = qmckl_check(qmckl_ctx_jastrow, rc)
|
||||||
stop -1
|
stop -1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
k=0
|
k=0
|
||||||
do ipoint = 1, n_points_final_grid ! r1
|
do ipoint = ipoint_block, ipoint_end ! r1
|
||||||
do jpoint = 1, n_points_extra_final_grid ! r2
|
do jpoint = 1, n_points_extra_final_grid ! r2
|
||||||
k = k+1
|
k = k+1
|
||||||
grad1_u12_num(jpoint,ipoint,1) = grad1_u12_num(jpoint,ipoint,1) + f * gl(1,1,k)
|
grad1_u12_num(jpoint,ipoint,1) = grad1_u12_num(jpoint,ipoint,1) + f * gl(1,1,k)
|
||||||
grad1_u12_num(jpoint,ipoint,2) = grad1_u12_num(jpoint,ipoint,2) + f * gl(1,2,k)
|
grad1_u12_num(jpoint,ipoint,2) = grad1_u12_num(jpoint,ipoint,2) + f * gl(1,2,k)
|
||||||
grad1_u12_num(jpoint,ipoint,3) = grad1_u12_num(jpoint,ipoint,3) + f * gl(1,3,k)
|
grad1_u12_num(jpoint,ipoint,3) = grad1_u12_num(jpoint,ipoint,3) + f * gl(1,3,k)
|
||||||
|
|
||||||
|
dx = grad1_u12_num(jpoint,ipoint,1)
|
||||||
|
dy = grad1_u12_num(jpoint,ipoint,2)
|
||||||
|
dz = grad1_u12_num(jpoint,ipoint,3)
|
||||||
|
grad1_u12_squared_num(jpoint,ipoint) = dx*dx + dy*dy + dz*dz
|
||||||
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
do jpoint = 1, n_points_extra_final_grid ! r2
|
enddo !ipoint_block
|
||||||
dx = grad1_u12_num(jpoint,ipoint,1)
|
|
||||||
dy = grad1_u12_num(jpoint,ipoint,2)
|
|
||||||
dz = grad1_u12_num(jpoint,ipoint,3)
|
|
||||||
grad1_u12_squared_num(jpoint,ipoint) = dx*dx + dy*dy + dz*dz
|
|
||||||
enddo
|
|
||||||
enddo
|
|
||||||
|
|
||||||
deallocate(gl, rij)
|
deallocate(gl, rij)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user