@@ -11280,23 +11280,23 @@ qmckl_compute_jastrow_champ_factor_een_gl_hpc(const qmckl_context context,
11280
11280
double cn = c_vector_full[a+n*nucl_num];
11281
11281
if (cn == 0.0) continue;
11282
11282
11283
- const size_t ishift = elec_num*a;
11283
+ const size_t ishift = elec_num*a;
11284
11284
const size_t ishift4 = ishift*4;
11285
11285
11286
11286
const double* restrict tmp_c_amkn = tmp_c_mkn + ishift;
11287
11287
const double* restrict tmp_c_amlkn = tmp_c_mlkn + ishift;
11288
- const double* restrict een_rescaled_n_amnw = een_rescaled_n_mnw + ishift;
11288
+ const double* restrict een_rescaled_n_amnw = een_rescaled_n_mnw + ishift;
11289
11289
const double* restrict een_rescaled_n_amlnw = een_rescaled_n_mlnw + ishift;
11290
- const double* restrict dtmp_c_0amknw = dtmp_c_mknw + ishift4;
11290
+ const double* restrict dtmp_c_0amknw = dtmp_c_mknw + ishift4;
11291
11291
const double* restrict dtmp_c_0amlknw = dtmp_c_mlknw + ishift4;
11292
11292
const double* restrict een_rescaled_n_gl_0amnw = een_rescaled_n_gl_mnw + ishift4;
11293
11293
const double* restrict een_rescaled_n_gl_0amlnw = een_rescaled_n_gl_mlnw + ishift4;
11294
11294
11295
- const double* restrict dtmp_c_1amknw = dtmp_c_0amknw + elec_num;
11295
+ const double* restrict dtmp_c_1amknw = dtmp_c_0amknw + elec_num;
11296
11296
const double* restrict dtmp_c_1amlknw = dtmp_c_0amlknw + elec_num;
11297
- const double* restrict dtmp_c_2amknw = dtmp_c_0amknw + elec_num2;
11297
+ const double* restrict dtmp_c_2amknw = dtmp_c_0amknw + elec_num2;
11298
11298
const double* restrict dtmp_c_2amlknw = dtmp_c_0amlknw + elec_num2;
11299
- const double* restrict dtmp_c_3amknw = dtmp_c_0amknw + elec_num3;
11299
+ const double* restrict dtmp_c_3amknw = dtmp_c_0amknw + elec_num3;
11300
11300
const double* restrict dtmp_c_3amlknw = dtmp_c_0amlknw + elec_num3;
11301
11301
11302
11302
const double* restrict een_rescaled_n_gl_1amnw = een_rescaled_n_gl_0amnw + elec_num;
@@ -11305,6 +11305,7 @@ qmckl_compute_jastrow_champ_factor_een_gl_hpc(const qmckl_context context,
11305
11305
const double* restrict een_rescaled_n_gl_2amlnw = een_rescaled_n_gl_0amlnw + elec_num2;
11306
11306
const double* restrict een_rescaled_n_gl_3amnw = een_rescaled_n_gl_0amnw + elec_num3;
11307
11307
const double* restrict een_rescaled_n_gl_3amlnw = een_rescaled_n_gl_0amlnw + elec_num3;
11308
+
11308
11309
double* const restrict factor_een_gl_1nw = factor_een_gl_0nw + elec_num;
11309
11310
double* const restrict factor_een_gl_2nw = factor_een_gl_0nw + elec_num2;
11310
11311
double* const restrict factor_een_gl_3nw = factor_een_gl_0nw + elec_num3;
@@ -11571,7 +11572,7 @@ assert(qmckl_jastrow_champ_provided(context));
11571
11572
| ~dtmp_c~ | ~double[walk_num][0:cord_num-1][0:cord_num][nucl_num][4][elec_num]~ | in | vector of non-zero coefficients |
11572
11573
| ~een_rescaled_n~ | ~double[walk_num][0:cord_num][nucl_num][elec_num]~ | in | Electron-nucleus rescaled factor |
11573
11574
| ~een_rescaled_n_gl~ | ~double[walk_num][0:cord_num][nucl_num][4][elec_num]~ | in | Derivative of Electron-nucleus rescaled factor |
11574
- | ~factor_een_grad~ | ~double[walk_num][4 ][elec_num]~ | out | Derivative of Electron-nucleus jastrow |
11575
+ | ~factor_een_grad~ | ~double[walk_num][3 ][elec_num]~ | out | Derivative of Electron-nucleus jastrow |
11575
11576
11576
11577
11577
11578
#+begin_src f90 :comments org :tangle (eval f) :noweb yes
@@ -11631,10 +11632,10 @@ function qmckl_compute_jastrow_champ_factor_een_grad_doc( &
11631
11632
do ii = 1, 3
11632
11633
do j = 1, elec_num
11633
11634
factor_een_grad(j,ii,nw) = factor_een_grad(j,ii,nw) + ( &
11634
- tmp_c (j,a,m,k,nw) * een_rescaled_n_gl (j,ii, a,m+l,nw) + &
11635
- ( dtmp_c(j,ii,a,m,k,nw)) * een_rescaled_n(j,a,m+l ,nw) + &
11636
- (dtmp_c(j,ii, a,m+l ,k,nw)) * een_rescaled_n (j,a,m ,nw) + &
11637
- tmp_c(j,a,m+l,k,nw) * een_rescaled_n_gl(j,ii,a,m,nw) &
11635
+ dtmp_c (j,ii, a,m ,k,nw) * een_rescaled_n (j, a,m+l,nw) + &
11636
+ dtmp_c(j,ii,a,m+l ,k,nw) * een_rescaled_n (j, a,m ,nw) + &
11637
+ tmp_c(j, a,m ,k,nw) * een_rescaled_n_gl (j,ii, a,m+l ,nw) + &
11638
+ tmp_c(j,a,m+l,k,nw) * een_rescaled_n_gl(j,ii,a,m ,nw) &
11638
11639
) * cn
11639
11640
end do
11640
11641
end do
@@ -11685,7 +11686,7 @@ end function qmckl_compute_jastrow_champ_factor_een_grad_doc
11685
11686
const double* een_rescaled_n_gl,
11686
11687
double* const factor_een_grad );
11687
11688
#+end_src
11688
-
11689
+
11689
11690
#+begin_src c :tangle (eval c) :comments org
11690
11691
qmckl_exit_code
11691
11692
qmckl_compute_jastrow_champ_factor_een_grad(const qmckl_context context,
@@ -11798,72 +11799,75 @@ qmckl_compute_jastrow_champ_factor_een_grad_hpc(const qmckl_context context,
11798
11799
const double* restrict tmp_c_mlkn = tmp_c_mkn + len;
11799
11800
const double* restrict een_rescaled_n_mnw = &(een_rescaled_n[addr1]);
11800
11801
const double* restrict een_rescaled_n_mlnw = een_rescaled_n_mnw + len;
11801
- const double* restrict dtmp_c_mknw = &(dtmp_c[addr0 << 2 ]);
11802
+ const double* restrict dtmp_c_mknw = &(dtmp_c[addr0*4 ]);
11802
11803
const double* restrict dtmp_c_mlknw = dtmp_c_mknw + len4;
11803
- const double* restrict een_rescaled_n_gl_mnw = &(een_rescaled_n_gl[addr1 << 2 ]);
11804
+ const double* restrict een_rescaled_n_gl_mnw = &(een_rescaled_n_gl[addr1*4 ]);
11804
11805
const double* restrict een_rescaled_n_gl_mlnw = een_rescaled_n_gl_mnw + len4;
11805
11806
11806
11807
for (size_t a = 0; a < (size_t) nucl_num; a++) {
11807
11808
double cn = c_vector_full[a+n*nucl_num];
11808
11809
if (cn == 0.0) continue;
11809
11810
11810
- const size_t ishift = elec_num*a;
11811
+ const size_t ishift = elec_num*a;
11811
11812
const size_t ishift4 = ishift*4;
11812
11813
11813
11814
const double* restrict tmp_c_amlkn = tmp_c_mlkn + ishift;
11814
11815
const double* restrict tmp_c_amkn = tmp_c_mkn + ishift;
11815
- const double* restrict een_rescaled_n_amnw = een_rescaled_n_mnw + ishift;
11816
+ const double* restrict een_rescaled_n_amnw = een_rescaled_n_mnw + ishift;
11816
11817
const double* restrict een_rescaled_n_amlnw = een_rescaled_n_mlnw + ishift;
11817
- const double* restrict dtmp_c_0amknw = dtmp_c_mknw + ishift4;
11818
+ const double* restrict dtmp_c_0amknw = dtmp_c_mknw + ishift4;
11818
11819
const double* restrict dtmp_c_0amlknw = dtmp_c_mlknw + ishift4;
11819
- const double* restrict een_rescaled_n_gl_0amnw = een_rescaled_n_gl_mnw + ishift4;
11820
+ const double* restrict een_rescaled_n_gl_0amnw = een_rescaled_n_gl_mnw + ishift4;
11820
11821
const double* restrict een_rescaled_n_gl_0amlnw = een_rescaled_n_gl_mlnw + ishift4;
11821
11822
11822
- const double* restrict dtmp_c_1amknw = dtmp_c_0amknw + elec_num;
11823
+ const double* restrict dtmp_c_1amknw = dtmp_c_0amknw + elec_num;
11823
11824
const double* restrict dtmp_c_1amlknw = dtmp_c_0amlknw + elec_num;
11824
- const double* restrict dtmp_c_2amknw = dtmp_c_0amknw + elec_num2;
11825
+ const double* restrict dtmp_c_2amknw = dtmp_c_0amknw + elec_num2;
11825
11826
const double* restrict dtmp_c_2amlknw = dtmp_c_0amlknw + elec_num2;
11827
+
11826
11828
const double* restrict een_rescaled_n_gl_1amnw = een_rescaled_n_gl_0amnw + elec_num;
11827
11829
const double* restrict een_rescaled_n_gl_1amlnw = een_rescaled_n_gl_0amlnw + elec_num;
11828
11830
const double* restrict een_rescaled_n_gl_2amnw = een_rescaled_n_gl_0amnw + elec_num2;
11829
11831
const double* restrict een_rescaled_n_gl_2amlnw = een_rescaled_n_gl_0amlnw + elec_num2;
11832
+
11830
11833
double* const restrict factor_een_grad_1nw = factor_een_grad_0nw + elec_num;
11831
11834
double* const restrict factor_een_grad_2nw = factor_een_grad_0nw + elec_num2;
11832
11835
11833
11836
#ifdef HAVE_OPENMP
11834
11837
#pragma omp simd
11835
11838
#endif
11836
11839
for (size_t j = 0; j < (size_t) elec_num; ++j) {
11837
- factor_een_grad_0nw[j] = factor_een_grad_0nw[j] + cn *
11838
- (tmp_c_amkn[j] * een_rescaled_n_gl_0amlnw[j] +
11839
- dtmp_c_0amknw[j] * een_rescaled_n_amlnw[j] +
11840
- dtmp_c_0amlknw[j] * een_rescaled_n_amnw[j] +
11841
- tmp_c_amlkn[j] * een_rescaled_n_gl_0amnw[j]);
11840
+ factor_een_grad_0nw[j] = factor_een_grad_0nw[j] + cn * (
11841
+ dtmp_c_0amknw [j] * een_rescaled_n_amlnw[j] +
11842
+ dtmp_c_0amlknw[j] * een_rescaled_n_amnw [j] +
11843
+ tmp_c_amkn [j] * een_rescaled_n_gl_0amlnw[j] +
11844
+ tmp_c_amlkn[j] * een_rescaled_n_gl_0amnw [j] );
11845
+
11842
11846
}
11843
11847
11844
11848
#ifdef HAVE_OPENMP
11845
11849
#pragma omp simd
11846
11850
#endif
11847
11851
for (size_t j = 0; j < (size_t) elec_num; ++j) {
11848
- factor_een_grad_1nw[j] = factor_een_grad_1nw[j] + cn *
11849
- (tmp_c_amkn [j] * een_rescaled_n_gl_1amlnw [j] +
11850
- dtmp_c_1amknw [j] * een_rescaled_n_amlnw [j] +
11851
- dtmp_c_1amlknw [j] * een_rescaled_n_amnw [j] +
11852
- tmp_c_amlkn[j] * een_rescaled_n_gl_1amnw[j]);
11852
+ factor_een_grad_1nw[j] = factor_een_grad_1nw[j] + cn * (
11853
+ dtmp_c_1amknw [j] * een_rescaled_n_amlnw [j] +
11854
+ dtmp_c_1amlknw [j] * een_rescaled_n_amnw [j] +
11855
+ tmp_c_amkn [j] * een_rescaled_n_gl_1amlnw [j] +
11856
+ tmp_c_amlkn[j] * een_rescaled_n_gl_1amnw [j]);
11853
11857
}
11854
11858
11855
11859
#ifdef HAVE_OPENMP
11856
11860
#pragma omp simd
11857
11861
#endif
11858
11862
for (size_t j = 0; j < (size_t) elec_num; ++j) {
11859
- factor_een_grad_2nw[j] = factor_een_grad_2nw[j] + cn *
11860
- (tmp_c_amkn [j] * een_rescaled_n_gl_2amlnw [j] +
11861
- dtmp_c_2amknw [j] * een_rescaled_n_amlnw [j] +
11862
- dtmp_c_2amlknw [j] * een_rescaled_n_amnw [j] +
11863
- tmp_c_amlkn[j] * een_rescaled_n_gl_2amnw[j]);
11863
+ factor_een_grad_2nw[j] = factor_een_grad_2nw[j] + cn * (
11864
+ dtmp_c_2amknw [j] * een_rescaled_n_amlnw [j] +
11865
+ dtmp_c_2amlknw [j] * een_rescaled_n_amnw [j] +
11866
+ tmp_c_amkn [j] * een_rescaled_n_gl_2amlnw [j] +
11867
+ tmp_c_amlkn[j] * een_rescaled_n_gl_2amnw [j]);
11864
11868
}
11865
11869
11866
- }
11870
+ }
11867
11871
}
11868
11872
}
11869
11873
return info;
@@ -12973,7 +12977,8 @@ assert(qmckl_jastrow_champ_provided(context));
12973
12977
for (int64_t e=0 ; e<elec_num; ++e) {
12974
12978
if (fabs(total_j_grad[k][m][e] - total_j_deriv[k][m][e]) > 1e-12) {
12975
12979
printf("%ld %ld %ld\n", k, m, e);
12976
- printf("total_j_grad = %20.15e\n", total_j_grad[k][m][e]);
12980
+ printf("total_j_deriv = %20.15e\n", total_j_deriv[k][m][e]);
12981
+ printf("total_j_grad = %20.15e\n", total_j_grad[k][m][e]);
12977
12982
fflush(stdout);
12978
12983
}
12979
12984
assert (fabs(total_j_deriv[k][m][e] - total_j_grad[k][m][e]) < 1.e-12);
0 commit comments