@@ -21,16 +21,13 @@ namespace RI
2121template <typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
2222void 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);
0 commit comments