Skip to content

Commit 3883b69

Browse files
committed
1. change Ds_result from vector<Ts> to Ts in LRI::cal_loop3()
1 parent a1d0733 commit 3883b69

File tree

9 files changed

+94
-115
lines changed

9 files changed

+94
-115
lines changed

include/RI/physics/Exx.hpp

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -201,17 +201,14 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_Hs(
201201
this->lri.data_ab_name[label] = "Ds_delta_"+save_names_suffix[2];
202202
}
203203

204-
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> Hs_vec(1);
204+
if(!this->flag_finish.D_delta)
205+
this->Hs.clear();
205206
this->lri.cal_loop3(
206207
{Label::ab_ab::a0b0_a1b1,
207208
Label::ab_ab::a0b0_a1b2,
208209
Label::ab_ab::a0b0_a2b1,
209210
Label::ab_ab::a0b0_a2b2},
210-
Hs_vec);
211-
if(this->flag_finish.D_delta)
212-
this->Hs = this->Hs + Hs_vec[0];
213-
else
214-
this->Hs = std::move(Hs_vec[0]);
211+
this->Hs);
215212

216213
//if()
217214
this->energy = this->post_2D.cal_energy(
@@ -237,7 +234,7 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
237234
std::map<TA,Tdata> force_ipos;
238235

239236
{
240-
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec(1);
237+
std::map<TA,std::map<TAC,Tensor<Tdata>>> dHs;
241238

242239
this->lri.data_ab_name[Label::ab::a ] = "dCs_"+std::to_string(ipos)+"_"+save_names_suffix[3];
243240
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_"+save_names_suffix[1];
@@ -246,13 +243,13 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
246243
this->lri.cal_loop3(
247244
{Label::ab_ab::a0b0_a1b1,
248245
Label::ab_ab::a0b0_a1b2,},
249-
dHs_vec,
246+
dHs,
250247
-1.0);
251248

252249
this->lri.cal_loop3(
253250
{Label::ab_ab::a0b0_a2b1,
254251
Label::ab_ab::a0b0_a2b2},
255-
dHs_vec,
252+
dHs,
256253
1.0);
257254

258255
this->lri.data_ab_name[Label::ab::a ] = "Cs_"+save_names_suffix[0];
@@ -261,12 +258,12 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
261258
this->lri.cal_loop3(
262259
{Label::ab_ab::a0b0_a2b2,
263260
Label::ab_ab::a0b0_a2b1},
264-
dHs_vec,
261+
dHs,
265262
1.0);
266263

267264
this->post_2D.cal_force(
268265
this->post_2D.saves["Ds_"+save_names_suffix[2]],
269-
this->post_2D.set_tensors_map2(std::move(dHs_vec[0])),
266+
this->post_2D.set_tensors_map2(std::move(dHs)),
270267
true,
271268
force_ipos );
272269

@@ -277,12 +274,12 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
277274
}
278275

279276
{
280-
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec(1);
277+
std::map<TA,std::map<TAC,Tensor<Tdata>>> dHs;
281278

282279
this->lri.cal_loop3(
283280
{Label::ab_ab::a0b0_a2b2,
284281
Label::ab_ab::a0b0_a1b2},
285-
dHs_vec,
282+
dHs,
286283
1.0);
287284

288285
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_"+save_names_suffix[1];
@@ -291,18 +288,18 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
291288
this->lri.cal_loop3(
292289
{Label::ab_ab::a0b0_a1b1,
293290
Label::ab_ab::a0b0_a2b1},
294-
dHs_vec,
291+
dHs,
295292
1.0);
296293

297294
this->lri.cal_loop3(
298295
{Label::ab_ab::a0b0_a1b2,
299296
Label::ab_ab::a0b0_a2b2},
300-
dHs_vec,
297+
dHs,
301298
-1.0);
302299

303300
this->post_2D.cal_force(
304301
this->post_2D.saves["Ds_"+save_names_suffix[2]],
305-
this->post_2D.set_tensors_map2(std::move(dHs_vec[0])),
302+
this->post_2D.set_tensors_map2(std::move(dHs)),
306303
false,
307304
force_ipos );
308305

@@ -334,7 +331,7 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
334331
for(std::size_t ipos0=0; ipos0<Npos; ++ipos0)
335332
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
336333
{
337-
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec(1);
334+
std::map<TA,std::map<TAC,Tensor<Tdata>>> dHs;
338335

339336
this->lri.data_ab_name[Label::ab::a ] = "dCRs_"+std::to_string(ipos0)+"_"+std::to_string(ipos1)+"_"+save_names_suffix[3];
340337
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_"+save_names_suffix[1];
@@ -343,7 +340,7 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
343340
this->lri.cal_loop3(
344341
{Label::ab_ab::a0b0_a1b1,
345342
Label::ab_ab::a0b0_a2b1},
346-
dHs_vec,
343+
dHs,
347344
1.0);
348345

349346
this->lri.data_ab_name[Label::ab::a ] = "Cs_"+save_names_suffix[0];
@@ -352,7 +349,7 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
352349
this->lri.cal_loop3(
353350
{Label::ab_ab::a0b0_a1b1,
354351
Label::ab_ab::a0b0_a2b1},
355-
dHs_vec,
352+
dHs,
356353
1.0);
357354

358355
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_"+save_names_suffix[1];
@@ -361,12 +358,12 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
361358
this->lri.cal_loop3(
362359
{Label::ab_ab::a0b0_a1b1,
363360
Label::ab_ab::a0b0_a2b1},
364-
dHs_vec,
361+
dHs,
365362
1.0);
366363

367364
this->stress(ipos0,ipos1) = post_2D.cal_energy(
368365
this->post_2D.saves["Ds_"+save_names_suffix[2]],
369-
this->post_2D.set_tensors_map2(dHs_vec[0]));
366+
this->post_2D.set_tensors_map2(dHs));
370367
}
371368
}
372369

include/RI/physics/GW.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,13 @@ void G0W0<TA, Tcell, Ndim, Tdata>::cal_Sigc(
6464
{Label::ab::a0b0},
6565
{{"threshold_filter", threshold_W}} );
6666

67-
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> Sigc_vec(1);
67+
this->Sigc_tau.clear();
6868
this->lri.cal_loop3(
6969
{Label::ab_ab::a0b0_a1b1,
7070
Label::ab_ab::a0b0_a1b2,
7171
Label::ab_ab::a0b0_a2b1,
7272
Label::ab_ab::a0b0_a2b2},
73-
Sigc_vec);
74-
this->Sigc_tau = std::move(Sigc_vec[0]);
73+
this->Sigc_tau);
7574
}
7675

7776
} // namespace RI

include/RI/physics/RPA.hpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,14 @@ void RPA<TA,Tcell,Ndim,Tdata>::cal_chi0s(
6767
{{"threshold_filter", threshold_G}} );
6868
};
6969

70-
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> chi0s_vec(1);
70+
this->chi0s.clear();
7171

7272
set_Gs_a1(Gs_tau_positive);
7373
set_Gs_a2(Gs_tau_negative);
7474
this->lri.cal_loop3({
7575
Label::ab_ab::a1b1_a2b2,
7676
Label::ab_ab::a1b2_a2b1},
77-
chi0s_vec);
77+
this->chi0s);
7878

7979
set_Gs_a1(Gs_tau_negative); // tmp
8080
set_Gs_a2(Gs_tau_positive); // tmp
@@ -83,9 +83,7 @@ void RPA<TA,Tcell,Ndim,Tdata>::cal_chi0s(
8383
this->lri.cal_loop3({
8484
Label::ab_ab::a1b1_a2b2,
8585
Label::ab_ab::a1b2_a2b1},
86-
chi0s_vec);
87-
88-
this->chi0s = std::move(chi0s_vec[0]);
86+
this->chi0s);
8987
}
9088

9189
}

include/RI/ri/LRI-cal_loop3.hpp

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,13 @@ namespace RI
2121
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
2222
void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
2323
const std::vector<Label::ab_ab> &labels,
24-
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> &Ds_result,
24+
std::map<TA, std::map<TAC, Tensor<Tdata>>> &Ds_result,
2525
const double fac_add_Ds)
2626
{
2727
using namespace Array_Operator;
2828

2929
const Data_Pack_Wrapper<TA,TC,Tdata> data_wrapper(this->data_pool, this->data_ab_name);
3030

31-
if(Ds_result.empty())
32-
Ds_result.resize(1);
33-
3431
const bool flag_D_a_transpose = [&labels]() -> bool
3532
{
3633
for(const Label::ab_ab &label : labels)
@@ -83,8 +80,8 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
8380

8481
#pragma omp parallel
8582
{
86-
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> Ds_result_thread(1);
87-
LRI_Cal_Tools<TA,TC,Tdata> tools(this->period, this->data_pool, this->data_ab_name, Ds_result_thread);
83+
std::map<TA, std::map<TAC, Tensor<Tdata>>> Ds_result_thread;
84+
LRI_Cal_Tools<TA,TC,Tdata> tools(this->period, this->data_pool, this->data_ab_name);
8885

8986
for(const Label::ab_ab &label : labels)
9087
{
@@ -151,7 +148,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
151148

152149
if(!Ds_result_fixed.empty())
153150
LRI_Cal_Aux::add_Ds( LRI_Cal_Aux::Ds_translate(std::move(Ds_result_fixed), Aa2.second, this->period),
154-
Ds_result_thread[0][Aa2.first]);
151+
Ds_result_thread[Aa2.first]);
155152
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
156153
} // end for Ab2
157154
} break; // end case a0b0_a1b1
@@ -211,7 +208,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
211208

212209
if(!Ds_result_fixed.empty())
213210
LRI_Cal_Aux::add_Ds( LRI_Cal_Aux::Ds_translate(std::move(Ds_result_fixed), Aa2.second, this->period),
214-
Ds_result_thread[0][Aa2.first]);
211+
Ds_result_thread[Aa2.first]);
215212
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
216213
} // end for Ab2
217214
} break; // end case a0b1_a1b0
@@ -273,7 +270,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
273270

274271
if(!Ds_result_fixed.empty())
275272
LRI_Cal_Aux::add_Ds( LRI_Cal_Aux::Ds_exchange(std::move(Ds_result_fixed), Ab01, this->period),
276-
Ds_result_thread[0]);
273+
Ds_result_thread);
277274
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
278275
} // end for Ab01
279276
} break; // end case a0b0_a1b2
@@ -333,7 +330,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
333330

334331
if(!Ds_result_fixed.empty())
335332
LRI_Cal_Aux::add_Ds( LRI_Cal_Aux::Ds_exchange(std::move(Ds_result_fixed), Ab01, this->period),
336-
Ds_result_thread[0]);
333+
Ds_result_thread);
337334
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
338335
} // end for Ab01
339336
} break; // end case a0b1_a1b2
@@ -393,7 +390,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
393390

394391
if(!Ds_result_fixed.empty())
395392
LRI_Cal_Aux::add_Ds( LRI_Cal_Aux::Ds_exchange(std::move(Ds_result_fixed), Ab01, this->period),
396-
Ds_result_thread[0]);
393+
Ds_result_thread);
397394
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
398395
} // end for Ab01
399396
} break; // end case a0b2_a1b0
@@ -453,7 +450,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
453450

454451
if(!Ds_result_fixed.empty())
455452
LRI_Cal_Aux::add_Ds( LRI_Cal_Aux::Ds_exchange(std::move(Ds_result_fixed), Ab01, this->period),
456-
Ds_result_thread[0]);
453+
Ds_result_thread);
457454
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
458455
} // end for Ab01
459456
} break; // end case a0b2_a1b1
@@ -516,7 +513,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
516513

517514
if(!Ds_result_fixed.empty())
518515
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
519-
Ds_result_thread[0][Aa01]);
516+
Ds_result_thread[Aa01]);
520517
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
521518
} // end for Aa01
522519
} break; // end case a0b0_a2b1
@@ -577,7 +574,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
577574

578575
if(!Ds_result_fixed.empty())
579576
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
580-
Ds_result_thread[0][Aa01]);
577+
Ds_result_thread[Aa01]);
581578
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
582579
} // end for Aa01
583580
} break; // end case a0b1_a2b0
@@ -638,7 +635,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
638635

639636
if(!Ds_result_fixed.empty())
640637
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
641-
Ds_result_thread[0][Aa01]);
638+
Ds_result_thread[Aa01]);
642639
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
643640
} // end for Aa01
644641
} break; // end case a1b0_a2b1
@@ -699,7 +696,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
699696

700697
if(!Ds_result_fixed.empty())
701698
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
702-
Ds_result_thread[0][Aa01]);
699+
Ds_result_thread[Aa01]);
703700
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
704701
} // end for Aa01
705702
} break; // end case a1b1_a2b0
@@ -762,7 +759,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
762759

763760
if(!Ds_result_fixed.empty())
764761
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
765-
Ds_result_thread[0][Aa01]);
762+
Ds_result_thread[Aa01]);
766763
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
767764
} // end for Aa01
768765
} break; // end case a0b0_a2b2
@@ -823,7 +820,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
823820

824821
if(!Ds_result_fixed.empty())
825822
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
826-
Ds_result_thread[0][Aa01]);
823+
Ds_result_thread[Aa01]);
827824
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
828825
} // end for Aa01
829826
} break; // end case a0b1_a2b2
@@ -884,7 +881,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
884881

885882
if(!Ds_result_fixed.empty())
886883
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
887-
Ds_result_thread[0][Aa01]);
884+
Ds_result_thread[Aa01]);
888885

889886
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
890887

@@ -948,7 +945,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
948945

949946
if(!Ds_result_fixed.empty())
950947
LRI_Cal_Aux::add_Ds( std::move(Ds_result_fixed),
951-
Ds_result_thread[0][Aa01]);
948+
Ds_result_thread[Aa01]);
952949
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
953950
} // end for Aa01
954951
} break; // end case a1b1_a2b2
@@ -1009,7 +1006,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
10091006
// a0b0 = b1a1a0 * b0b1a1
10101007
Tensor<Tdata> D_mul3 = Tensor_Multiply::x2y0_abx2_y0ab(D_mul2, D_mul1);
10111008
LRI_Cal_Aux::add_Ds( std::move(D_mul3),
1012-
Ds_result_thread[0][Aa01][Ab01]);
1009+
Ds_result_thread[Aa01][Ab01]);
10131010
} // end for Aa01
10141011

10151012
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
@@ -1070,7 +1067,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
10701067
// b1a1 = a1a0b0 * a0b0b1
10711068
Tensor<Tdata> D_mul3 = Tensor_Multiply::x0y2_x0ab_aby2(D_mul2, D_mul1);
10721069
LRI_Cal_Aux::add_Ds( std::move(D_mul3),
1073-
Ds_result_thread[0][Aa01][Ab01]);
1070+
Ds_result_thread[Aa01][Ab01]);
10741071
} // end for Aa01
10751072

10761073
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
@@ -1131,7 +1128,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
11311128
// a1b0 = b1a0a1 * b0b1a0
11321129
Tensor<Tdata> D_mul3 = Tensor_Multiply::x2y0_abx2_y0ab(D_mul2, D_mul1);
11331130
LRI_Cal_Aux::add_Ds( std::move(D_mul3),
1134-
Ds_result_thread[0][Aa01][Ab01]);
1131+
Ds_result_thread[Aa01][Ab01]);
11351132
} // end for Aa01
11361133

11371134
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
@@ -1192,7 +1189,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
11921189
// a0b1 = a0a1b0 * a1b0b1
11931190
Tensor<Tdata> D_mul3 = Tensor_Multiply::x0y2_x0ab_aby2(D_mul2, D_mul1);
11941191
LRI_Cal_Aux::add_Ds( std::move(D_mul3),
1195-
Ds_result_thread[0][Aa01][Ab01]);
1192+
Ds_result_thread[Aa01][Ab01]);
11961193
} // end for Aa01
11971194

11981195
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);

include/RI/ri/LRI.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class LRI
5858

5959
void cal_loop3(
6060
const std::vector<Label::ab_ab> &labels,
61-
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> &Ds_result,
61+
std::map<TA, std::map<TAC, Tensor<Tdata>>> &Ds_result,
6262
const double fac_add_Ds = 1.0);
6363

6464
public:

0 commit comments

Comments
 (0)