Skip to content

Commit b9d7391

Browse files
committed
1. fix bug in LRI::cal_loop3() case a1b1_a2b2
1 parent 6cd5ff7 commit b9d7391

File tree

3 files changed

+73
-18
lines changed

3 files changed

+73
-18
lines changed

include/RI/ri/LRI-cal_loop3.hpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,10 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
151151
data_wrapper(Label::ab::a1b2).Ds_ab );
152152
const std::vector<TAC> &list_Aa2 =
153153
list_Aa2_Da;
154-
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
154+
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
155155
list_Ab01_Db,
156156
data_wrapper(Label::ab::a0b0).index_Ds_ab[0]);
157-
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
157+
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
158158
list_Ab2_Db,
159159
data_wrapper(Label::ab::a1b2).index_Ds_ab[0]);
160160

@@ -201,14 +201,14 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
201201
Ds_result_thread[0]);
202202
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
203203
} // end for Ab01
204-
} break; // end case a0b0_a1b2
204+
} break; // end case a0b0_a1b2
205205

206206
case Label::ab_ab::a0b0_a2b1:
207207
{
208208
const std::vector<TA > list_Aa01 = LRI_Cal_Aux::filter_list_map(
209209
list_Aa01_Da,
210210
data_wrapper(Label::ab::a0b0).Ds_ab );
211-
const std::vector<TAC> list_Aa2 = LRI_Cal_Aux::filter_list_map(
211+
const std::vector<TAC> list_Aa2 = LRI_Cal_Aux::filter_list_map(
212212
list_Aa2_Da,
213213
data_wrapper(Label::ab::a2b1).Ds_ab );
214214
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set( LRI_Cal_Aux::filter_list_set(
@@ -269,13 +269,13 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
269269
const std::vector<TA > list_Aa01 = LRI_Cal_Aux::filter_list_map(
270270
list_Aa01_Da,
271271
data_wrapper(Label::ab::a0b0).Ds_ab );
272-
const std::vector<TAC> list_Aa2 = LRI_Cal_Aux::filter_list_map(
272+
const std::vector<TAC> list_Aa2 = LRI_Cal_Aux::filter_list_map(
273273
list_Aa2_Da,
274274
data_wrapper(Label::ab::a2b2).Ds_ab );
275-
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
275+
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
276276
list_Ab01_Db,
277277
data_wrapper(Label::ab::a0b0).index_Ds_ab[0]);
278-
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
278+
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
279279
list_Ab2_Db,
280280
data_wrapper(Label::ab::a2b2).index_Ds_ab[0]);
281281

@@ -329,14 +329,14 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
329329
{
330330
const std::vector<TA > list_Aa01 = LRI_Cal_Aux::filter_list_map(
331331
list_Aa01_Da,
332-
data_wrapper(Label::ab::a0b0).Ds_ab );
333-
const std::vector<TAC> list_Aa2 = LRI_Cal_Aux::filter_list_map(
332+
data_wrapper(Label::ab::a1b1).Ds_ab );
333+
const std::vector<TAC> list_Aa2 = LRI_Cal_Aux::filter_list_map(
334334
list_Aa2_Da,
335335
data_wrapper(Label::ab::a2b2).Ds_ab );
336-
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
336+
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
337337
list_Ab01_Db,
338-
data_wrapper(Label::ab::a0b0).index_Ds_ab[0]);
339-
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
338+
data_wrapper(Label::ab::a1b1).index_Ds_ab[0]);
339+
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
340340
list_Ab2_Db,
341341
data_wrapper(Label::ab::a2b2).index_Ds_ab[0]);
342342

@@ -388,16 +388,16 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
388388

389389
case Label::ab_ab::a1b2_a2b1:
390390
{
391-
const std::vector<TA > list_Aa01 = LRI_Cal_Aux::filter_list_map(
391+
const std::vector<TA > list_Aa01 = LRI_Cal_Aux::filter_list_map(
392392
list_Aa01_Da,
393393
data_wrapper(Label::ab::a1b2).Ds_ab );
394394
const std::vector<TAC> &list_Aa2 = LRI_Cal_Aux::filter_list_map(
395395
list_Aa2_Da,
396396
data_wrapper(Label::ab::a2b1).Ds_ab );
397-
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
397+
const std::vector<TAC> list_Ab01 = LRI_Cal_Aux::filter_list_set(
398398
list_Ab01_Db,
399399
data_wrapper(Label::ab::a2b1).index_Ds_ab[0]);
400-
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
400+
const std::vector<TAC> list_Ab2 = LRI_Cal_Aux::filter_list_set(
401401
list_Ab2_Db,
402402
data_wrapper(Label::ab::a1b2).index_Ds_ab[0]);
403403

@@ -443,7 +443,7 @@ void LRI<TA,Tcell,Ndim,Tdata>::cal_loop3(
443443

444444
LRI_Cal_Aux::add_Ds_omp_try(std::move(Ds_result_thread), Ds_result, lock_Ds_result_add, fac_add_Ds);
445445
} // end for Ab01
446-
} break; // end case a1b2_a2b1
446+
} break; // end case a1b2_a2b1
447447

448448
default:
449449
throw std::invalid_argument(std::string(__FILE__)+std::to_string(__LINE__));

include/RI/ri/Label_Tools.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include "Label.h"
99
#include <string>
1010
#include <vector>
11+
#include <set>
1112
#include <stdexcept>
1213

1314
namespace RI

unittests/ri/LRI_Loop3-test.hpp

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,13 @@ namespace LRI_Loop3_Test
104104

105105
lri.csm.set_threshold(1E-10);
106106

107-
for(const RI::Label::ab &label : RI::Label::array_ab)
108-
lri.set_tensors_map2(Ds_ab[label], {label});
107+
//for(const RI::Label::ab &label : RI::Label::array_ab)
108+
// lri.set_tensors_map2(Ds_ab[label], {label});
109109

110110
{
111+
lri.data_ab_name.clear(); lri.data_pool.clear();
112+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b0, RI::Label::ab::a1b1})
113+
lri.set_tensors_map2(Ds_ab[label], {label});
111114
std::vector<T_Ds> Ds_result;
112115
lri.cal_loop3({RI::Label::ab_ab::a0b0_a1b1}, Ds_result);
113116
RI::Tensor<Tdata> D_test({Na2,Nb2});
@@ -121,6 +124,9 @@ namespace LRI_Loop3_Test
121124
}
122125
/*
123126
{
127+
lri.data_ab_name.clear(); lri.data_pool.clear();
128+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b1, RI::Label::ab::a1b0})
129+
lri.set_tensors_map2(Ds_ab[label], {label});
124130
std::vector<T_Ds> Ds_result;
125131
lri.cal_loop3({RI::Label::ab_ab::a0b1_a1b0}, Ds_result);
126132
RI::Tensor<Tdata> D_test({Na2,Nb2});
@@ -134,6 +140,9 @@ namespace LRI_Loop3_Test
134140
}
135141
*/
136142
{
143+
lri.data_ab_name.clear(); lri.data_pool.clear();
144+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b0, RI::Label::ab::a2b1})
145+
lri.set_tensors_map2(Ds_ab[label], {label});
137146
std::vector<T_Ds> Ds_result;
138147
lri.cal_loop3({RI::Label::ab_ab::a0b0_a2b1}, Ds_result);
139148
RI::Tensor<Tdata> D_test({Na1,Nb2});
@@ -147,6 +156,9 @@ namespace LRI_Loop3_Test
147156
}
148157
/*
149158
{
159+
lri.data_ab_name.clear(); lri.data_pool.clear();
160+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b1, RI::Label::ab::a2b0})
161+
lri.set_tensors_map2(Ds_ab[label], {label});
150162
std::vector<T_Ds> Ds_result;
151163
lri.cal_loop3({RI::Label::ab_ab::a0b1_a2b0}, Ds_result);
152164
RI::Tensor<Tdata> D_test({Na1,Nb2});
@@ -160,6 +172,9 @@ namespace LRI_Loop3_Test
160172
}
161173
162174
{
175+
lri.data_ab_name.clear(); lri.data_pool.clear();
176+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a1b0, RI::Label::ab::a2b1})
177+
lri.set_tensors_map2(Ds_ab[label], {label});
163178
std::vector<T_Ds> Ds_result;
164179
lri.cal_loop3({RI::Label::ab_ab::a1b0_a2b1}, Ds_result);
165180
RI::Tensor<Tdata> D_test({Na0,Nb2});
@@ -173,6 +188,9 @@ namespace LRI_Loop3_Test
173188
}
174189
175190
{
191+
lri.data_ab_name.clear(); lri.data_pool.clear();
192+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a1b1, RI::Label::ab::a2b0})
193+
lri.set_tensors_map2(Ds_ab[label], {label});
176194
std::vector<T_Ds> Ds_result;
177195
lri.cal_loop3({RI::Label::ab_ab::a1b1_a2b0}, Ds_result);
178196
RI::Tensor<Tdata> D_test({Na0,Nb2});
@@ -186,6 +204,9 @@ namespace LRI_Loop3_Test
186204
}
187205
*/
188206
{
207+
lri.data_ab_name.clear(); lri.data_pool.clear();
208+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b0, RI::Label::ab::a1b2})
209+
lri.set_tensors_map2(Ds_ab[label], {label});
189210
std::vector<T_Ds> Ds_result;
190211
lri.cal_loop3({RI::Label::ab_ab::a0b0_a1b2}, Ds_result);
191212
RI::Tensor<Tdata> D_test({Na2,Nb1});
@@ -199,6 +220,9 @@ namespace LRI_Loop3_Test
199220
}
200221
/*
201222
{
223+
lri.data_ab_name.clear(); lri.data_pool.clear();
224+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b1, RI::Label::ab::a1b2})
225+
lri.set_tensors_map2(Ds_ab[label], {label});
202226
std::vector<T_Ds> Ds_result;
203227
lri.cal_loop3({RI::Label::ab_ab::a0b1_a1b2}, Ds_result);
204228
RI::Tensor<Tdata> D_test({Na2,Nb0});
@@ -212,6 +236,9 @@ namespace LRI_Loop3_Test
212236
}
213237
214238
{
239+
lri.data_ab_name.clear(); lri.data_pool.clear();
240+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b2, RI::Label::ab::a1b0})
241+
lri.set_tensors_map2(Ds_ab[label], {label});
215242
std::vector<T_Ds> Ds_result;
216243
lri.cal_loop3({RI::Label::ab_ab::a0b2_a1b0}, Ds_result);
217244
RI::Tensor<Tdata> D_test({Na2,Nb1});
@@ -225,6 +252,9 @@ namespace LRI_Loop3_Test
225252
}
226253
227254
{
255+
lri.data_ab_name.clear(); lri.data_pool.clear();
256+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b2, RI::Label::ab::a1b1})
257+
lri.set_tensors_map2(Ds_ab[label], {label});
228258
std::vector<T_Ds> Ds_result;
229259
lri.cal_loop3({RI::Label::ab_ab::a0b2_a1b1}, Ds_result);
230260
RI::Tensor<Tdata> D_test({Na2,Nb0});
@@ -238,6 +268,9 @@ namespace LRI_Loop3_Test
238268
}
239269
*/
240270
{
271+
lri.data_ab_name.clear(); lri.data_pool.clear();
272+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b0, RI::Label::ab::a2b2})
273+
lri.set_tensors_map2(Ds_ab[label], {label});
241274
std::vector<T_Ds> Ds_result;
242275
lri.cal_loop3({RI::Label::ab_ab::a0b0_a2b2}, Ds_result);
243276
RI::Tensor<Tdata> D_test({Na1,Nb1});
@@ -251,6 +284,9 @@ namespace LRI_Loop3_Test
251284
}
252285
/*
253286
{
287+
lri.data_ab_name.clear(); lri.data_pool.clear();
288+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b1, RI::Label::ab::a2b2})
289+
lri.set_tensors_map2(Ds_ab[label], {label});
254290
std::vector<T_Ds> Ds_result;
255291
lri.cal_loop3({RI::Label::ab_ab::a0b1_a2b2}, Ds_result);
256292
RI::Tensor<Tdata> D_test({Na1,Nb0});
@@ -264,6 +300,9 @@ namespace LRI_Loop3_Test
264300
}
265301
266302
{
303+
lri.data_ab_name.clear(); lri.data_pool.clear();
304+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b2, RI::Label::ab::a2b0})
305+
lri.set_tensors_map2(Ds_ab[label], {label});
267306
std::vector<T_Ds> Ds_result;
268307
lri.cal_loop3({RI::Label::ab_ab::a0b2_a2b0}, Ds_result);
269308
RI::Tensor<Tdata> D_test({Na1,Nb1});
@@ -277,6 +316,9 @@ namespace LRI_Loop3_Test
277316
}
278317
279318
{
319+
lri.data_ab_name.clear(); lri.data_pool.clear();
320+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a0b2, RI::Label::ab::a2b1})
321+
lri.set_tensors_map2(Ds_ab[label], {label});
280322
std::vector<T_Ds> Ds_result;
281323
lri.cal_loop3({RI::Label::ab_ab::a0b2_a2b1}, Ds_result);
282324
RI::Tensor<Tdata> D_test({Na1,Nb0});
@@ -290,6 +332,9 @@ namespace LRI_Loop3_Test
290332
}
291333
292334
{
335+
lri.data_ab_name.clear(); lri.data_pool.clear();
336+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a1b0, RI::Label::ab::a2b2})
337+
lri.set_tensors_map2(Ds_ab[label], {label});
293338
std::vector<T_Ds> Ds_result;
294339
lri.cal_loop3({RI::Label::ab_ab::a1b0_a2b2}, Ds_result);
295340
RI::Tensor<Tdata> D_test({Na0,Nb1});
@@ -303,6 +348,9 @@ namespace LRI_Loop3_Test
303348
}
304349
*/
305350
{
351+
lri.data_ab_name.clear(); lri.data_pool.clear();
352+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a1b1, RI::Label::ab::a2b2})
353+
lri.set_tensors_map2(Ds_ab[label], {label});
306354
std::vector<T_Ds> Ds_result;
307355
lri.cal_loop3({RI::Label::ab_ab::a1b1_a2b2}, Ds_result);
308356
RI::Tensor<Tdata> D_test({Na0,Nb0});
@@ -316,6 +364,9 @@ namespace LRI_Loop3_Test
316364
}
317365
/*
318366
{
367+
lri.data_ab_name.clear(); lri.data_pool.clear();
368+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a1b2, RI::Label::ab::a2b0})
369+
lri.set_tensors_map2(Ds_ab[label], {label});
319370
std::vector<T_Ds> Ds_result;
320371
lri.cal_loop3({RI::Label::ab_ab::a1b2_a2b0}, Ds_result);
321372
RI::Tensor<Tdata> D_test({Na0,Nb1});
@@ -329,6 +380,9 @@ namespace LRI_Loop3_Test
329380
}
330381
*/
331382
{
383+
lri.data_ab_name.clear(); lri.data_pool.clear();
384+
for(const RI::Label::ab &label : {RI::Label::ab::a, RI::Label::ab::b, RI::Label::ab::a1b2, RI::Label::ab::a2b1})
385+
lri.set_tensors_map2(Ds_ab[label], {label});
332386
std::vector<T_Ds> Ds_result;
333387
lri.cal_loop3({RI::Label::ab_ab::a1b2_a2b1}, Ds_result);
334388
RI::Tensor<Tdata> D_test({Na0,Nb0});

0 commit comments

Comments
 (0)