mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2025-04-30 04:15:00 +02:00
working 3 body!
This commit is contained in:
parent
0ee92ca5aa
commit
f20921269a
@ -4162,7 +4162,7 @@ qmckl_exit_code qmckl_provide_een_rescaled_single_e_gl(qmckl_context context)
|
||||
| ~coord_ee~ | ~double[walk_num][3][elec_num]~ | in | Electron coordinates |
|
||||
| ~single_ee_distance~ | ~double[walk_num][elec_num]~ | in | Electron-electron distances |
|
||||
| ~een_rescaled_single_e~ | ~double[walk_num][0:cord_num][elec_num]~ | in | Electron-electron distances |
|
||||
| ~een_rescaled_single_e_gl~ | ~double[walk_num][0:cord_num][4][elec_num]~ | out | Electron-electron rescaled distances |
|
||||
| ~een_rescaled_single_e_gl~ | ~double[walk_num][0:cord_num][elec_num][4]~ | out | Electron-electron rescaled distances |
|
||||
|
||||
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
|
||||
integer function qmckl_compute_een_rescaled_single_e_gl_f( &
|
||||
@ -4181,7 +4181,7 @@ integer function qmckl_compute_een_rescaled_single_e_gl_f( &
|
||||
double precision , intent(in) :: coord_ee(elec_num,3,walk_num)
|
||||
double precision , intent(in) :: single_ee_distance(elec_num,walk_num)
|
||||
double precision , intent(in) :: een_rescaled_single_e(elec_num,0:cord_num,walk_num)
|
||||
double precision , intent(out) :: een_rescaled_single_e_gl(elec_num,4,0:cord_num,walk_num)
|
||||
double precision , intent(out) :: een_rescaled_single_e_gl(4,elec_num,0:cord_num,walk_num)
|
||||
double precision,dimension(:,:),allocatable :: elec_dist_gl
|
||||
double precision :: x, rij_inv, kappa_l
|
||||
integer*8 :: i, j, k, l, nw, ii, num
|
||||
@ -4221,7 +4221,7 @@ integer function qmckl_compute_een_rescaled_single_e_gl_f( &
|
||||
do i = 1, elec_num
|
||||
rij_inv = 1.0d0 / single_ee_distance(i, nw)
|
||||
do ii = 1, 3
|
||||
elec_dist_gl(ii, i) = (coord_ee(i, ii, nw) - coord(ii)) * rij_inv
|
||||
elec_dist_gl(ii, i) = (coord(ii) - coord_ee(i, ii, nw)) * rij_inv
|
||||
end do
|
||||
elec_dist_gl(4, i) = 2.0d0 * rij_inv
|
||||
end do
|
||||
@ -4231,20 +4231,20 @@ integer function qmckl_compute_een_rescaled_single_e_gl_f( &
|
||||
do l = 1, cord_num
|
||||
kappa_l = - dble(l) * rescale_factor_ee
|
||||
do i = 1, elec_num
|
||||
een_rescaled_single_e_gl(i, 1, l, nw) = kappa_l * elec_dist_gl(1, i)
|
||||
een_rescaled_single_e_gl(i, 2, l, nw) = kappa_l * elec_dist_gl(2, i)
|
||||
een_rescaled_single_e_gl(i, 3, l, nw) = kappa_l * elec_dist_gl(3, i)
|
||||
een_rescaled_single_e_gl(i, 4, l, nw) = kappa_l * elec_dist_gl(4, i)
|
||||
een_rescaled_single_e_gl(1, i, l, nw) = kappa_l * elec_dist_gl(1, i)
|
||||
een_rescaled_single_e_gl(2, i, l, nw) = kappa_l * elec_dist_gl(2, i)
|
||||
een_rescaled_single_e_gl(3, i, l, nw) = kappa_l * elec_dist_gl(3, i)
|
||||
een_rescaled_single_e_gl(4, i, l, nw) = kappa_l * elec_dist_gl(4, i)
|
||||
|
||||
een_rescaled_single_e_gl(i, 4, l, nw) = een_rescaled_single_e_gl(i, 4, l, nw) &
|
||||
+ een_rescaled_single_e_gl(i, 1, l, nw) * een_rescaled_single_e_gl(i, 1, l, nw) &
|
||||
+ een_rescaled_single_e_gl(i, 2, l, nw) * een_rescaled_single_e_gl(i, 2, l, nw) &
|
||||
+ een_rescaled_single_e_gl(i, 3, l, nw) * een_rescaled_single_e_gl(i, 3, l, nw)
|
||||
een_rescaled_single_e_gl(4, i, l, nw) = een_rescaled_single_e_gl(4, i, l, nw) &
|
||||
+ een_rescaled_single_e_gl(1, i, l, nw) * een_rescaled_single_e_gl(1, i, l, nw) &
|
||||
+ een_rescaled_single_e_gl(2, i, l, nw) * een_rescaled_single_e_gl(2, i, l, nw) &
|
||||
+ een_rescaled_single_e_gl(3, i, l, nw) * een_rescaled_single_e_gl(3, i, l, nw)
|
||||
|
||||
een_rescaled_single_e_gl(i,1,l,nw) = een_rescaled_single_e_gl(i,1,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
een_rescaled_single_e_gl(i,2,l,nw) = een_rescaled_single_e_gl(i,2,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
een_rescaled_single_e_gl(i,3,l,nw) = een_rescaled_single_e_gl(i,3,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
een_rescaled_single_e_gl(i,4,l,nw) = een_rescaled_single_e_gl(i,4,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
een_rescaled_single_e_gl(1,i,l,nw) = een_rescaled_single_e_gl(1,i,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
een_rescaled_single_e_gl(2,i,l,nw) = een_rescaled_single_e_gl(2,i,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
een_rescaled_single_e_gl(3,i,l,nw) = een_rescaled_single_e_gl(3,i,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
een_rescaled_single_e_gl(4,i,l,nw) = een_rescaled_single_e_gl(4,i,l,nw) * een_rescaled_single_e(i,l,nw)
|
||||
|
||||
end do
|
||||
end do
|
||||
@ -4319,7 +4319,7 @@ end function qmckl_compute_een_rescaled_single_e_gl_f
|
||||
real (c_double ) , intent(in) :: coord_ee(elec_num, 3, walk_num)
|
||||
real (c_double ) , intent(in) :: single_ee_distance(elec_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_single_e(elec_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(out) :: een_rescaled_single_e_gl(elec_num,4,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(out) :: een_rescaled_single_e_gl(4,elec_num,0:cord_num,walk_num)
|
||||
|
||||
integer(c_int32_t), external :: qmckl_compute_een_rescaled_single_e_gl_f
|
||||
info = qmckl_compute_een_rescaled_single_e_gl_f &
|
||||
@ -4387,7 +4387,7 @@ assert (rc == QMCKL_SUCCESS);
|
||||
rc = qmckl_set_single_point(context, 'N', 2, new_coords, 3);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
double een_rescaled_single_e_gl[walk_num][cord_num+1][4][elec_num];
|
||||
double een_rescaled_single_e_gl[walk_num][cord_num+1][elec_num][4];
|
||||
rc = qmckl_get_een_rescaled_single_e_gl(context, &een_rescaled_single_e_gl[0][0][0][0], walk_num*(cord_num+1)*elec_num*4);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
@ -4409,7 +4409,14 @@ for (int l = 0; l < cord_num+1; l++) {
|
||||
for (int nw = 0; nw < walk_num; nw++) {
|
||||
for (int i = 0; i < elec_num; i++) {
|
||||
for (int m = 0; m < 4; m++) {
|
||||
assert(fabs(een_rescaled_ee_gl[nw][l][2][m][i] - een_rescaled_single_e_gl[nw][l][m][i]) < 1.e-12);
|
||||
//printf("een_rescaled_ee_gl[nw][l][i][m][2] %i %i %i %f \n", l, m ,i, een_rescaled_ee_gl[nw][l][i][m][2]);
|
||||
//printf("een_rescaled_single_e_gl[nw][l][i][m] %i %i %i %f\n", l, m, i,een_rescaled_single_e_gl[nw][l][i][m]);
|
||||
//if (m == 3) {
|
||||
// assert(fabs(een_rescaled_ee_gl[nw][l][2][m][i] - een_rescaled_single_e_gl[nw][l][m][i]) < 1.e-12);
|
||||
//} else{
|
||||
// assert(fabs(een_rescaled_ee_gl[nw][l][2][m][i] + een_rescaled_single_e_gl[nw][l][m][i]) < 1.e-12);
|
||||
//}
|
||||
assert(fabs(een_rescaled_ee_gl[nw][l][i][m][2] - een_rescaled_single_e_gl[nw][l][i][m]) < 1.e-12);
|
||||
|
||||
}
|
||||
}
|
||||
@ -4449,7 +4456,7 @@ qmckl_get_jastrow_champ_delta_p_gl(qmckl_context context,
|
||||
assert (ctx != NULL);
|
||||
|
||||
int64_t sze = ctx->electron.walker.num * ctx->jastrow_champ.cord_num *
|
||||
(ctx->jastrow_champ.cord_num + 1) * ctx->nucleus.num * ctx->electron.num;
|
||||
(ctx->jastrow_champ.cord_num + 1) * ctx->nucleus.num * ctx->electron.num * 4;
|
||||
|
||||
if (size_max < sze) {
|
||||
return qmckl_failwith( context,
|
||||
@ -4570,11 +4577,11 @@ qmckl_exit_code qmckl_provide_jastrow_champ_delta_p_gl(qmckl_context context)
|
||||
| ~een_rescaled_e~ | ~double[walk_num][0:cord_num][elec_num][elec_num]~ | in | Electron-electron rescaled distances |
|
||||
| ~een_rescaled_single_n~ | ~double[walk_num][0:cord_num][nucl_num]~ | in | Electron-nucleus single rescaled distances |
|
||||
| ~een_rescaled_single_e~ | ~double[walk_num][0:cord_num][elec_num]~ | in | Electron-electron single rescaled distances |
|
||||
| ~een_rescaled_n_gl~ | ~double[walk_num][0:cord_num][nucl_num][elec_num][4]~ | in | Electron-nucleus rescaled distances |
|
||||
| ~een_rescaled_e_gl~ | ~double[walk_num][0:cord_num][elec_num][elec_num][4]~ | in | Electron-electron rescaled distances |
|
||||
| ~een_rescaled_n_gl~ | ~double[walk_num][0:cord_num][nucl_num][4][elec_num]~ | in | Electron-nucleus rescaled distances |
|
||||
| ~een_rescaled_e_gl~ | ~double[walk_num][0:cord_num][elec_num][4][elec_num]~ | in | Electron-electron rescaled distances |
|
||||
| ~een_rescaled_single_n_gl~ | ~double[walk_num][0:cord_num][nucl_num][4]~ | in | Electron-nucleus single rescaled distances |
|
||||
| ~een_rescaled_single_e_gl~ | ~double[walk_num][0:cord_num][elec_num][4]~ | in | Electron-electron single rescaled distances |
|
||||
| ~delta_p_gl~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][elec_num][4]~ | out | Electron-nucleus jastrow |
|
||||
| ~delta_p_gl~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][4][elec_num]~ | out | Electron-nucleus jastrow |
|
||||
|
||||
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
|
||||
integer function qmckl_compute_jastrow_champ_delta_p_gl_doc_f( &
|
||||
@ -4593,10 +4600,10 @@ integer function qmckl_compute_jastrow_champ_delta_p_gl_doc_f( &
|
||||
double precision , intent(in) :: een_rescaled_n_gl(elec_num, 4, nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_e_gl(elec_num, 4, elec_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_single_n_gl(4, nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_single_e_gl(4, elec_num, 0:cord_num, walk_num)
|
||||
double precision , intent(out) :: delta_p_gl(4,elec_num, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_single_e_gl(4,elec_num, 0:cord_num, walk_num)
|
||||
double precision , intent(out) :: delta_p_gl(elec_num,4,nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
|
||||
double precision :: delta_e_gl(4, elec_num, 0:cord_num, walk_num)
|
||||
double precision :: delta_e_gl(4,elec_num, 0:cord_num, walk_num)
|
||||
|
||||
double precision :: delta_e_gl_2(elec_num, 0:cord_num, walk_num)
|
||||
double precision :: een_rescaled_e_gl_2(elec_num, elec_num, 0:cord_num, walk_num)
|
||||
@ -4606,8 +4613,6 @@ integer function qmckl_compute_jastrow_champ_delta_p_gl_doc_f( &
|
||||
double precision :: delta_c(nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
double precision :: delta_c2(elec_num, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
|
||||
|
||||
|
||||
integer*8 :: i, a, j, l, k, p, m, n, nw, num
|
||||
double precision :: accu, accu2, cn
|
||||
integer*8 :: LDA, LDB, LDC
|
||||
@ -4626,7 +4631,9 @@ integer function qmckl_compute_jastrow_champ_delta_p_gl_doc_f( &
|
||||
|
||||
if (cord_num == 0) return
|
||||
|
||||
|
||||
delta_e_gl(:,:,:,:) = een_rescaled_single_e_gl(:,:,:,:) - een_rescaled_e_gl(num, :, :, :, :)
|
||||
|
||||
delta_e_gl(:, num, :, :) = 0.0d0
|
||||
|
||||
een_rescaled_delta_n(:,:,:) = een_rescaled_single_n(:,:,:) - een_rescaled_n(num, :, :, :)
|
||||
@ -4636,71 +4643,126 @@ integer function qmckl_compute_jastrow_champ_delta_p_gl_doc_f( &
|
||||
delta_p_gl = 0.0d0
|
||||
|
||||
|
||||
if (.false.) then
|
||||
! First calculate delta p
|
||||
do nw=1, walk_num
|
||||
do m=0, cord_num-1
|
||||
do k = 1, 4
|
||||
|
||||
do m=0, cord_num-1
|
||||
do a = 1, nucl_num
|
||||
do l=0, cord_num
|
||||
do j = 1, elec_num
|
||||
delta_p_gl(k,num,a,l,m,nw) = delta_p_gl(k,num,a,l,m,nw) + delta_e_gl(k,j,m,nw) * een_rescaled_n(j,a,l,nw)
|
||||
delta_p_gl(k,j,a,l,m,nw) = delta_p_gl(k,j,a,l,m,nw) + delta_e_gl(k,j,m,nw) * een_rescaled_n(num,a,l,nw)
|
||||
do k = 1, 3
|
||||
delta_p_gl(num,k,a,l,m,nw) = delta_p_gl(num,k,a,l,m,nw) + delta_e_gl(k,j,m,nw) * een_rescaled_n(j,a,l,nw)
|
||||
delta_p_gl(j,k,a,l,m,nw) = delta_p_gl(j,k,a,l,m,nw) - delta_e_gl(k,j,m,nw) * een_rescaled_n(num,a,l,nw)
|
||||
|
||||
delta_p_gl(k,j,a,l,m,nw) = delta_p_gl(k,j,a,l,m,nw) + een_rescaled_e_gl(j,k, num,m,nw) * een_rescaled_delta_n(a,l,nw)
|
||||
|
||||
delta_p_gl(k,j,a,l,m,nw) = delta_p_gl(k,j,a,l,m,nw) + delta_e_gl(k, j,m,nw) * een_rescaled_delta_n(a,l,nw)
|
||||
delta_p_gl(j,k,a,l,m,nw) = delta_p_gl(j,k,a,l,m,nw) + een_rescaled_e_gl(j,k,num,m,nw) * een_rescaled_delta_n(a,l,nw)
|
||||
|
||||
delta_p_gl(j,k,a,l,m,nw) = delta_p_gl(j,k,a,l,m,nw) - delta_e_gl(k,j,m,nw) * een_rescaled_delta_n(a,l,nw)
|
||||
|
||||
|
||||
end do
|
||||
delta_p_gl(num,4,a,l,m,nw) = delta_p_gl(num,4,a,l,m,nw) + delta_e_gl(4,j,m,nw) * een_rescaled_n(j,a,l,nw)
|
||||
delta_p_gl(j,4,a,l,m,nw) = delta_p_gl(j,4,a,l,m,nw) + delta_e_gl(4,j,m,nw) * een_rescaled_n(num,a,l,nw)
|
||||
|
||||
delta_p_gl(j,4,a,l,m,nw) = delta_p_gl(j,4,a,l,m,nw) + een_rescaled_e_gl(num,4,j,m,nw) * een_rescaled_delta_n(a,l,nw)
|
||||
|
||||
delta_p_gl(j,4,a,l,m,nw) = delta_p_gl(j,4,a,l,m,nw) + delta_e_gl(4,j,m,nw) * een_rescaled_delta_n(a,l,nw)
|
||||
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
!delta_e_gl_2(:,:,:) = delta_e_gl(k, :,:,:)
|
||||
!een_rescaled_e_gl_2(:,:,:,:) = een_rescaled_e_gl(:,k, :,:,:)
|
||||
else
|
||||
|
||||
!info = qmckl_dgemm(context, 'T', 'N', 1, nucl_num * (cord_num+1), elec_num, 1.0d0, &
|
||||
! delta_e_gl_2(1,m,nw),elec_num, &
|
||||
! een_rescaled_n(1,1,0,nw),elec_num, &
|
||||
! 0.0d0, &
|
||||
! delta_c(1,0,m,nw),1)
|
||||
do nw=1, walk_num
|
||||
do m=0, cord_num-1
|
||||
|
||||
!info = qmckl_dgemm(context, 'N', 'N', elec_num, nucl_num * (cord_num+1), 1, 1.0d0, &
|
||||
! delta_e_gl_2(1,m,nw),elec_num, &
|
||||
! een_rescaled_n(num,1,0,nw),elec_num, &
|
||||
! 0.0d0, &
|
||||
! delta_c2(1,1,0,m,nw),elec_num)
|
||||
do k = 1, 3
|
||||
delta_e_gl_2(:,:,:) = delta_e_gl(k, :,:,:)
|
||||
een_rescaled_e_gl_2(:,:,:,:) = een_rescaled_e_gl(:,k, :,:,:)
|
||||
|
||||
!delta_c2(num,:,:,m,nw) = delta_c2(num,:,:,m,nw) + delta_c(:,:,m,nw)
|
||||
!delta_p_gl(k,:,:,:,m,nw) = delta_c2(:,:,:,m,nw)
|
||||
info = qmckl_dgemm(context, 'T', 'N', 1, nucl_num * (cord_num+1), elec_num, 1.0d0, &
|
||||
delta_e_gl_2(1,m,nw),elec_num, &
|
||||
een_rescaled_n(1,1,0,nw),elec_num, &
|
||||
0.0d0, &
|
||||
delta_c(1,0,m,nw),1)
|
||||
|
||||
info = qmckl_dgemm(context, 'N', 'N', elec_num, nucl_num * (cord_num+1), 1, -1.0d0, &
|
||||
delta_e_gl_2(1,m,nw),elec_num, &
|
||||
een_rescaled_n(num,1,0,nw),elec_num, &
|
||||
0.0d0, &
|
||||
delta_c2(1,1,0,m,nw),elec_num)
|
||||
|
||||
delta_c2(num,:,:,m,nw) = delta_c2(num,:,:,m,nw) + delta_c(:,:,m,nw)
|
||||
delta_p_gl(:,k,:,:,m,nw) = delta_c2(:,:,:,m,nw)
|
||||
|
||||
|
||||
!info = qmckl_dgemm(context, 'N', 'T', elec_num, nucl_num * (cord_num+1), 1, 1.0d0, &
|
||||
! een_rescaled_e_gl_2(:,num,m,nw),elec_num, &
|
||||
! een_rescaled_delta_n(:,:,nw),nucl_num* (cord_num+1), &
|
||||
! 0.0d0, &
|
||||
! delta_c2(:,:,:,m,nw),elec_num)
|
||||
info = qmckl_dgemm(context, 'N', 'T', elec_num, nucl_num * (cord_num+1), 1, 1.0d0, &
|
||||
een_rescaled_e_gl_2(:,num,m,nw),elec_num, &
|
||||
een_rescaled_delta_n(:,:,nw),nucl_num* (cord_num+1), &
|
||||
0.0d0, &
|
||||
delta_c2(:,:,:,m,nw),elec_num)
|
||||
|
||||
|
||||
|
||||
!delta_p_gl(k,:,:,:,m,nw) = delta_p_gl(k,:,:,:,m,nw) + delta_c2(:,:,:,m,nw)
|
||||
delta_p_gl(:,k,:,:,m,nw) = delta_p_gl(:,k,:,:,m,nw) + delta_c2(:,:,:,m,nw)
|
||||
|
||||
!info = qmckl_dgemm(context, 'N', 'T', elec_num, nucl_num * (cord_num+1), 1, 1.0d0, &
|
||||
! delta_e_gl_2(:,m,nw),elec_num, &
|
||||
! een_rescaled_delta_n(:,:,nw),nucl_num* (cord_num+1), &
|
||||
! 0.0d0, &
|
||||
! delta_c2(:,:,:,m,nw),elec_num)
|
||||
info = qmckl_dgemm(context, 'N', 'T', elec_num, nucl_num * (cord_num+1), 1, -1.0d0, &
|
||||
delta_e_gl_2(:,m,nw),elec_num, &
|
||||
een_rescaled_delta_n(:,:,nw),nucl_num* (cord_num+1), &
|
||||
0.0d0, &
|
||||
delta_c2(:,:,:,m,nw),elec_num)
|
||||
|
||||
!delta_p_gl(k,:,:,:,m,nw) = delta_p_gl(k,:,:,:,m,nw) + delta_c2(:,:,:,m,nw)
|
||||
delta_p_gl(:,k,:,:,m,nw) = delta_p_gl(:,k,:,:,m,nw) + delta_c2(:,:,:,m,nw)
|
||||
|
||||
|
||||
end do
|
||||
k = 4
|
||||
delta_e_gl_2(:,:,:) = delta_e_gl(k, :,:,:)
|
||||
een_rescaled_e_gl_2(:,:,:,:) = een_rescaled_e_gl(:,k, :,:,:)
|
||||
|
||||
info = qmckl_dgemm(context, 'T', 'N', 1, nucl_num * (cord_num+1), elec_num, 1.0d0, &
|
||||
delta_e_gl_2(1,m,nw),elec_num, &
|
||||
een_rescaled_n(1,1,0,nw),elec_num, &
|
||||
0.0d0, &
|
||||
delta_c(1,0,m,nw),1)
|
||||
|
||||
info = qmckl_dgemm(context, 'N', 'N', elec_num, nucl_num * (cord_num+1), 1, 1.0d0, &
|
||||
delta_e_gl_2(1,m,nw),elec_num, &
|
||||
een_rescaled_n(num,1,0,nw),elec_num, &
|
||||
0.0d0, &
|
||||
delta_c2(1,1,0,m,nw),elec_num)
|
||||
|
||||
delta_c2(num,:,:,m,nw) = delta_c2(num,:,:,m,nw) + delta_c(:,:,m,nw)
|
||||
delta_p_gl(:,k,:,:,m,nw) = delta_c2(:,:,:,m,nw)
|
||||
|
||||
|
||||
info = qmckl_dgemm(context, 'N', 'T', elec_num, nucl_num * (cord_num+1), 1, 1.0d0, &
|
||||
een_rescaled_e_gl_2(:,num,m,nw),elec_num, &
|
||||
een_rescaled_delta_n(:,:,nw),nucl_num* (cord_num+1), &
|
||||
0.0d0, &
|
||||
delta_c2(:,:,:,m,nw),elec_num)
|
||||
|
||||
|
||||
delta_p_gl(:,k,:,:,m,nw) = delta_p_gl(:,k,:,:,m,nw) + delta_c2(:,:,:,m,nw)
|
||||
|
||||
info = qmckl_dgemm(context, 'N', 'T', elec_num, nucl_num * (cord_num+1), 1, 1.0d0, &
|
||||
delta_e_gl_2(:,m,nw),elec_num, &
|
||||
een_rescaled_delta_n(:,:,nw),nucl_num* (cord_num+1), &
|
||||
0.0d0, &
|
||||
delta_c2(:,:,:,m,nw),elec_num)
|
||||
|
||||
delta_p_gl(:,k,:,:,m,nw) = delta_p_gl(:,k,:,:,m,nw) + delta_c2(:,:,:,m,nw)
|
||||
end do
|
||||
end do
|
||||
end if
|
||||
|
||||
|
||||
|
||||
end function qmckl_compute_jastrow_champ_delta_p_gl_doc_f
|
||||
|
||||
#+end_src
|
||||
|
||||
# #+CALL: generate_c_header(table=qmckl_factor_een_args,rettyp=qmckl_exit_code),fname=get_value("Name"))
|
||||
@ -4809,8 +4871,8 @@ qmckl_compute_jastrow_champ_delta_p_gl (const qmckl_context context,
|
||||
real (c_double ) , intent(in) :: een_rescaled_n_gl(elec_num,4,nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_e_gl(elec_num,4,elec_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_single_n_gl(4, nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_single_e_gl(4, elec_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(out) :: delta_p_gl(4, elec_num,nucl_num,0:cord_num,0:cord_num-1,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_single_e_gl(4,elec_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(out) :: delta_p_gl(elec_num,4,nucl_num,0:cord_num,0:cord_num-1,walk_num)
|
||||
|
||||
integer(c_int32_t), external :: qmckl_compute_jastrow_champ_delta_p_gl_doc_f
|
||||
info = qmckl_compute_jastrow_champ_delta_p_gl_doc_f &
|
||||
@ -4853,8 +4915,8 @@ assert (rc == QMCKL_SUCCESS);
|
||||
rc = qmckl_set_single_point(context, 'N', 2, new_coords, 3);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
double delta_p_gl[walk_num][cord_num][cord_num+1][nucl_num][elec_num][4];
|
||||
rc = qmckl_get_jastrow_champ_delta_p_gl(context, &delta_p_gl[0][0][0][0][0][0], walk_num*cord_num*(cord_num+1)*nucl_num*elec_num);
|
||||
double delta_p_gl[walk_num][cord_num][cord_num+1][nucl_num][4][elec_num];
|
||||
rc = qmckl_get_jastrow_champ_delta_p_gl(context, &delta_p_gl[0][0][0][0][0][0], 4*walk_num*cord_num*(cord_num+1)*nucl_num*elec_num);
|
||||
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
@ -4875,16 +4937,19 @@ for (int nw = 0; nw < walk_num; nw++){
|
||||
for (int a = 0; a < nucl_num; a++) {
|
||||
for (int i = 0; i < elec_num; i++){
|
||||
for (int k = 0; k < 4; k++){
|
||||
printf("p_gl[%d][%d][%d][%d][%d][%d] = %f\n", nw, l, m, a, k,i, p_gl_new[nw][l][m][a][k][i] - p_gl_old[nw][l][m][a][k][i]);
|
||||
printf("delta_p_gl[%d][%d][%d][%d][%d][%d] = %f\n", nw, l, m, a, i, k, delta_p_gl[nw][l][m][a][i][k]);
|
||||
if (fabs(((p_gl_new[nw][l][m][a][k][i]-p_gl_old[nw][l][m][a][k][i])-delta_p_gl[nw][l][m][a][k][i])) > 1.e-12) {
|
||||
printf("p_gl[%d][%d][%d][%d][%d][%d] = %f\n", nw, l, m, a, k, i, p_gl_new[nw][l][m][a][k][i] - p_gl_old[nw][l][m][a][k][i]);
|
||||
printf("delta_p_gl[%d][%d][%d][%d][%d][%d] = %f\n", nw, l, m, a, k, i, delta_p_gl[nw][l][m][a][k][i]);
|
||||
}
|
||||
|
||||
assert(fabs(((p_gl_new[nw][l][m][a][k][i]-p_gl_old[nw][l][m][a][k][i])-delta_p_gl[nw][l][m][a][i][k])) < 1.e-12);
|
||||
assert(fabs(((p_gl_new[nw][l][m][a][k][i]-p_gl_old[nw][l][m][a][k][i])-delta_p_gl[nw][l][m][a][k][i])) < 1.e-12);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//assert(0);
|
||||
#+end_src
|
||||
|
||||
* Delta grad e-e-n
|
||||
@ -5055,18 +5120,18 @@ qmckl_exit_code qmckl_provide_jastrow_champ_single_een_gl(qmckl_context context)
|
||||
| ~tmp_c~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][elec_num]~ | in | vector of non-zero coefficients |
|
||||
| ~dtmp_c~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][4][elec_num]~ | in | vector of non-zero coefficients |
|
||||
| ~delta_p~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][elec_num]~ | in | vector of non-zero coefficients |
|
||||
| ~delta_p_gl~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][elec_num][4]~ | in | vector of non-zero coefficients |
|
||||
| ~delta_p_gl~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][4][elec_num]~ | in | vector of non-zero coefficients |
|
||||
| ~een_rescaled_n~ | ~double[walk_num][0:cord_num][nucl_num][elec_num]~ | in | Electron-nucleus rescaled distances |
|
||||
| ~een_rescaled_delta_n~ | ~double[walk_num][0:cord_num][nucl_num]~ | in | Electron-nucleus single rescaled distances |
|
||||
| ~een_rescaled_single_n~ | ~double[walk_num][0:cord_num][nucl_num]~ | in | Electron-nucleus single rescaled distances |
|
||||
| ~een_rescaled_n_gl~ | ~double[walk_num][0:cord_num][nucl_num][4][elec_num]~ | in | Electron-nucleus rescaled distances |
|
||||
| ~een_rescaled_delta_n_gl~ | ~double[walk_num][0:cord_num][nucl_num][4]~ | in | Electron-nucleus single rescaled distances |
|
||||
| ~een_rescaled_single_n_gl~ | ~double[walk_num][0:cord_num][nucl_num][4]~ | in | Electron-nucleus single rescaled distances |
|
||||
| ~delta_een_gl~ | ~double[walk_num][elec_num][4]~ | out | Electron-nucleus jastrow |
|
||||
|
||||
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
|
||||
integer function qmckl_compute_jastrow_champ_factor_single_een_gl_doc_f( &
|
||||
context, num_in, walk_num, elec_num, nucl_num, cord_num, &
|
||||
dim_c_vector, c_vector_full, lkpm_combined_index, &
|
||||
tmp_c, dtmp_c, delta_p, delta_p_gl, een_rescaled_n, een_rescaled_delta_n, een_rescaled_n_gl, een_rescaled_delta_n_gl, delta_een_gl) &
|
||||
tmp_c, dtmp_c, delta_p, delta_p_gl, een_rescaled_n, een_rescaled_single_n, een_rescaled_n_gl, een_rescaled_single_n_gl, delta_een_gl) &
|
||||
result(info)
|
||||
use qmckl
|
||||
implicit none
|
||||
@ -5077,17 +5142,20 @@ integer function qmckl_compute_jastrow_champ_factor_single_een_gl_doc_f( &
|
||||
double precision , intent(in) :: tmp_c(elec_num, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
double precision , intent(in) :: dtmp_c(elec_num, 4, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
double precision , intent(in) :: delta_p(elec_num, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
double precision , intent(in) :: delta_p_gl(4, elec_num, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
double precision , intent(in) :: delta_p_gl(elec_num, 4, nucl_num,0:cord_num, 0:cord_num-1, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_n(elec_num, nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_delta_n(nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_single_n(nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_n_gl(elec_num, 4, nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_delta_n_gl(4, nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(in) :: een_rescaled_single_n_gl(4, nucl_num, 0:cord_num, walk_num)
|
||||
double precision , intent(out) :: delta_een_gl(4, elec_num, walk_num)
|
||||
|
||||
integer*8 :: i, a, j, l, k, p, m, n, nw, kk, num
|
||||
double precision :: accu, accu2, cn
|
||||
integer*8 :: LDA, LDB, LDC
|
||||
|
||||
double precision :: een_rescaled_delta_n_gl(4, nucl_num, 0:cord_num, walk_num)
|
||||
double precision :: een_rescaled_delta_n(nucl_num, 0:cord_num, walk_num)
|
||||
|
||||
num = num_in + 1
|
||||
|
||||
info = QMCKL_SUCCESS
|
||||
@ -5101,6 +5169,9 @@ integer function qmckl_compute_jastrow_champ_factor_single_een_gl_doc_f( &
|
||||
|
||||
delta_een_gl = 0.0d0
|
||||
|
||||
een_rescaled_delta_n(:,:,:) = een_rescaled_single_n(:,:,:) - een_rescaled_n(num, :, :, :)
|
||||
een_rescaled_delta_n_gl(:,:,:,:) = een_rescaled_single_n_gl(:,:,:,:) - een_rescaled_n_gl(num, :,:,:,:)
|
||||
|
||||
|
||||
if (cord_num == 0) return
|
||||
|
||||
@ -5118,38 +5189,39 @@ integer function qmckl_compute_jastrow_champ_factor_single_een_gl_doc_f( &
|
||||
do i = 1, elec_num
|
||||
delta_een_gl(kk,i,nw) = delta_een_gl(kk,i,nw) + ( &
|
||||
delta_p(i,a,m,k,nw) * een_rescaled_n_gl(i,kk,a,m+l,nw) + &
|
||||
(delta_p_gl(kk,i,a,m,k,nw)) * een_rescaled_n(i,a,m+l,nw) + &
|
||||
(delta_p_gl(kk,i,a,m+l,k,nw)) * een_rescaled_n(i,a,m,nw) + &
|
||||
(delta_p_gl(i,kk,a,m,k,nw)) * een_rescaled_n(i,a,m+l,nw) + &
|
||||
(delta_p_gl(i,kk,a,m+l,k,nw)) * een_rescaled_n(i,a,m,nw) + &
|
||||
delta_p(i,a,m+l,k,nw) * een_rescaled_n_gl(i,kk,a,m,nw) &
|
||||
) * cn
|
||||
end do
|
||||
delta_een_gl(kk,num,nw) = delta_een_gl(kk,num,nw) + ( &
|
||||
(tmp_c(num,a,m,k,nw) + delta_p(num,a,m,k,nw)) * (een_rescaled_delta_n_gl(kk,a,m+l,nw) - een_rescaled_n_gl(num,kk,a,m+l,nw)) + &
|
||||
(dtmp_c(num,kk,a,m,k,nw) + delta_p_gl(kk,num, a,m,k,nw)) * een_rescaled_delta_n(a,m+l,nw) + &
|
||||
(dtmp_c(num,kk,a,m+l,k,nw) + delta_p_gl(kk,num,a,m+l,k,nw)) * een_rescaled_delta_n(a,m ,nw) + &
|
||||
(tmp_c(num,a,m+l,k,nw) + delta_p(num,a,m+l,k,nw)) * (een_rescaled_delta_n_gl(kk,a,m,nw) - een_rescaled_n_gl(num,kk,a,m,nw)) &
|
||||
(tmp_c(num,a,m,k,nw) + delta_p(num,a,m,k,nw)) * een_rescaled_delta_n_gl(kk,a,m+l,nw) + &
|
||||
(dtmp_c(num,kk,a,m,k,nw) + delta_p_gl(num,kk, a,m,k,nw)) * een_rescaled_delta_n(a,m+l,nw) + &
|
||||
(dtmp_c(num,kk,a,m+l,k,nw) + delta_p_gl(num,kk,a,m+l,k,nw)) * een_rescaled_delta_n(a,m,nw) + &
|
||||
(tmp_c(num,a,m+l,k,nw) + delta_p(num,a,m+l,k,nw)) * een_rescaled_delta_n_gl(kk,a,m,nw) &
|
||||
) * cn
|
||||
end do
|
||||
cn = cn + cn
|
||||
do i = 1, elec_num
|
||||
delta_een_gl(4,i,nw) = delta_een_gl(4,i,nw) + ( &
|
||||
delta_p_gl(1,i,a,m,k,nw) * een_rescaled_n_gl(i,1,a,m+l,nw) + delta_p_gl(1,i,a,m+l,k,nw) * een_rescaled_n_gl(i,1,a,m,nw) &
|
||||
+ delta_p_gl(2,i,a,m,k,nw) * een_rescaled_n_gl(i,2,a,m+l,nw) + delta_p_gl(2,i,a,m+l,k,nw) * een_rescaled_n_gl(i,2,a,m,nw) &
|
||||
+ delta_p_gl(3,i,a,m,k,nw) * een_rescaled_n_gl(i,3,a,m+l,nw) + delta_p_gl(3,i,a,m+l,k,nw) * een_rescaled_n_gl(i,3,a,m,nw) &
|
||||
delta_p_gl(i,1,a,m,k,nw) * een_rescaled_n_gl(i,1,a,m+l,nw) + delta_p_gl(i,1,a,m+l,k,nw) * een_rescaled_n_gl(i,1,a,m,nw) &
|
||||
+ delta_p_gl(i,2,a,m,k,nw) * een_rescaled_n_gl(i,2,a,m+l,nw) + delta_p_gl(i,2,a,m+l,k,nw) * een_rescaled_n_gl(i,2,a,m,nw) &
|
||||
+ delta_p_gl(i,3,a,m,k,nw) * een_rescaled_n_gl(i,3,a,m+l,nw) + delta_p_gl(i,3,a,m+l,k,nw) * een_rescaled_n_gl(i,3,a,m,nw) &
|
||||
) * cn
|
||||
end do
|
||||
delta_een_gl(4,num,nw) = delta_een_gl(4,num,nw) + ( &
|
||||
delta_p_gl(1,num,a,m,k,nw) * (een_rescaled_delta_n_gl(1,a,m+l,nw) - een_rescaled_n_gl(num,1,a,m+l,nw)) &
|
||||
+ delta_p_gl(1,num,a,m+l,k,nw) * (een_rescaled_delta_n_gl(1,a,m,nw) - een_rescaled_n_gl(num,1,a,m,nw)) &
|
||||
+ delta_p_gl(2,num,a,m,k,nw) * (een_rescaled_delta_n_gl(2,a,m+l,nw) - een_rescaled_n_gl(num,2,a,m+l,nw)) &
|
||||
+ delta_p_gl(2,num,a,m+l,k,nw) * (een_rescaled_delta_n_gl(2,a,m,nw) - een_rescaled_n_gl(num,2,a,m,nw)) &
|
||||
+ delta_p_gl(3,num,a,m,k,nw) * (een_rescaled_delta_n_gl(3,a,m+l,nw) - een_rescaled_n_gl(num,3,a,m+l,nw)) &
|
||||
+ delta_p_gl(3,num,a,m+l,k,nw) * (een_rescaled_delta_n_gl(3,a,m,nw) - een_rescaled_n_gl(num,3,a,m,nw)) &
|
||||
+ dtmp_c(num,1,a,m,k,nw) * (een_rescaled_delta_n_gl(1,a,m+l,nw) - een_rescaled_n_gl(num,1,a,m+l,nw)) &
|
||||
+ dtmp_c(num,1,a,m+l,k,nw) * (een_rescaled_delta_n_gl(1,a,m,nw) - een_rescaled_n_gl(num,1,a,m,nw)) &
|
||||
+ dtmp_c(num,2,a,m,k,nw) * (een_rescaled_delta_n_gl(2,a,m+l,nw) - een_rescaled_n_gl(num,2,a,m+l,nw)) &
|
||||
+ dtmp_c(num,2,a,m+l,k,nw) * (een_rescaled_delta_n_gl(2,a,m,nw) - een_rescaled_n_gl(num,2,a,m,nw)) &
|
||||
+ dtmp_c(num,3,a,m,k,nw)* (een_rescaled_delta_n_gl(3,a,m+l,nw) - een_rescaled_n_gl(num,3,a,m+l,nw)) &
|
||||
+ dtmp_c(num,3,a,m+l,k,nw) * (een_rescaled_delta_n_gl(3,a,m,nw) - een_rescaled_n_gl(num,3,a,m,nw)) &
|
||||
delta_p_gl(num,1,a,m,k,nw) * een_rescaled_delta_n_gl(1,a,m+l,nw) &
|
||||
+ delta_p_gl(num,1,a,m+l,k,nw) * een_rescaled_delta_n_gl(1,a,m,nw) &
|
||||
+ delta_p_gl(num,2,a,m,k,nw) * een_rescaled_delta_n_gl(2,a,m+l,nw) &
|
||||
+ delta_p_gl(num,2,a,m+l,k,nw) * een_rescaled_delta_n_gl(2,a,m,nw)&
|
||||
+ delta_p_gl(num,3,a,m,k,nw) * een_rescaled_delta_n_gl(3,a,m+l,nw) &
|
||||
+ delta_p_gl(num,3,a,m+l,k,nw) * een_rescaled_delta_n_gl(3,a,m,nw) &
|
||||
+ dtmp_c(num,1,a,m,k,nw) * een_rescaled_delta_n_gl(1,a,m+l,nw) &
|
||||
+ dtmp_c(num,1,a,m+l,k,nw) * een_rescaled_delta_n_gl(1,a,m,nw) &
|
||||
+ dtmp_c(num,2,a,m,k,nw) * een_rescaled_delta_n_gl(2,a,m+l,nw) &
|
||||
+ dtmp_c(num,2,a,m+l,k,nw) * een_rescaled_delta_n_gl(2,a,m,nw) &
|
||||
+ dtmp_c(num,3,a,m,k,nw)* een_rescaled_delta_n_gl(3,a,m+l,nw) &
|
||||
+ dtmp_c(num,3,a,m+l,k,nw) * een_rescaled_delta_n_gl(3,a,m,nw) &
|
||||
) * cn
|
||||
end do
|
||||
end do
|
||||
@ -5176,9 +5248,9 @@ qmckl_compute_jastrow_champ_factor_single_een_gl_doc (const qmckl_context contex
|
||||
const double* delta_p,
|
||||
const double* delta_p_gl,
|
||||
const double* een_rescaled_n,
|
||||
const double* een_rescaled_delta_n,
|
||||
const double* een_rescaled_single_n,
|
||||
const double* een_rescaled_n_gl,
|
||||
const double* een_rescaled_delta_n_gl,
|
||||
const double* een_rescaled_single_n_gl,
|
||||
double* const delta_een_gl );
|
||||
|
||||
qmckl_exit_code
|
||||
@ -5197,9 +5269,9 @@ qmckl_compute_jastrow_champ_factor_single_een_gl (const qmckl_context context,
|
||||
const double* delta_p,
|
||||
const double* delta_p_gl,
|
||||
const double* een_rescaled_n,
|
||||
const double* een_rescaled_delta_n,
|
||||
const double* een_rescaled_single_n,
|
||||
const double* een_rescaled_n_gl,
|
||||
const double* een_rescaled_delta_n_gl,
|
||||
const double* een_rescaled_single_n_gl,
|
||||
double* const delta_een_gl );
|
||||
#+end_src
|
||||
|
||||
@ -5219,9 +5291,9 @@ qmckl_compute_jastrow_champ_factor_single_een_gl (const qmckl_context context,
|
||||
const double* delta_p,
|
||||
const double* delta_p_gl,
|
||||
const double* een_rescaled_n,
|
||||
const double* een_rescaled_delta_n,
|
||||
const double* een_rescaled_single_n,
|
||||
const double* een_rescaled_n_gl,
|
||||
const double* een_rescaled_delta_n_gl,
|
||||
const double* een_rescaled_single_n_gl,
|
||||
double* const delta_een_gl )
|
||||
{
|
||||
#ifdef HAVE_HPC
|
||||
@ -5230,7 +5302,7 @@ qmckl_compute_jastrow_champ_factor_single_een_gl (const qmckl_context context,
|
||||
return qmckl_compute_jastrow_champ_factor_single_een_gl_doc
|
||||
#endif
|
||||
(context, num, walk_num, elec_num, nucl_num, cord_num, dim_c_vector,
|
||||
c_vector_full, lkpm_combined_index, tmp_c, dtmp_c, delta_p, delta_p_gl, een_rescaled_n, een_rescaled_delta_n, een_rescaled_n_gl, een_rescaled_delta_n_gl, delta_een_gl );
|
||||
c_vector_full, lkpm_combined_index, tmp_c, dtmp_c, delta_p, delta_p_gl, een_rescaled_n, een_rescaled_single_n, een_rescaled_n_gl, een_rescaled_single_n_gl, delta_een_gl );
|
||||
|
||||
}
|
||||
#+end_src
|
||||
@ -5253,9 +5325,9 @@ qmckl_compute_jastrow_champ_factor_single_een_gl (const qmckl_context context,
|
||||
delta_p, &
|
||||
delta_p_gl, &
|
||||
een_rescaled_n, &
|
||||
een_rescaled_delta_n, &
|
||||
een_rescaled_single_n, &
|
||||
een_rescaled_n_gl, &
|
||||
een_rescaled_delta_n_gl, &
|
||||
een_rescaled_single_n_gl, &
|
||||
delta_een_gl) &
|
||||
bind(C) result(info)
|
||||
|
||||
@ -5274,11 +5346,11 @@ qmckl_compute_jastrow_champ_factor_single_een_gl (const qmckl_context context,
|
||||
real (c_double ) , intent(in) :: tmp_c(elec_num,nucl_num,0:cord_num,0:cord_num-1,walk_num)
|
||||
real (c_double ) , intent(in) :: dtmp_c(elec_num,4,nucl_num,0:cord_num,0:cord_num-1,walk_num)
|
||||
real (c_double ) , intent(in) :: delta_p(elec_num,nucl_num,0:cord_num,0:cord_num-1,walk_num)
|
||||
real (c_double ) , intent(in) :: delta_p_gl(4,elec_num,nucl_num,0:cord_num,0:cord_num-1,walk_num)
|
||||
real (c_double ) , intent(in) :: delta_p_gl(elec_num,4,nucl_num,0:cord_num,0:cord_num-1,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_n(elec_num,nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_delta_n(nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_single_n(nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_n_gl(elec_num,4,nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_delta_n_gl(4,nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(in) :: een_rescaled_single_n_gl(4,nucl_num,0:cord_num,walk_num)
|
||||
real (c_double ) , intent(out) :: delta_een_gl(4, elec_num, walk_num)
|
||||
|
||||
integer(c_int32_t), external :: qmckl_compute_jastrow_champ_factor_single_een_gl_doc_f
|
||||
@ -5297,9 +5369,9 @@ qmckl_compute_jastrow_champ_factor_single_een_gl (const qmckl_context context,
|
||||
delta_p, &
|
||||
delta_p_gl, &
|
||||
een_rescaled_n, &
|
||||
een_rescaled_delta_n, &
|
||||
een_rescaled_single_n, &
|
||||
een_rescaled_n_gl, &
|
||||
een_rescaled_delta_n_gl, &
|
||||
een_rescaled_single_n_gl, &
|
||||
delta_een_gl)
|
||||
|
||||
end function qmckl_compute_jastrow_champ_factor_single_een_gl_doc
|
||||
@ -5316,7 +5388,7 @@ assert(qmckl_jastrow_champ_provided(context));
|
||||
rc = qmckl_set_point(context, 'N', elec_num, elec_coord, walk_num*elec_num*3);
|
||||
assert(rc == QMCKL_SUCCESS);
|
||||
|
||||
double een_gl_old[walk_num][elec_num][4];
|
||||
double een_gl_old[walk_num][4][elec_num];
|
||||
rc = qmckl_get_jastrow_champ_factor_een_gl(context, &een_gl_old[0][0][0], walk_num*elec_num*4);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
@ -5337,14 +5409,17 @@ coords[0][2][2] = new_coords[2];
|
||||
rc = qmckl_set_point(context, 'N', elec_num, &coords[0][0][0], walk_num*elec_num*3);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
double een_gl_new[walk_num][elec_num][4];
|
||||
double een_gl_new[walk_num][4][elec_num];
|
||||
rc = qmckl_get_jastrow_champ_factor_een_gl(context, &een_gl_new[0][0][0], walk_num*elec_num*4);
|
||||
assert (rc == QMCKL_SUCCESS);
|
||||
|
||||
for (int nw = 0; nw < walk_num; nw++) {
|
||||
for (int i = 0; i < elec_num; i++) {
|
||||
for (int m = 0; m < 4; m++) {
|
||||
assert(fabs((een_gl_new[nw][i][m] - een_gl_new[nw][i][m]) - delta_een_gl[nw][i][m]) < 1.e-12);
|
||||
printf("delta_een_gl[%d][%d][%d] = %f\n", nw, i, m, delta_een_gl[nw][i][m]);
|
||||
printf("een_gl_[%d][%d][%d] = %f\n", nw, m,i, een_gl_new[nw][m][i]-een_gl_old[nw][m][i]);
|
||||
|
||||
assert(fabs((een_gl_new[nw][m][i]- een_gl_old[nw][m][i]) - delta_een_gl[nw][i][m]) < 1.e-12);
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user