mirror of
https://github.com/TREX-CoE/qmckl.git
synced 2025-04-30 04:15:00 +02:00
optimizations
This commit is contained in:
parent
5270ee4f58
commit
467411c230
@ -6484,87 +6484,111 @@ qmckl_get_jastrow_champ_single_accept(qmckl_context context)
|
||||
|
||||
double metric[4] = {-1.0, -1.0, -1.0, 1.0};
|
||||
|
||||
int shift1, shift2, shift3, shift4, shift5, shift6, shift7;
|
||||
|
||||
int shift8, shift9, shift10, shift11, shift12, shift13, shift14;
|
||||
|
||||
if (ctx->jastrow_champ.cord_num > 0) {
|
||||
|
||||
shift1 = (ctx->jastrow_champ.cord_num+1)*ctx->electron.num*ctx->electron.num;
|
||||
shift2 = ctx->electron.num*ctx->electron.num;
|
||||
|
||||
shift3 = (ctx->jastrow_champ.cord_num+1)*ctx->electron.num;
|
||||
|
||||
shift4 = (ctx->jastrow_champ.cord_num+1)*ctx->electron.num*4*ctx->electron.num;
|
||||
shift5 = ctx->electron.num*4*ctx->electron.num;
|
||||
shift6 = ctx->electron.num*4;
|
||||
|
||||
shift7 = (ctx->jastrow_champ.cord_num+1)*ctx->electron.num*4;
|
||||
|
||||
shift8 = (ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*ctx->electron.num;
|
||||
shift9 = (ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num;
|
||||
|
||||
shift10 = (ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*4*ctx->electron.num;
|
||||
|
||||
shift11 = ctx->nucleus.num*4*ctx->electron.num;
|
||||
|
||||
shift12 = (ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*4;
|
||||
shift13 = ctx->nucleus.num*4;
|
||||
|
||||
shift14 = ctx->nucleus.num*ctx->electron.num;
|
||||
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
ctx->jastrow_champ.factor_een[nw] = ctx->jastrow_champ.factor_een[nw] + ctx->single_point.delta_een[nw];
|
||||
}
|
||||
for (int i = 0; i < (ctx->electron.walker.num*(ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*ctx->electron.num*ctx->jastrow_champ.cord_num); i++) {
|
||||
ctx->jastrow_champ.tmp_c[i] = ctx->jastrow_champ.tmp_c[i] + ctx->single_point.delta_p[i];
|
||||
}
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
for (int l = 0; l <= ctx->jastrow_champ.cord_num; l++){
|
||||
for (int a = 0; a < ctx->nucleus.num; a++){
|
||||
ctx->jastrow_champ.een_rescaled_n[nw*(ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*ctx->electron.num
|
||||
+ l*ctx->nucleus.num*ctx->electron.num
|
||||
+ a*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.een_rescaled_single_n[nw*(ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num
|
||||
+ l*ctx->nucleus.num
|
||||
+ a];
|
||||
}
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
ctx->jastrow_champ.een_rescaled_e[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num*ctx->electron.num
|
||||
+ l*ctx->electron.num*ctx->electron.num
|
||||
ctx->jastrow_champ.een_rescaled_e[nw*shift1
|
||||
+ l*shift2
|
||||
+ i*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.een_rescaled_single_e[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num
|
||||
ctx->single_point.een_rescaled_single_e[nw*shift3
|
||||
+ l*ctx->electron.num
|
||||
+ i];
|
||||
|
||||
ctx->jastrow_champ.een_rescaled_e[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num*ctx->electron.num
|
||||
+ l*ctx->electron.num*ctx->electron.num
|
||||
ctx->jastrow_champ.een_rescaled_e[nw*shift1
|
||||
+ l*shift2
|
||||
+ ctx->single_point.num*ctx->electron.num
|
||||
+ i] =
|
||||
ctx->single_point.een_rescaled_single_e[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num
|
||||
ctx->single_point.een_rescaled_single_e[nw*shift3
|
||||
+ l*ctx->electron.num
|
||||
+ i];
|
||||
for (int k = 0; k < 4; k++){
|
||||
ctx->jastrow_champ.een_rescaled_e_gl[nw*shift4
|
||||
+ l*shift5
|
||||
+ i*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.een_rescaled_single_e_gl[nw*shift7
|
||||
+ l*shift6
|
||||
+ i*4
|
||||
+ k];
|
||||
ctx->jastrow_champ.een_rescaled_e_gl[nw*shift4
|
||||
+ l*shift5
|
||||
+ ctx->single_point.num*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ i] =
|
||||
metric[k] * ctx->single_point.een_rescaled_single_e_gl[nw*shift7
|
||||
+ l*shift6
|
||||
+ i*4
|
||||
+ k];
|
||||
}
|
||||
}
|
||||
for (int a = 0; a < ctx->nucleus.num; a++){
|
||||
ctx->jastrow_champ.een_rescaled_n[nw*shift8
|
||||
+ l*shift14
|
||||
+ a*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.een_rescaled_single_n[nw*shift9
|
||||
+ l*ctx->nucleus.num
|
||||
+ a];
|
||||
for (int k = 0; k < 4; k++){
|
||||
ctx->jastrow_champ.een_rescaled_n_gl[nw*shift10
|
||||
+ l*shift11
|
||||
+ a*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.een_rescaled_single_n_gl[nw*shift12
|
||||
+ l*shift13
|
||||
+ a*4
|
||||
+ k];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < ctx->electron.walker.num * 4 * ctx->electron.num; i++) {
|
||||
ctx->jastrow_champ.factor_een_gl[i] = ctx->jastrow_champ.factor_een_gl[i] + ctx->single_point.delta_een_gl[i];
|
||||
}
|
||||
for (int i = 0; i < (ctx->electron.walker.num*(ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*ctx->electron.num*ctx->jastrow_champ.cord_num); i++) {
|
||||
ctx->jastrow_champ.tmp_c[i] = ctx->jastrow_champ.tmp_c[i] + ctx->single_point.delta_p[i];
|
||||
}
|
||||
|
||||
/*
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
for (int l = 0; l <= ctx->jastrow_champ.cord_num; l++){
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
for (int k = 0; k < 4; k++){
|
||||
ctx->jastrow_champ.een_rescaled_e_gl[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num*4*ctx->electron.num
|
||||
+ l*ctx->electron.num*4*ctx->electron.num
|
||||
+ i*4*ctx->electron.num
|
||||
+ k*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.een_rescaled_single_e_gl[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num*4
|
||||
+ l*ctx->electron.num*4
|
||||
+ i*4
|
||||
+ k];
|
||||
ctx->jastrow_champ.een_rescaled_e_gl[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num*4*ctx->electron.num
|
||||
+ l*ctx->electron.num*4*ctx->electron.num
|
||||
+ ctx->single_point.num*4*ctx->electron.num
|
||||
+ k*ctx->electron.num
|
||||
+ i] =
|
||||
metric[k] * ctx->single_point.een_rescaled_single_e_gl[nw*(ctx->jastrow_champ.cord_num+1)*ctx->electron.num*4
|
||||
+ l*ctx->electron.num*4
|
||||
+ i*4
|
||||
+ k];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
for (int a = 0; a < ctx->nucleus.num; a++) {
|
||||
for (int k = 0; k < 4; k++){
|
||||
for (int l = 0; l <= ctx->jastrow_champ.cord_num; l++) {
|
||||
ctx->jastrow_champ.een_rescaled_n_gl[nw*(ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*4*ctx->electron.num
|
||||
+ l*ctx->nucleus.num*4*ctx->electron.num
|
||||
+ a*4*ctx->electron.num
|
||||
+ k*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.een_rescaled_single_n_gl[nw*(ctx->jastrow_champ.cord_num+1)*ctx->nucleus.num*4
|
||||
+ l*ctx->nucleus.num*4
|
||||
+ a*4
|
||||
+ k];
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
for (int m = 0; m < ctx->jastrow_champ.cord_num; m++){
|
||||
for (int m = 0; m < ctx->jastrow_champ.cord_num; m++){
|
||||
for (int l = 0; l <= ctx->jastrow_champ.cord_num; l++) {
|
||||
for (int a = 0; a < ctx->nucleus.num; a++) {
|
||||
for (int k = 0; k < 4; k++){
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
ctx->jastrow_champ.dtmp_c[nw*ctx->electron.num*4*ctx->nucleus.num*ctx->jastrow_champ.cord_num*(ctx->jastrow_champ.cord_num+1)
|
||||
+ m*ctx->electron.num*4*ctx->nucleus.num*(ctx->jastrow_champ.cord_num+1)
|
||||
+ l*ctx->electron.num*4*ctx->nucleus.num
|
||||
@ -6589,106 +6613,125 @@ qmckl_get_jastrow_champ_single_accept(qmckl_context context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
for (int nw = 0; nw < ctx->electron.walker.num*(ctx->jastrow_champ.cord_num+1)*ctx->jastrow_champ.cord_num; nw++) {
|
||||
for (int a = 0; a < ctx->nucleus.num; a++) {
|
||||
for (int k = 0; k < 4; k++){
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
ctx->jastrow_champ.dtmp_c[nw*shift11
|
||||
+ a*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ i] =
|
||||
ctx->jastrow_champ.dtmp_c[nw*shift11
|
||||
+ a*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ i] +
|
||||
ctx->single_point.delta_p_gl[nw*shift11
|
||||
+ k*shift14
|
||||
+ a*ctx->electron.num
|
||||
+ i];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
ctx->jastrow_champ.factor_en[nw] = ctx->jastrow_champ.factor_en[nw] + ctx->single_point.delta_en[nw];
|
||||
ctx->jastrow_champ.factor_ee[nw] = ctx->jastrow_champ.factor_ee[nw] + ctx->single_point.delta_ee[nw];
|
||||
}
|
||||
|
||||
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
ctx->electron.ee_distance[nw*ctx->electron.num*ctx->electron.num
|
||||
+ i*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.single_ee_distance[nw*ctx->electron.num
|
||||
+ i];
|
||||
|
||||
ctx->electron.ee_distance[nw*ctx->electron.num*ctx->electron.num
|
||||
+ ctx->single_point.num*ctx->electron.num
|
||||
+ i] =
|
||||
ctx->single_point.single_ee_distance[nw*ctx->electron.num
|
||||
+ i];
|
||||
for (int k = 0; k < 4; k++){
|
||||
ctx->jastrow_champ.ee_distance_rescaled_gl[nw*ctx->electron.num*ctx->electron.num*4
|
||||
+ i*ctx->electron.num*4
|
||||
+ ctx->single_point.num*4
|
||||
+ k] =
|
||||
metric[k] * ctx->single_point.ee_rescaled_single_gl[nw*ctx->electron.num*4
|
||||
+ i*4
|
||||
+ k];
|
||||
ctx->jastrow_champ.ee_distance_rescaled_gl[nw*ctx->electron.num*ctx->electron.num*4
|
||||
+ ctx->single_point.num*ctx->electron.num*4
|
||||
+ i*4
|
||||
+ k] =
|
||||
ctx->single_point.ee_rescaled_single_gl[nw*ctx->electron.num*4
|
||||
+ i*4
|
||||
+ k];
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
for (int a = 0; a < ctx->nucleus.num; a++) {
|
||||
ctx->electron.en_distance[nw*ctx->electron.num*ctx->nucleus.num
|
||||
ctx->electron.en_distance[nw*shift14
|
||||
+ ctx->single_point.num*ctx->nucleus.num
|
||||
+ a] =
|
||||
ctx->single_point.single_en_distance[nw*ctx->nucleus.num
|
||||
+ a];
|
||||
for (int k = 0; k < 4; k++){
|
||||
ctx->jastrow_champ.en_distance_rescaled_gl[nw*ctx->nucleus.num*4*ctx->electron.num
|
||||
+ a*ctx->electron.num*4
|
||||
+ ctx->single_point.num*4
|
||||
+ k] =
|
||||
ctx->single_point.en_rescaled_single_gl[nw*ctx->nucleus.num*4
|
||||
+ a*4
|
||||
+ k];
|
||||
}
|
||||
ctx->jastrow_champ.en_distance_rescaled[nw*ctx->nucleus.num*ctx->electron.num
|
||||
|
||||
ctx->jastrow_champ.en_distance_rescaled[nw*shift14
|
||||
+ a*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.en_rescaled_single[nw*ctx->nucleus.num
|
||||
+ a];
|
||||
for (int k = 0; k < 4; k++){
|
||||
ctx->jastrow_champ.en_distance_rescaled_gl[nw*shift11
|
||||
+ a*shift6
|
||||
+ ctx->single_point.num*4
|
||||
+ k] =
|
||||
ctx->single_point.en_rescaled_single_gl[nw*shift13
|
||||
+ a*4
|
||||
+ k];
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
ctx->jastrow_champ.ee_distance_rescaled[nw*ctx->electron.num*ctx->electron.num
|
||||
ctx->jastrow_champ.ee_distance_rescaled[nw*shift2
|
||||
+ i*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.ee_rescaled_single[nw*ctx->electron.num
|
||||
+ i];
|
||||
|
||||
ctx->jastrow_champ.ee_distance_rescaled[nw*ctx->electron.num*ctx->electron.num
|
||||
ctx->jastrow_champ.ee_distance_rescaled[nw*shift2
|
||||
+ ctx->single_point.num*ctx->electron.num
|
||||
+ i] =
|
||||
ctx->single_point.ee_rescaled_single[nw*ctx->electron.num
|
||||
+ i];
|
||||
|
||||
ctx->electron.ee_distance[nw*shift2
|
||||
+ i*ctx->electron.num
|
||||
+ ctx->single_point.num] =
|
||||
ctx->single_point.single_ee_distance[nw*ctx->electron.num
|
||||
+ i];
|
||||
|
||||
ctx->electron.ee_distance[nw*shift2
|
||||
+ ctx->single_point.num*ctx->electron.num
|
||||
+ i] =
|
||||
ctx->single_point.single_ee_distance[nw*ctx->electron.num
|
||||
+ i];
|
||||
|
||||
for (int k = 0; k < 4; k++){
|
||||
ctx->jastrow_champ.factor_ee_gl[nw*4*ctx->electron.num
|
||||
ctx->jastrow_champ.ee_distance_rescaled_gl[nw*shift5
|
||||
+ i*shift6
|
||||
+ ctx->single_point.num*4
|
||||
+ k] =
|
||||
metric[k] * ctx->single_point.ee_rescaled_single_gl[nw*shift6
|
||||
+ i*4
|
||||
+ k];
|
||||
ctx->jastrow_champ.ee_distance_rescaled_gl[nw*shift5
|
||||
+ ctx->single_point.num*shift6
|
||||
+ i*4
|
||||
+ k] =
|
||||
ctx->single_point.ee_rescaled_single_gl[nw*shift6
|
||||
+ i*4
|
||||
+ k];
|
||||
}
|
||||
}
|
||||
for (int k = 0; k < 4; k++){
|
||||
for (int i = 0; i < ctx->electron.num; i++) {
|
||||
|
||||
ctx->jastrow_champ.factor_ee_gl[nw*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ i] =
|
||||
ctx->jastrow_champ.factor_ee_gl[nw*4*ctx->electron.num
|
||||
ctx->jastrow_champ.factor_ee_gl[nw*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ i] +
|
||||
ctx->single_point.delta_ee_gl[nw*4*ctx->electron.num
|
||||
ctx->single_point.delta_ee_gl[nw*shift6
|
||||
+ i*4
|
||||
+ k];
|
||||
|
||||
ctx->jastrow_champ.factor_en_gl[nw*4*ctx->electron.num
|
||||
ctx->jastrow_champ.factor_en_gl[nw*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ i] =
|
||||
ctx->jastrow_champ.factor_en_gl[nw*4*ctx->electron.num
|
||||
ctx->jastrow_champ.factor_en_gl[nw*shift6
|
||||
+ k*ctx->electron.num
|
||||
+ i] +
|
||||
ctx->single_point.delta_en_gl[nw*4*ctx->electron.num
|
||||
ctx->single_point.delta_en_gl[nw*shift6
|
||||
+ i*4
|
||||
+ k];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (int nw = 0; nw < ctx->electron.walker.num; nw++) {
|
||||
for (int k = 0; k < 3; k++) {
|
||||
ctx->point.coord.data[nw*3*ctx->electron.num + k*ctx->electron.num + ctx->single_point.num] = ctx->single_point.coord.data[nw*3 + k];
|
||||
|
Loading…
x
Reference in New Issue
Block a user