Skip to content

Commit 044099e

Browse files
committed
1. add class Data_Pack
1 parent 5f0f96e commit 044099e

21 files changed

+268
-345
lines changed

include/RI/physics/Exx.hpp

Lines changed: 44 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_Cs(
3838
const Tdata_real &threshold_C,
3939
const std::string &save_name_suffix)
4040
{
41-
this->lri.set_tensors_map2( Cs, Label::ab::a, threshold_C );
42-
this->lri.set_tensors_map2( Cs, Label::ab::b, threshold_C );
43-
this->lri.save_load.save("Cs_a_"+save_name_suffix, Label::ab::a);
44-
this->lri.save_load.save("Cs_b_"+save_name_suffix, Label::ab::b);
41+
this->lri.set_tensors_map2( Cs, Label::ab::a, threshold_C, "Cs_a_"+save_name_suffix );
42+
this->lri.set_tensors_map2( Cs, Label::ab::b, threshold_C, "Cs_b_"+save_name_suffix );
4543
this->flag_finish.C = true;
4644
}
4745

@@ -51,8 +49,7 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_Vs(
5149
const Tdata_real &threshold_V,
5250
const std::string &save_name_suffix)
5351
{
54-
this->lri.set_tensors_map2( Vs, Label::ab::a0b0, threshold_V );
55-
this->lri.save_load.save("Vs_"+save_name_suffix, Label::ab::a0b0);
52+
this->lri.set_tensors_map2( Vs, Label::ab::a0b0, threshold_V, "Vs_"+save_name_suffix );
5653
this->flag_finish.V = true;
5754
}
5855

@@ -62,14 +59,10 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_Ds(
6259
const Tdata_real &threshold_D,
6360
const std::string &save_name_suffix)
6461
{
65-
this->lri.set_tensors_map2( Ds, Label::ab::a1b1, threshold_D );
66-
this->lri.set_tensors_map2( Ds, Label::ab::a1b2, threshold_D );
67-
this->lri.set_tensors_map2( Ds, Label::ab::a2b1, threshold_D );
68-
this->lri.set_tensors_map2( Ds, Label::ab::a2b2, threshold_D );
69-
this->lri.save_load.save("Ds_a1b1_"+save_name_suffix, Label::ab::a1b1);
70-
this->lri.save_load.save("Ds_a1b2_"+save_name_suffix, Label::ab::a1b2);
71-
this->lri.save_load.save("Ds_a2b1_"+save_name_suffix, Label::ab::a2b1);
72-
this->lri.save_load.save("Ds_a2b2_"+save_name_suffix, Label::ab::a2b2);
62+
this->lri.set_tensors_map2( Ds, Label::ab::a1b1, threshold_D, "Ds_a1b1_"+save_name_suffix );
63+
this->lri.set_tensors_map2( Ds, Label::ab::a1b2, threshold_D, "Ds_a1b2_"+save_name_suffix );
64+
this->lri.set_tensors_map2( Ds, Label::ab::a2b1, threshold_D, "Ds_a2b1_"+save_name_suffix );
65+
this->lri.set_tensors_map2( Ds, Label::ab::a2b2, threshold_D, "Ds_a2b2_"+save_name_suffix );
7366
this->flag_finish.D = true;
7467

7568
//if()
@@ -84,10 +77,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_dCs(
8477
{
8578
for(std::size_t ipos=0; ipos<Npos; ++ipos)
8679
{
87-
this->lri.set_tensors_map2( dCs[ipos], Label::ab::a, threshold_dC );
88-
this->lri.set_tensors_map2( dCs[ipos], Label::ab::b, threshold_dC );
89-
this->lri.save_load.save("dCs_a_"+std::to_string(ipos)+"_"+save_name_suffix, Label::ab::a);
90-
this->lri.save_load.save("dCs_b_"+std::to_string(ipos)+"_"+save_name_suffix, Label::ab::b);
80+
this->lri.set_tensors_map2( dCs[ipos], Label::ab::a, threshold_dC, "dCs_a_"+std::to_string(ipos)+"_"+save_name_suffix );
81+
this->lri.set_tensors_map2( dCs[ipos], Label::ab::b, threshold_dC, "dCs_b_"+std::to_string(ipos)+"_"+save_name_suffix );
9182
}
9283
this->flag_finish.dC = true;
9384
}
@@ -100,8 +91,7 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_dVs(
10091
{
10192
for(std::size_t ipos=0; ipos<Npos; ++ipos)
10293
{
103-
this->lri.set_tensors_map2( dVs[ipos], Label::ab::a0b0, threshold_dV );
104-
this->lri.save_load.save("dVs_"+std::to_string(ipos)+"_"+save_name_suffix, Label::ab::a0b0);
94+
this->lri.set_tensors_map2( dVs[ipos], Label::ab::a0b0, threshold_dV, "dVs_"+std::to_string(ipos)+"_"+save_name_suffix );
10595
}
10696
this->flag_finish.dV = true;
10797
}
@@ -117,13 +107,13 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_Hs(
117107
assert(this->flag_finish.V);
118108
assert(this->flag_finish.D);
119109

120-
this->lri.save_load.load("Cs_a_"+save_names_suffix[0], Label::ab::a);
121-
this->lri.save_load.load("Cs_b_"+save_names_suffix[0], Label::ab::b);
122-
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
123-
this->lri.save_load.load("Ds_a1b1_"+save_names_suffix[2], Label::ab::a1b1);
124-
this->lri.save_load.load("Ds_a1b2_"+save_names_suffix[2], Label::ab::a1b2);
125-
this->lri.save_load.load("Ds_a2b1_"+save_names_suffix[2], Label::ab::a2b1);
126-
this->lri.save_load.load("Ds_a2b2_"+save_names_suffix[2], Label::ab::a2b2);
110+
this->lri.data_ab_name[Label::ab::a ] = "Cs_a_" +save_names_suffix[0];
111+
this->lri.data_ab_name[Label::ab::b ] = "Cs_b_" +save_names_suffix[0];
112+
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_" +save_names_suffix[1];
113+
this->lri.data_ab_name[Label::ab::a1b1] = "Ds_a1b1_"+save_names_suffix[2];
114+
this->lri.data_ab_name[Label::ab::a1b2] = "Ds_a1b2_"+save_names_suffix[2];
115+
this->lri.data_ab_name[Label::ab::a2b1] = "Ds_a2b1_"+save_names_suffix[2];
116+
this->lri.data_ab_name[Label::ab::a2b2] = "Ds_a2b2_"+save_names_suffix[2];
127117

128118
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> Hs_vec(1);
129119
this->lri.coefficients = {nullptr};
@@ -140,13 +130,13 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_Hs(
140130
this->post_2D.saves["Ds_"+save_names_suffix[2]],
141131
this->post_2D.set_tensors_map2(this->Hs) );
142132

143-
this->lri.save_load.save("Cs_a_"+save_names_suffix[0], Label::ab::a);
144-
this->lri.save_load.save("Cs_b_"+save_names_suffix[0], Label::ab::b);
145-
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
146-
this->lri.save_load.save("Ds_a1b1_"+save_names_suffix[2], Label::ab::a1b1);
147-
this->lri.save_load.save("Ds_a1b2_"+save_names_suffix[2], Label::ab::a1b2);
148-
this->lri.save_load.save("Ds_a2b1_"+save_names_suffix[2], Label::ab::a2b1);
149-
this->lri.save_load.save("Ds_a2b2_"+save_names_suffix[2], Label::ab::a2b2);
133+
this->lri.data_ab_name[Label::ab::a ] = "Cs_a_" +save_names_suffix[0];
134+
this->lri.data_ab_name[Label::ab::b ] = "Cs_b_" +save_names_suffix[0];
135+
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_" +save_names_suffix[1];
136+
this->lri.data_ab_name[Label::ab::a1b1] = "Ds_a1b1_"+save_names_suffix[2];
137+
this->lri.data_ab_name[Label::ab::a1b2] = "Ds_a1b2_"+save_names_suffix[2];
138+
this->lri.data_ab_name[Label::ab::a2b1] = "Ds_a2b1_"+save_names_suffix[2];
139+
this->lri.data_ab_name[Label::ab::a2b2] = "Ds_a2b2_"+save_names_suffix[2];
150140
}
151141

152142
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
@@ -160,20 +150,20 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
160150
assert(this->flag_finish.dC);
161151
assert(this->flag_finish.dV);
162152

163-
this->lri.save_load.load("Ds_a1b1_"+save_names_suffix[2], Label::ab::a1b1);
164-
this->lri.save_load.load("Ds_a1b2_"+save_names_suffix[2], Label::ab::a1b2);
165-
this->lri.save_load.load("Ds_a2b1_"+save_names_suffix[2], Label::ab::a2b1);
166-
this->lri.save_load.load("Ds_a2b2_"+save_names_suffix[2], Label::ab::a2b2);
153+
this->lri.data_ab_name[Label::ab::a1b1] = "Ds_a1b1_"+save_names_suffix[2];
154+
this->lri.data_ab_name[Label::ab::a1b2] = "Ds_a1b2_"+save_names_suffix[2];
155+
this->lri.data_ab_name[Label::ab::a2b1] = "Ds_a2b1_"+save_names_suffix[2];
156+
this->lri.data_ab_name[Label::ab::a2b2] = "Ds_a2b2_"+save_names_suffix[2];
167157
for(std::size_t ipos=0; ipos<Npos; ++ipos)
168158
{
169159
std::map<TA,Tdata> force_ipos;
170160

171161
{
172162
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec(1);
173163

174-
this->lri.save_load.load("dCs_a_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::a);
175-
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
176-
this->lri.save_load.load("Cs_b_"+save_names_suffix[0], Label::ab::b);
164+
this->lri.data_ab_name[Label::ab::a ] = "dCs_a_"+std::to_string(ipos)+"_"+save_names_suffix[3];
165+
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_" +save_names_suffix[1];
166+
this->lri.data_ab_name[Label::ab::b ] = "Cs_b_" +save_names_suffix[0];
177167

178168
this->lri.cal_loop3(
179169
{Label::ab_ab::a0b0_a1b1,
@@ -187,11 +177,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
187177
dHs_vec,
188178
1.0);
189179

190-
this->lri.save_load.save("dCs_a_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::a);
191-
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
192-
193-
this->lri.save_load.load("Cs_a_"+save_names_suffix[0], Label::ab::a);
194-
this->lri.save_load.load("dVs_"+std::to_string(ipos)+"_"+save_names_suffix[4], Label::ab::a0b0);
180+
this->lri.data_ab_name[Label::ab::a ] = "Cs_a_" +save_names_suffix[0];
181+
this->lri.data_ab_name[Label::ab::a0b0] = "dVs_" +std::to_string(ipos)+"_"+save_names_suffix[4];
195182

196183
this->lri.cal_loop3(
197184
{Label::ab_ab::a0b0_a2b2,
@@ -220,11 +207,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
220207
dHs_vec,
221208
1.0);
222209

223-
this->lri.save_load.save("dVs_"+std::to_string(ipos)+"_"+save_names_suffix[4], Label::ab::a0b0);
224-
this->lri.save_load.save("Cs_b_"+save_names_suffix[0], Label::ab::b);
225-
226-
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
227-
this->lri.save_load.load("dCs_b_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::b);
210+
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_" +save_names_suffix[1];
211+
this->lri.data_ab_name[Label::ab::b ] = "dCs_b_"+std::to_string(ipos)+"_"+save_names_suffix[3];
228212

229213
this->lri.cal_loop3(
230214
{Label::ab_ab::a0b0_a1b1,
@@ -238,10 +222,6 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
238222
dHs_vec,
239223
-1.0);
240224

241-
this->lri.save_load.save("Cs_a_"+save_names_suffix[0], Label::ab::a);
242-
this->lri.save_load.save("dCs_b_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::b);
243-
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
244-
245225
this->post_2D.cal_force(
246226
this->post_2D.saves["Ds_"+save_names_suffix[2]],
247227
this->post_2D.set_tensors_map2(std::move(dHs_vec[0])),
@@ -255,10 +235,6 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
255235
}
256236
this->force[ipos] = this->post_2D.reduce_force(force_ipos);
257237
} // end for(ipos)
258-
this->lri.save_load.save("Ds_a1b1_"+save_names_suffix[2], Label::ab::a1b1);
259-
this->lri.save_load.save("Ds_a1b2_"+save_names_suffix[2], Label::ab::a1b2);
260-
this->lri.save_load.save("Ds_a2b1_"+save_names_suffix[2], Label::ab::a2b1);
261-
this->lri.save_load.save("Ds_a2b2_"+save_names_suffix[2], Label::ab::a2b2);
262238
}
263239

264240

@@ -290,16 +266,16 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
290266

291267
this->stress = Tensor<Tdata>({Npos, Npos});
292268

293-
this->lri.save_load.load("Ds_a1b1_"+save_names_suffix[2], Label::ab::a1b1);
294-
this->lri.save_load.load("Ds_a2b1_"+save_names_suffix[2], Label::ab::a2b1);
269+
this->lri.data_ab_name[Label::ab::a1b1] = "Ds_a1b1_"+save_names_suffix[2];
270+
this->lri.data_ab_name[Label::ab::a2b1] = "Ds_a2b1_"+save_names_suffix[2];
295271
for(std::size_t ipos0=0; ipos0<Npos; ++ipos0)
296272
{
297273
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec(Npos);
298274
this->lri.coefficients.resize(Npos);
299275

300-
this->lri.save_load.load("dCs_a_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::a);
301-
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
302-
this->lri.save_load.load("Cs_b_"+save_names_suffix[0], Label::ab::b);
276+
this->lri.data_ab_name[Label::ab::a ] = "dCs_a_"+std::to_string(ipos0)+"_"+save_names_suffix[3];
277+
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_" +save_names_suffix[1];
278+
this->lri.data_ab_name[Label::ab::b ] = "Cs_b_" +save_names_suffix[0];
303279

304280
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
305281
this->lri.coefficients[ipos1] =
@@ -312,11 +288,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
312288
Label::ab_ab::a0b0_a2b1},
313289
dHs_vec);
314290

315-
this->lri.save_load.save("dCs_a_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::a);
316-
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
317-
318-
this->lri.save_load.load("Cs_a_"+save_names_suffix[0], Label::ab::a);
319-
this->lri.save_load.load("dVs_"+std::to_string(ipos0)+"_"+save_names_suffix[4], Label::ab::a0b0);
291+
this->lri.data_ab_name[Label::ab::a ] = "Cs_a_" +save_names_suffix[0];
292+
this->lri.data_ab_name[Label::ab::a0b0] = "dVs_"+std::to_string(ipos0)+"_"+save_names_suffix[4];
320293

321294
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
322295
this->lri.coefficients[ipos1] =
@@ -329,11 +302,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
329302
Label::ab_ab::a0b0_a2b1},
330303
dHs_vec);
331304

332-
this->lri.save_load.save("dVs_"+std::to_string(ipos0)+"_"+save_names_suffix[4], Label::ab::a0b0);
333-
this->lri.save_load.save("Cs_b_"+save_names_suffix[0], Label::ab::b);
334-
335-
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
336-
this->lri.save_load.load("dCs_b_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::b);
305+
this->lri.data_ab_name[Label::ab::a0b0] = "Vs_" +save_names_suffix[1];
306+
this->lri.data_ab_name[Label::ab::b ] = "dCs_b_"+std::to_string(ipos0)+"_"+save_names_suffix[3];
337307

338308
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
339309
this->lri.coefficients[ipos1] =
@@ -346,17 +316,11 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
346316
Label::ab_ab::a0b0_a2b1},
347317
dHs_vec);
348318

349-
this->lri.save_load.save("Cs_a_"+save_names_suffix[0], Label::ab::a);
350-
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
351-
this->lri.save_load.save("dCs_b_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::b);
352-
353319
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
354320
this->stress(ipos0,ipos1) = post_2D.cal_energy(
355321
this->post_2D.saves["Ds_"+save_names_suffix[2]],
356322
this->post_2D.set_tensors_map2(dHs_vec[ipos1]));
357323
}
358-
this->lri.save_load.save("Ds_a1b1_"+save_names_suffix[2], Label::ab::a1b1);
359-
this->lri.save_load.save("Ds_a2b1_"+save_names_suffix[2], Label::ab::a2b1);
360324
}
361325

362326

include/RI/physics/GW.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ void G0W0<TA,Tcell,Ndim,Tdata>::set_Cs(
3333
const std::map<TA, std::map<TAC, Tensor<Tdata>>> &Cs,
3434
const Tdata_real &threshold_C)
3535
{
36-
this->lri.set_tensors_map2( Cs, Label::ab::a, threshold_C );
37-
this->lri.set_tensors_map2( Cs, Label::ab::b, threshold_C );
36+
this->lri.set_tensors_map2( Cs, Label::ab::a, threshold_C, "Cs_a" );
37+
this->lri.set_tensors_map2( Cs, Label::ab::b, threshold_C, "Cs_b" );
3838
this->flag_finish.C = true;
3939
}
4040

@@ -49,13 +49,13 @@ void G0W0<TA, Tcell, Ndim, Tdata>::cal_Sigc(
4949
assert(this->flag_finish.stru);
5050
assert(this->flag_finish.C);
5151
// setup Green's function
52-
this->lri.set_tensors_map2( gf_tau, Label::ab::a1b1, threshold_G );
53-
this->lri.set_tensors_map2( gf_tau, Label::ab::a1b2, threshold_G );
54-
this->lri.set_tensors_map2( gf_tau, Label::ab::a2b1, threshold_G );
55-
this->lri.set_tensors_map2( gf_tau, Label::ab::a2b2, threshold_G );
52+
this->lri.set_tensors_map2( gf_tau, Label::ab::a1b1, threshold_G, "gf_a1b1" );
53+
this->lri.set_tensors_map2( gf_tau, Label::ab::a1b2, threshold_G, "gf_a1b2" );
54+
this->lri.set_tensors_map2( gf_tau, Label::ab::a2b1, threshold_G, "gf_a2b1" );
55+
this->lri.set_tensors_map2( gf_tau, Label::ab::a2b2, threshold_G, "gf_a2b2" );
5656

5757
// setup screened Coulomb interaction
58-
this->lri.set_tensors_map2( Wc_tau, Label::ab::a0b0, threshold_W );
58+
this->lri.set_tensors_map2( Wc_tau, Label::ab::a0b0, threshold_W, "Wc" );
5959

6060
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> Sigc_vec(1);
6161
this->lri.coefficients = {nullptr};

include/RI/physics/RPA.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ void RPA<TA,Tcell,Ndim,Tdata>::set_Cs(
3030
const std::map<TA, std::map<TAC, Tensor<Tdata>>> &Cs,
3131
const Tdata_real &threshold_C)
3232
{
33-
this->lri.set_tensors_map2( Cs, Label::ab::a, threshold_C );
34-
this->lri.set_tensors_map2( Cs, Label::ab::b, threshold_C );
33+
this->lri.set_tensors_map2( Cs, Label::ab::a, threshold_C, "Cs_a" );
34+
this->lri.set_tensors_map2( Cs, Label::ab::b, threshold_C, "Cs_b" );
3535
this->flag_finish.C = true;
3636
}
3737

@@ -49,14 +49,14 @@ void RPA<TA,Tcell,Ndim,Tdata>::cal_chi0s(
4949

5050
auto set_Gs_a1 = [this, &threshold_G](const std::map<TA, std::map<TAC, Tensor<Tdata>>> &Gs)
5151
{
52-
this->lri.set_tensors_map2( Gs, Label::ab::a1b1, threshold_G );
53-
this->lri.set_tensors_map2( Gs, Label::ab::a1b2, threshold_G );
52+
this->lri.set_tensors_map2( Gs, Label::ab::a1b1, threshold_G, "Gs_a1b1" );
53+
this->lri.set_tensors_map2( Gs, Label::ab::a1b2, threshold_G, "Gs_a1b2" );
5454
};
5555

5656
auto set_Gs_a2 = [this, &threshold_G](const std::map<TA, std::map<TAC, Tensor<Tdata>>> &Gs)
5757
{
58-
this->lri.set_tensors_map2( Gs, Label::ab::a2b1, threshold_G );
59-
this->lri.set_tensors_map2( Gs, Label::ab::a2b2, threshold_G );
58+
this->lri.set_tensors_map2( Gs, Label::ab::a2b1, threshold_G, "Gs_a2b1" );
59+
this->lri.set_tensors_map2( Gs, Label::ab::a2b2, threshold_G, "Gs_a2b2" );
6060
};
6161

6262
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> chi0s_vec(1);

include/RI/ri/CS_Matrix-filter.hpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
namespace RI
1616
{
1717

18-
template<typename TA, typename TC, typename Tdata>
18+
template<typename TA, typename TC, typename Tdata> template<typename T_Data_Wrapper>
1919
typename CS_Matrix<TA,TC,Tdata>::Step CS_Matrix<TA,TC,Tdata>::set_label_A(
2020
const Label::ab_ab &label_in,
2121
const TA &Aa01, const TAC &Aa2, const TAC &Ab01, const TAC &Ab2,
2222
const TC &period,
23-
const std::unordered_map<Label::ab, CS_Matrix<TA,TC,Tdata>::Uplimits> &uplimits) const
23+
const T_Data_Wrapper &data_wrapper) const
2424
{
2525
using namespace Array_Operator;
2626

@@ -44,33 +44,31 @@ typename CS_Matrix<TA,TC,Tdata>::Step CS_Matrix<TA,TC,Tdata>::set_label_A(
4444
default: throw std::invalid_argument("get_Aa_Ab");
4545
}
4646
};
47-
auto get_uplimit_tensor2 = [&get_Aa_Ab](
48-
const std::unordered_map<Label::ab, CS_Matrix<TA,TC,Tdata>::Uplimits> &uplimits,
49-
const Label::ab label_ab) -> Tdata
47+
auto get_uplimit_tensor2 = [&get_Aa_Ab, &data_wrapper](const Label::ab &label_ab) -> const Tdata&
5048
{
5149
const int xa = Label::get_a(label_ab);
5250
const int xb = Label::get_b(label_ab);
5351
const std::pair<TA,TAC> &Aa_Ab = get_Aa_Ab(xa,xb);
5452
const TA &Aa=Aa_Ab.first;
5553
const TAC &Ab=Aa_Ab.second;
56-
return Global_Func::find(uplimits.at(label_ab).square_tensor2, Aa, Ab);
54+
return Global_Func::find( data_wrapper(label_ab).csm_uplimits.square_tensor2, Aa, Ab);
5755
};
5856

5957
Step step;
6058

6159
step.label = label_in;
6260

6361
const int index_a = Label::get_unused_a(step.label);
64-
step.a_square = Global_Func::find(uplimits.at(Label::ab::a).square_tensor3[index_a], Aa01, Aa2);
65-
step.a_norm = Global_Func::find(uplimits.at(Label::ab::a).norm_tensor3 [index_a], Aa01, Aa2);
62+
step.a_square = Global_Func::find( data_wrapper(Label::ab::a).csm_uplimits.square_tensor3[index_a], Aa01, Aa2 );
63+
step.a_norm = Global_Func::find( data_wrapper(Label::ab::a).csm_uplimits.norm_tensor3 [index_a], Aa01, Aa2 );
6664

6765
const int index_b = get_unused_b(step.label);
68-
step.b_square = Global_Func::find(uplimits.at(Label::ab::b).square_tensor3[index_b], Ab01.first, TAC{Ab2.first, (Ab2.second-Ab01.second)%period});
69-
step.b_norm = Global_Func::find(uplimits.at(Label::ab::b).norm_tensor3 [index_b], Ab01.first, TAC{Ab2.first, (Ab2.second-Ab01.second)%period});
66+
step.b_square = Global_Func::find( data_wrapper(Label::ab::b).csm_uplimits.square_tensor3[index_b], Ab01.first, TAC{Ab2.first, (Ab2.second-Ab01.second)%period} );
67+
step.b_norm = Global_Func::find( data_wrapper(Label::ab::b).csm_uplimits.norm_tensor3 [index_b], Ab01.first, TAC{Ab2.first, (Ab2.second-Ab01.second)%period} );
7068

7169
const std::pair<Label::ab, Label::ab> label_split_tmp = CS_Matrix_Tools::split_label(step.label);
72-
step.first_square = get_uplimit_tensor2(uplimits, label_split_tmp.first);
73-
step.second_square = get_uplimit_tensor2(uplimits, label_split_tmp.second);
70+
step.first_square = get_uplimit_tensor2( label_split_tmp.first );
71+
step.second_square = get_uplimit_tensor2( label_split_tmp.second );
7472

7573
return step;
7674
}

include/RI/ri/CS_Matrix.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,12 @@ class CS_Matrix
4646

4747
template<typename T> Uplimits cal_uplimits( const Label::ab &label, const T &Ds);
4848

49+
template<typename T_Data_Wrapper>
4950
Step set_label_A(
5051
const Label::ab_ab &label_in,
5152
const TA &Aa01, const TAC &Aa2, const TAC &Ab01, const TAC &Ab2,
5253
const TC &period,
53-
const std::unordered_map<Label::ab, CS_Matrix<TA,TC,Tdata>::Uplimits> &uplimits) const;
54+
const T_Data_Wrapper &data_wrapper) const;
5455

5556
bool filter_4(const Step &step ) const { return step.a_square * step.first_square * step.second_square * step.b_square < this->threshold.at(step.label); }
5657
bool filter_3(const Step &step, const Tdata &uplimit_norm) const { return uplimit_norm * step.second_square * step.b_square < this->threshold.at(step.label); }

0 commit comments

Comments
 (0)