@@ -2567,6 +2567,12 @@ assert(qmckl_electron_provided(context));
2567
2567
assert(rc == QMCKL_SUCCESS);
2568
2568
2569
2569
for (int64_t i=0 ; i<walk_num*elec_num*elec_num*(cord_num+1) ; i++) {
2570
+ if (fabs(ee_distance_rescaled_hpc[i] - ee_distance_rescaled_doc[i]) > 1.e-10) {
2571
+ printf("i = %ld\n", i);
2572
+ printf("ee_distance_rescaled_hpc = %f\n", ee_distance_rescaled_hpc[i]);
2573
+ printf("ee_distance_rescaled_doc = %f\n", ee_distance_rescaled_doc[i]);
2574
+ fflush(stdout);
2575
+ }
2570
2576
assert(fabs(ee_distance_rescaled_hpc[i] - ee_distance_rescaled_doc[i]) < 1.e-10);
2571
2577
}
2572
2578
}
@@ -2957,6 +2963,7 @@ assert(qmckl_electron_provided(context));
2957
2963
printf("nw=%d i=%d j=%d k=%d\n", nw, i, j, k);
2958
2964
printf("fd =%f\n", fd[nw][i][j][k]);
2959
2965
printf("ee_distance_rescaled_gl=%f\n", ee_distance_rescaled_gl[nw][i][j][k]);
2966
+ fflush(stdout);
2960
2967
}
2961
2968
assert(fabs(fd[nw][i][j][k] - ee_distance_rescaled_gl[nw][i][j][k]) < 1.e-8);
2962
2969
}
@@ -2966,6 +2973,7 @@ assert(qmckl_electron_provided(context));
2966
2973
printf("nw=%d i=%d j=%d k=%d\n", nw, i, j, k);
2967
2974
printf("fd =%f\n", fd[nw][i][j][k]);
2968
2975
printf("ee_distance_rescaled_gl=%f\n", ee_distance_rescaled_gl[nw][i][j][k]);
2976
+ fflush(stdout);
2969
2977
}
2970
2978
assert(fabs(fd[nw][i][j][k] - ee_distance_rescaled_gl[nw][i][j][k]) < 1.e-6);
2971
2979
}
@@ -2999,6 +3007,7 @@ assert(qmckl_electron_provided(context));
2999
3007
printf("i=%ld\n", i);
3000
3008
printf("ee_distance_rescaled_gl_doc=%f\n", ee_distance_rescaled_gl_doc[i]);
3001
3009
printf("ee_distance_rescaled_gl_hpc=%f\n", ee_distance_rescaled_gl_hpc[i]);
3010
+ fflush(stdout);
3002
3011
}
3003
3012
assert(fabs(ee_distance_rescaled_gl_doc[i] - ee_distance_rescaled_gl_hpc[i]) < 1.e-8);
3004
3013
}
@@ -3514,6 +3523,7 @@ assert(qmckl_jastrow_champ_provided(context));
3514
3523
3515
3524
// calculate factor_ee
3516
3525
printf("%20.15f\n%20.15f\n",factor_ee[0],-16.83886184243964);
3526
+ fflush(stdout);
3517
3527
assert(fabs(factor_ee[0]+16.83886184243964) < 1.e-12);
3518
3528
3519
3529
printf("factor_ee_hpc\n");
@@ -3558,6 +3568,7 @@ assert(qmckl_jastrow_champ_provided(context));
3558
3568
printf("i=%ld\n", i);
3559
3569
printf("factor_ee_doc=%f\n", factor_ee_doc[i]);
3560
3570
printf("factor_ee_hpc=%f\n", factor_ee_hpc[i]);
3571
+ fflush(stdout);
3561
3572
}
3562
3573
assert(fabs(factor_ee_doc[i] - factor_ee_hpc[i]) < 1.e-8);
3563
3574
}
@@ -4267,16 +4278,16 @@ assert(qmckl_jastrow_champ_provided(context));
4267
4278
if (fabs(fd[nw][k][i] - factor_ee_gl[nw][k][i]) > 1.e-12) {
4268
4279
printf("nw=%d i=%d k=%d\n", nw, i, k);
4269
4280
printf("fd=%f factor_ee_gl=%f\n", fd[nw][k][i], factor_ee_gl[nw][k][i]);
4281
+ fflush(stdout);
4270
4282
}
4271
4283
assert(fabs(fd[nw][k][i] - factor_ee_gl[nw][k][i]) < 1.e-8);
4272
4284
}
4273
4285
int k=3;
4274
4286
if (fabs(fd[nw][k][i] - factor_ee_gl[nw][k][i]) > 1.e-12) {
4275
4287
printf("nw=%d i=%d k=%d\n", nw, i, k);
4276
4288
printf("fd=%f factor_ee_gl=%f\n", fd[nw][k][i], factor_ee_gl[nw][k][i]);
4289
+ fflush(stdout);
4277
4290
}
4278
- printf("%.10f\t", fd[nw][k][i]);
4279
- printf("%.10f\n", factor_ee_gl[nw][k][i]);
4280
4291
assert(fabs(fd[nw][k][i] - factor_ee_gl[nw][k][i]) < 1.e-5);
4281
4292
}
4282
4293
}
@@ -4333,6 +4344,7 @@ assert(qmckl_jastrow_champ_provided(context));
4333
4344
for (int64_t i = 0 ; i < walk_num*4*elec_num ; i++) {
4334
4345
if (fabs(factor_ee_gl_hpc[i] - factor_ee_gl_doc[i]) > 1.e-12) {
4335
4346
printf("i=%ld\nfactor_ee_gl_hpc=%f\nfactor_ee_gl_doc=%f\n", i, factor_ee_gl_hpc[i], factor_ee_gl_doc[i]);
4347
+ fflush(stdout);
4336
4348
}
4337
4349
assert(fabs(factor_ee_gl_hpc[i] - factor_ee_gl_doc[i]) < 1.e-8);
4338
4350
}
@@ -4608,6 +4620,7 @@ rc = qmckl_get_jastrow_champ_asymp_jasa(context, asymp_jasa, type_nucl_num);
4608
4620
4609
4621
// calculate asymp_jasb
4610
4622
printf("%e %e\n", asymp_jasa[0], -1.75529774);
4623
+ fflush(stdout);
4611
4624
assert(fabs(-1.75529774 - asymp_jasa[0]) < 1.e-8);
4612
4625
4613
4626
#+end_src
@@ -5028,6 +5041,7 @@ assert(fabs(en_distance_rescaled[0][0][6] - 0.4726452953409436) < 1.e-12);
5028
5041
for (int64_t i=0 ; i<walk_num*nucl_num*elec_num ; ++i) {
5029
5042
if (fabs(en_distance_rescaled_doc[i] - en_distance_rescaled_hpc[i]) > 1.e-12) {
5030
5043
printf("i = %ld, doc = %e, hpc = %e\n", i, en_distance_rescaled_doc[i], en_distance_rescaled_hpc[i]);
5044
+ fflush(stdout);
5031
5045
}
5032
5046
assert(fabs(en_distance_rescaled_doc[i] - en_distance_rescaled_hpc[i]) < 1.e-8);
5033
5047
}
@@ -5514,12 +5528,14 @@ assert(qmckl_electron_provided(context));
5514
5528
for (int k = 0; k < 3; k++){
5515
5529
printf("%.10f\t", fd[nw][i][j][k]);
5516
5530
printf("%.10f\n", en_distance_rescaled_gl[nw][i][j][k]);
5531
+ fflush(stdout);
5517
5532
assert(fabs(fd[nw][i][j][k] - en_distance_rescaled_gl[nw][i][j][k]) < 1.e-8);
5518
5533
}
5519
5534
int k=3;
5520
5535
if (i != j) {
5521
5536
printf("%.10f\t", fd[nw][i][j][k]);
5522
5537
printf("%.10f\n", en_distance_rescaled_gl[nw][i][j][k]);
5538
+ fflush(stdout);
5523
5539
assert(fabs(fd[nw][i][j][k] - en_distance_rescaled_gl[nw][i][j][k]) < 1.e-6);
5524
5540
}
5525
5541
}
@@ -5546,6 +5562,10 @@ assert(qmckl_electron_provided(context));
5546
5562
assert(rc == QMCKL_SUCCESS);
5547
5563
5548
5564
for (int i = 0; i < walk_num*nucl_num*elec_num*4; i++) {
5565
+ if (fabs(en_distance_rescaled_gl_doc[i] - en_distance_rescaled_gl_hpc[i]) > 1.e-8) {
5566
+ printf("i = %d, doc = %e, hpc = %e\n", i, en_distance_rescaled_gl_doc[i], en_distance_rescaled_gl_hpc[i]);
5567
+ fflush(stdout);
5568
+ }
5549
5569
assert(fabs(en_distance_rescaled_gl_doc[i] - en_distance_rescaled_gl_hpc[i]) < 1.e-8);
5550
5570
}
5551
5571
}
@@ -5984,6 +6004,7 @@ rc = qmckl_get_jastrow_champ_factor_en(context, factor_en,walk_num);
5984
6004
5985
6005
// calculate factor_en
5986
6006
printf("%f %f\n", factor_en[0], 22.781375792083587);
6007
+ fflush(stdout);
5987
6008
assert(fabs(22.781375792083587 - factor_en[0]) < 1.e-12);
5988
6009
5989
6010
{
@@ -6661,11 +6682,14 @@ assert(qmckl_jastrow_champ_provided(context));
6661
6682
for (int k = 0; k < 3; k++){
6662
6683
printf("%.10f\t", fd[nw][k][i]);
6663
6684
printf("%.10f\n", factor_en_gl[nw][k][i]);
6685
+ fflush(stdout);
6664
6686
assert(fabs(fd[nw][k][i] - factor_en_gl[nw][k][i]) < 1.e-8);
6665
6687
}
6666
6688
int k=3;
6667
- printf("%.10f\t", fd[nw][k][i]);
6668
- printf("%.10f\n", factor_en_gl[nw][k][i]);
6689
+ if (fabs(fd[nw][k][i] - factor_en_gl[nw][k][i]) > 1.e-5) {
6690
+ printf("i=%d doc=%f hpc=%f\n", i, fd[nw][k][i], factor_en_gl[nw][k][i]);
6691
+ fflush(stdout);
6692
+ }
6669
6693
assert(fabs(fd[nw][k][i] - factor_en_gl[nw][k][i]) < 1.e-5);
6670
6694
}
6671
6695
}
@@ -6704,6 +6728,7 @@ assert(qmckl_jastrow_champ_provided(context));
6704
6728
for (int64_t i = 0; i < walk_num*4*elec_num; i++) {
6705
6729
if (fabs(factor_en_gl_doc[i] - factor_en_gl_hpc[i]) > 1.e-12) {
6706
6730
printf("i=%ld doc=%f hpc=%f\n", i, factor_en_gl_doc[i], factor_en_gl_hpc[i]);
6731
+ fflush(stdout);
6707
6732
}
6708
6733
assert(fabs(factor_en_gl_doc[i] - factor_en_gl_hpc[i]) < 1.e-8);
6709
6734
}
@@ -7270,6 +7295,10 @@ assert(fabs(een_rescaled_e[0][2][1][5]- 0.5257156022077619 ) < 1.e-12);
7270
7295
for (int64_t j = 0; j < cord_num+1; j++) {
7271
7296
for (int64_t k = 0; k < elec_num; k++) {
7272
7297
for (int64_t l = 0; l < elec_num; l++) {
7298
+ if (fabs(een_rescaled_e_doc[i][j][k][l] - een_rescaled_e_hpc[i][j][k][l]) > 1.e-12) {
7299
+ printf("i=%ld j=%ld k=%ld l=%ld doc=%f hpc=%f\n", i, j, k, l, een_rescaled_e_doc[i][j][k][l], een_rescaled_e_hpc[i][j][k][l]);
7300
+ fflush(stdout);
7301
+ }
7273
7302
assert(fabs(een_rescaled_e_doc[i][j][k][l] - een_rescaled_e_hpc[i][j][k][l]) < 1.e-8);
7274
7303
}
7275
7304
}
@@ -7884,6 +7913,7 @@ assert(qmckl_electron_provided(context));
7884
7913
for (int64_t i = 0; i < walk_num*(cord_num + 1)*elec_num*4*elec_num; i++) {
7885
7914
if (fabs(een_rescaled_e_gl_doc[i] - een_rescaled_e_gl_hpc[i]) > 1.e-12) {
7886
7915
printf("i = %ld, doc = %f, hpc = %f\n", i, een_rescaled_e_gl_doc[i], een_rescaled_e_gl_hpc[i]);
7916
+ fflush(stdout);
7887
7917
}
7888
7918
assert(fabs(een_rescaled_e_gl_doc[i] - een_rescaled_e_gl_hpc[i]) < 1.e-8);
7889
7919
}
@@ -7892,7 +7922,7 @@ assert(qmckl_electron_provided(context));
7892
7922
7893
7923
{
7894
7924
/* Finite difference test fails and I can't understand why... */
7895
- /*
7925
+
7896
7926
printf("een_distance_rescaled_e_gl\n");
7897
7927
7898
7928
double fd[walk_num][cord_num+1][elec_num][4][elec_num];
@@ -7991,24 +8021,30 @@ assert(qmckl_electron_provided(context));
7991
8021
for (int i = 0; i < elec_num; i++) {
7992
8022
for (int j = 0; j < elec_num; j++) {
7993
8023
for (int k = 0; k < 3; k++){
7994
- printf("%2d %2d %2d %2d %2d\t", nw, c, i, k, j);
7995
- printf("%.10e\t", fd[nw][c][i][k][j]);
7996
- printf("%.10e\n", een_distance_rescaled_e_gl[nw][c][i][k][j]);
8024
+ if (fabs(fd[nw][c][i][k][j] - een_distance_rescaled_e_gl[nw][c][i][k][j]) > 1.e-10) {
8025
+ printf("%2d %2d %2d %2d %2d\t", nw, c, i, k, j);
8026
+ printf("%.10e\t", fd[nw][c][i][k][j]);
8027
+ printf("%.10e\n", een_distance_rescaled_e_gl[nw][c][i][k][j]);
8028
+ fflush(stdout);
8029
+ }
7997
8030
assert(fabs(fd[nw][c][i][k][j] - een_distance_rescaled_e_gl[nw][c][i][k][j]) < 1.e-8);
7998
8031
}
7999
8032
int k=3;
8000
8033
if (i != j) {
8001
- printf("%2d %2d %2d %2d %2d\t", nw, c, i, k, j);
8002
- printf("%.10e\t", fd[nw][c][i][k][j]);
8003
- printf("%.10e\n", een_distance_rescaled_e_gl[nw][c][i][k][j]);
8034
+ if (fabs(fd[nw][c][i][k][j] - een_distance_rescaled_e_gl[nw][c][i][k][j]) > 1.e-8) {
8035
+ printf("%2d %2d %2d %2d %2d\t", nw, c, i, k, j);
8036
+ printf("%.10e\t", fd[nw][c][i][k][j]);
8037
+ printf("%.10e\n", een_distance_rescaled_e_gl[nw][c][i][k][j]);
8038
+ fflush(stdout);
8039
+ }
8004
8040
assert(fabs(fd[nw][c][i][k][j] - een_distance_rescaled_e_gl[nw][c][i][k][j]) < 1.e-6);
8005
8041
}
8006
8042
}
8007
8043
}
8008
8044
}
8009
8045
}
8010
8046
printf("OK\n");
8011
- */
8047
+
8012
8048
}
8013
8049
8014
8050
#+end_src
@@ -10247,9 +10283,11 @@ double dtmp_c[walk_num][cord_num][cord_num+1][nucl_num][4][elec_num];
10247
10283
rc = qmckl_get_jastrow_champ_dtmp_c(context, &(dtmp_c[0][0][0][0][0][0]), sizeof(dtmp_c)/sizeof(double));
10248
10284
10249
10285
printf("%e\n%e\n", tmp_c[0][0][1][0][0], 3.954384);
10286
+ fflush(stdout);
10250
10287
assert(fabs(tmp_c[0][0][1][0][0] - 3.954384) < 1e-6);
10251
10288
10252
10289
printf("%e\n%e\n", dtmp_c[0][1][0][0][0][0],3.278657e-01);
10290
+ fflush(stdout);
10253
10291
assert(fabs(dtmp_c[0][1][0][0][0][0] - 3.278657e-01 ) < 1e-6);
10254
10292
#+end_src
10255
10293
@@ -11777,6 +11815,18 @@ TODO
11777
11815
factor_een_gl_doc);
11778
11816
assert(rc == QMCKL_SUCCESS);
11779
11817
11818
+ assert(walk_num == 2);
11819
+ assert(elec_num == 10);
11820
+ assert(nucl_num == 2);
11821
+ assert(cord_num == 5);
11822
+ assert(dim_c_vector == 23);
11823
+
11824
+ assert(ctx->electron.walker.num == walk_num);
11825
+ assert(ctx->electron.num == elec_num);
11826
+ assert(ctx->nucleus.num == nucl_num);
11827
+ assert(ctx->jastrow_champ.cord_num == cord_num);
11828
+ assert(ctx->jastrow_champ.dim_c_vector == dim_c_vector);
11829
+
11780
11830
double factor_een_gl_hpc[walk_num*4*elec_num];
11781
11831
memset(&(factor_een_gl_hpc[0]), 0, walk_num*4*elec_num*sizeof(double));
11782
11832
rc = qmckl_compute_jastrow_champ_factor_een_gl(context,
@@ -11798,6 +11848,7 @@ TODO
11798
11848
printf("i = %ld\n", i);
11799
11849
printf("factor_een_gl_doc = %20.15e\n", factor_een_gl_doc[i]);
11800
11850
printf("factor_een_gl_hpc = %20.15e\n", factor_een_gl_hpc[i]);
11851
+ fflush(stdout);
11801
11852
}
11802
11853
assert(fabs(factor_een_gl_doc[i] - factor_een_gl_hpc[i]) < 1e-8);
11803
11854
}
@@ -12163,7 +12214,13 @@ assert(qmckl_jastrow_champ_provided(context));
12163
12214
12164
12215
12165
12216
for (int64_t i=0 ; i< walk_num ; ++i) {
12166
- assert (total_j[i] - exp(factor_ee[i] + factor_en[i] + factor_een[i]) < 1.e-12);
12217
+ if (fabs(total_j[i] - exp(factor_ee[i] + factor_en[i] + factor_een[i])) > 1e-12) {
12218
+ printf("i = %ld\n", i);
12219
+ printf("total_j = %20.15e\n", total_j[i]);
12220
+ printf("exp(factor_ee + factor_en + factor_een) = %20.15e\n", exp(factor_ee[i] + factor_en[i] + factor_een[i]));
12221
+ fflush(stdout);
12222
+ }
12223
+ assert (fabs(total_j[i] - exp(factor_ee[i] + factor_en[i] + factor_een[i])) < 1.e-8);
12167
12224
}
12168
12225
}
12169
12226
@@ -12586,7 +12643,15 @@ assert(qmckl_jastrow_champ_provided(context));
12586
12643
for (int64_t m=0 ; m<4; ++m) {
12587
12644
for (int64_t e=0 ; e<elec_num; ++e) {
12588
12645
if (m < 3) { /* test only gradients */
12589
- assert (total_j_deriv[k][m][e]/total_j[k] - (factor_ee_gl[k][m][e] + factor_en_gl[k][m][e] + factor_een_gl[k][m][e]) < 1.e-12);
12646
+ if (fabs(total_j_deriv[k][m][e]/total_j[k] - (factor_ee_gl[k][m][e] + factor_en_gl[k][m][e] + factor_een_gl[k][m][e])) > 1e-12) {
12647
+ printf("k = %ld\n", k);
12648
+ printf("m = %ld\n", m);
12649
+ printf("e = %ld\n", e);
12650
+ printf("total_j_deriv = %20.15e\n", total_j_deriv[k][m][e]/total_j[k]);
12651
+ printf("factor_ee_gl + factor_en_gl + factor_een_gl = %20.15e\n", factor_ee_gl[k][m][e] + factor_en_gl[k][m][e] + factor_een_gl[k][m][e]);
12652
+ fflush(stdout);
12653
+ }
12654
+ assert (fabs(total_j_deriv[k][m][e]/total_j[k] - (factor_ee_gl[k][m][e] + factor_en_gl[k][m][e] + factor_een_gl[k][m][e])) < 1.e-12);
12590
12655
}
12591
12656
}
12592
12657
}
0 commit comments