Skip to content

Commit 6c42b32

Browse files
committed
1. update class Save_Load interface
1 parent e189eda commit 6c42b32

File tree

3 files changed

+69
-82
lines changed

3 files changed

+69
-82
lines changed

include/RI/physics/Exx.hpp

Lines changed: 48 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_Cs(
4040
{
4141
this->lri.set_tensors_map2( Cs, Label::ab::a, threshold_C );
4242
this->lri.set_tensors_map2( Cs, Label::ab::b, threshold_C );
43-
this->lri.save_load.save("Cs_"+save_name_suffix, {Label::ab::a, Label::ab::b});
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);
4445
this->flag_finish.C = true;
4546
}
4647

@@ -65,7 +66,10 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_Ds(
6566
this->lri.set_tensors_map2( Ds, Label::ab::a1b2, threshold_D );
6667
this->lri.set_tensors_map2( Ds, Label::ab::a2b1, threshold_D );
6768
this->lri.set_tensors_map2( Ds, Label::ab::a2b2, threshold_D );
68-
this->lri.save_load.save("Ds_"+save_name_suffix, {Label::ab::a1b1, Label::ab::a1b2, Label::ab::a2b1, Label::ab::a2b2});
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);
6973
this->flag_finish.D = true;
7074

7175
//if()
@@ -82,7 +86,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::set_dCs(
8286
{
8387
this->lri.set_tensors_map2( dCs[ipos], Label::ab::a, threshold_dC );
8488
this->lri.set_tensors_map2( dCs[ipos], Label::ab::b, threshold_dC );
85-
this->lri.save_load.save("dCs_"+std::to_string(ipos)+"_"+save_name_suffix, {Label::ab::a, Label::ab::b});
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);
8691
}
8792
this->flag_finish.dC = true;
8893
}
@@ -112,9 +117,13 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_Hs(
112117
assert(this->flag_finish.V);
113118
assert(this->flag_finish.D);
114119

115-
this->lri.save_load.load("Cs_"+save_names_suffix[0], {Label::ab::a, Label::ab::b});
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);
116122
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
117-
this->lri.save_load.load("Ds_"+save_names_suffix[2], {Label::ab::a1b1, Label::ab::a1b2, Label::ab::a2b1, Label::ab::a2b2});
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);
118127

119128
std::vector<std::map<TA, std::map<TAC, Tensor<Tdata>>>> Hs_vec(1);
120129
this->lri.coefficients = {nullptr};
@@ -131,9 +140,13 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_Hs(
131140
this->post_2D.saves["Ds_"+save_names_suffix[2]],
132141
this->post_2D.set_tensors_map2(this->Hs) );
133142

134-
this->lri.save_load.save("Cs_"+save_names_suffix[0], {Label::ab::a, Label::ab::b});
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);
135145
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
136-
this->lri.save_load.save("Ds_"+save_names_suffix[2], {Label::ab::a1b1, Label::ab::a1b2, Label::ab::a2b1, Label::ab::a2b2});
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);
137150
}
138151

139152
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
@@ -147,17 +160,20 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
147160
assert(this->flag_finish.dC);
148161
assert(this->flag_finish.dV);
149162

150-
this->lri.save_load.load("Ds_"+save_names_suffix[2], {Label::ab::a1b1, Label::ab::a1b2, Label::ab::a2b1, Label::ab::a2b2});
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);
151167
for(std::size_t ipos=0; ipos<Npos; ++ipos)
152168
{
153169
std::map<TA,Tdata> force_ipos;
154170

155171
{
156172
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec(1);
157173

158-
this->lri.save_load.load("dCs_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::a);
174+
this->lri.save_load.load("dCs_a_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::a);
159175
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
160-
this->lri.save_load.load("Cs_"+save_names_suffix[0], Label::ab::b);
176+
this->lri.save_load.load("Cs_b_"+save_names_suffix[0], Label::ab::b);
161177

162178
this->lri.cal_loop3(
163179
{Label::ab_ab::a0b0_a1b1,
@@ -171,10 +187,10 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
171187
dHs_vec,
172188
1.0);
173189

174-
this->lri.save_load.save("dCs_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::a);
190+
this->lri.save_load.save("dCs_a_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::a);
175191
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
176192

177-
this->lri.save_load.load("Cs_"+save_names_suffix[0], Label::ab::a);
193+
this->lri.save_load.load("Cs_a_"+save_names_suffix[0], Label::ab::a);
178194
this->lri.save_load.load("dVs_"+std::to_string(ipos)+"_"+save_names_suffix[4], Label::ab::a0b0);
179195

180196
this->lri.cal_loop3(
@@ -205,10 +221,10 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
205221
1.0);
206222

207223
this->lri.save_load.save("dVs_"+std::to_string(ipos)+"_"+save_names_suffix[4], Label::ab::a0b0);
208-
this->lri.save_load.save("Cs_"+save_names_suffix[0], Label::ab::b);
224+
this->lri.save_load.save("Cs_b_"+save_names_suffix[0], Label::ab::b);
209225

210226
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
211-
this->lri.save_load.load("dCs_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::b);
227+
this->lri.save_load.load("dCs_b_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::b);
212228

213229
this->lri.cal_loop3(
214230
{Label::ab_ab::a0b0_a1b1,
@@ -222,8 +238,8 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
222238
dHs_vec,
223239
-1.0);
224240

225-
this->lri.save_load.save("Cs_"+save_names_suffix[0], Label::ab::a);
226-
this->lri.save_load.save("dCs_"+std::to_string(ipos)+"_"+save_names_suffix[3], Label::ab::b);
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);
227243
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
228244

229245
this->post_2D.cal_force(
@@ -239,7 +255,10 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
239255
}
240256
this->force[ipos] = this->post_2D.reduce_force(force_ipos);
241257
} // end for(ipos)
242-
this->lri.save_load.save("Ds_"+save_names_suffix[2], {Label::ab::a1b1, Label::ab::a1b2, Label::ab::a2b1, Label::ab::a2b2});
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);
243262
}
244263

245264

@@ -271,15 +290,16 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
271290

272291
this->stress = Tensor<Tdata>({Npos, Npos});
273292

274-
this->lri.save_load.load("Ds_"+save_names_suffix[2], {Label::ab::a1b1, Label::ab::a2b1});
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);
275295
for(std::size_t ipos0=0; ipos0<Npos; ++ipos0)
276296
{
277297
std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec(Npos);
278298
this->lri.coefficients.resize(Npos);
279299

280-
this->lri.save_load.load("dCs_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::a);
300+
this->lri.save_load.load("dCs_a_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::a);
281301
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
282-
this->lri.save_load.load("Cs_"+save_names_suffix[0], Label::ab::b);
302+
this->lri.save_load.load("Cs_b_"+save_names_suffix[0], Label::ab::b);
283303

284304
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
285305
this->lri.coefficients[ipos1] =
@@ -292,10 +312,10 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
292312
Label::ab_ab::a0b0_a2b1},
293313
dHs_vec);
294314

295-
this->lri.save_load.save("dCs_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::a);
315+
this->lri.save_load.save("dCs_a_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::a);
296316
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
297317

298-
this->lri.save_load.load("Cs_"+save_names_suffix[0], Label::ab::a);
318+
this->lri.save_load.load("Cs_a_"+save_names_suffix[0], Label::ab::a);
299319
this->lri.save_load.load("dVs_"+std::to_string(ipos0)+"_"+save_names_suffix[4], Label::ab::a0b0);
300320

301321
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
@@ -310,10 +330,10 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
310330
dHs_vec);
311331

312332
this->lri.save_load.save("dVs_"+std::to_string(ipos0)+"_"+save_names_suffix[4], Label::ab::a0b0);
313-
this->lri.save_load.save("Cs_"+save_names_suffix[0], Label::ab::b);
333+
this->lri.save_load.save("Cs_b_"+save_names_suffix[0], Label::ab::b);
314334

315335
this->lri.save_load.load("Vs_"+save_names_suffix[1], Label::ab::a0b0);
316-
this->lri.save_load.load("dCs_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::b);
336+
this->lri.save_load.load("dCs_b_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::b);
317337

318338
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
319339
this->lri.coefficients[ipos1] =
@@ -326,16 +346,17 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_stress(
326346
Label::ab_ab::a0b0_a2b1},
327347
dHs_vec);
328348

329-
this->lri.save_load.save("Cs_"+save_names_suffix[0], Label::ab::a);
349+
this->lri.save_load.save("Cs_a_"+save_names_suffix[0], Label::ab::a);
330350
this->lri.save_load.save("Vs_"+save_names_suffix[1], Label::ab::a0b0);
331-
this->lri.save_load.save("dCs_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::b);
351+
this->lri.save_load.save("dCs_b_"+std::to_string(ipos0)+"_"+save_names_suffix[3], Label::ab::b);
332352

333353
for(std::size_t ipos1=0; ipos1<Npos; ++ipos1)
334354
this->stress(ipos0,ipos1) = post_2D.cal_energy(
335355
this->post_2D.saves["Ds_"+save_names_suffix[2]],
336356
this->post_2D.set_tensors_map2(dHs_vec[ipos1]));
337357
}
338-
this->lri.save_load.save("Ds_"+save_names_suffix[2], {Label::ab::a1b1, Label::ab::a2b1});
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);
339360
}
340361

341362

include/RI/ri/Save_Load.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,22 @@ class Save_Load
3131
Save_Load(LRI<TA,Tcell,Ndim,Tdata> &lri_in): lri(lri_in){}
3232

3333
void save(const std::string &name, const Label::ab &label);
34-
void save(const std::string &name, const std::vector<Label::ab> &labels);
35-
void save(const std::string &name);
34+
// void save(const std::string &name, const std::vector<Label::ab> &labels);
35+
// void save(const std::string &name);
3636
void load(const std::string &name, const Label::ab &label);
37-
void load(const std::string &name, const std::vector<Label::ab> &labels);
38-
void load(const std::string &name);
37+
// void load(const std::string &name, const std::vector<Label::ab> &labels);
38+
// void load(const std::string &name);
39+
3940

4041
public: // private:
4142
struct Info
4243
{
43-
std::unordered_map<Label::ab, std::map<TA, std::map<TAC, Tensor<Tdata>>>> Ds_ab;
44-
std::unordered_map<Label::ab, std::vector<std::set<TA>>> index_Ds_ab;
45-
std::unordered_map<Label::ab, std::array< std::map<TA,std::map<TAC,Tdata_real>> ,3>> csm_uplimits_square_tensor3;
46-
std::unordered_map<Label::ab, std::array< std::map<TA,std::map<TAC,Tdata_real>> ,3>> csm_uplimits_norm_tensor3;
47-
std::unordered_map<Label::ab, std::map<TA,std::map<TAC,Tdata_real>>> csm_uplimits_square_tensor2;
48-
//std::unordered_map<Label::ab, std::map<TA,std::map<TAC,Tdata_real>>> csm_uplimits_norm_tensor2;
44+
std::map<TA, std::map<TAC, Tensor<Tdata>>> Ds_ab;
45+
std::vector<std::set<TA>> index_Ds_ab;
46+
std::array< std::map<TA,std::map<TAC,Tdata_real>> ,3> csm_uplimits_square_tensor3;
47+
std::array< std::map<TA,std::map<TAC,Tdata_real>> ,3> csm_uplimits_norm_tensor3;
48+
std::map<TA,std::map<TAC,Tdata_real>> csm_uplimits_square_tensor2;
49+
//std::map<TA,std::map<TAC,Tdata_real>> csm_uplimits_norm_tensor2;
4950
};
5051
std::map<std::string,Info> saves;
5152

include/RI/ri/Save_Load.hpp

Lines changed: 10 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,11 @@ namespace RI
1313
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
1414
void Save_Load<TA,Tcell,Ndim,Tdata>::save(const std::string &name, const Label::ab &label)
1515
{
16-
this->saves[name].Ds_ab.reserve(Label::array_ab.size());
17-
this->saves[name].index_Ds_ab.reserve(Label::array_ab.size());
18-
this->saves[name].csm_uplimits_square_tensor3.reserve(Label::array_ab.size());
19-
this->saves[name].csm_uplimits_norm_tensor3 .reserve(Label::array_ab.size());
20-
this->saves[name].csm_uplimits_square_tensor2.reserve(Label::array_ab.size());
21-
22-
this->saves[name].Ds_ab[label] = std::move(this->lri.Ds_ab[label]);
23-
this->saves[name].index_Ds_ab[label] = std::move(this->lri.index_Ds_ab[label]);
24-
this->saves[name].csm_uplimits_square_tensor3[label] = std::move(this->lri.csm.uplimits_square_tensor3[label]);
25-
this->saves[name].csm_uplimits_norm_tensor3 [label] = std::move(this->lri.csm.uplimits_norm_tensor3 [label]);
26-
this->saves[name].csm_uplimits_square_tensor2[label] = std::move(this->lri.csm.uplimits_square_tensor2[label]);
27-
}
28-
29-
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
30-
void Save_Load<TA,Tcell,Ndim,Tdata>::save(const std::string &name)
31-
{
32-
for(const Label::ab &label : Label::array_ab)
33-
this->save(name, label);
34-
}
35-
36-
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
37-
void Save_Load<TA,Tcell,Ndim,Tdata>::save(const std::string &name, const std::vector<Label::ab> &labels)
38-
{
39-
for(const Label::ab &label : labels)
40-
this->save(name, label);
16+
this->saves[name].Ds_ab = std::move(this->lri.Ds_ab[label]);
17+
this->saves[name].index_Ds_ab = std::move(this->lri.index_Ds_ab[label]);
18+
this->saves[name].csm_uplimits_square_tensor3 = std::move(this->lri.csm.uplimits_square_tensor3[label]);
19+
this->saves[name].csm_uplimits_norm_tensor3 = std::move(this->lri.csm.uplimits_norm_tensor3 [label]);
20+
this->saves[name].csm_uplimits_square_tensor2 = std::move(this->lri.csm.uplimits_square_tensor2[label]);
4121
}
4222

4323
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
@@ -51,11 +31,11 @@ void Save_Load<TA,Tcell,Ndim,Tdata>::load(const std::string &name, const Label::
5131
assert(this->lri.csm.uplimits_norm_tensor3[label][i].empty());
5232
assert(this->lri.csm.uplimits_square_tensor2[label].empty());
5333

54-
this->lri.Ds_ab[label] = std::move(this->saves.at(name).Ds_ab[label]);
55-
this->lri.index_Ds_ab[label] = std::move(this->saves.at(name).index_Ds_ab[label]);
56-
this->lri.csm.uplimits_square_tensor3[label] = std::move(this->saves.at(name).csm_uplimits_square_tensor3[label]);
57-
this->lri.csm.uplimits_norm_tensor3 [label] = std::move(this->saves.at(name).csm_uplimits_norm_tensor3 [label]);
58-
this->lri.csm.uplimits_square_tensor2[label] = std::move(this->saves.at(name).csm_uplimits_square_tensor2[label]);
34+
this->lri.Ds_ab[label] = std::move(this->saves.at(name).Ds_ab);
35+
this->lri.index_Ds_ab[label] = std::move(this->saves.at(name).index_Ds_ab);
36+
this->lri.csm.uplimits_square_tensor3[label] = std::move(this->saves.at(name).csm_uplimits_square_tensor3);
37+
this->lri.csm.uplimits_norm_tensor3 [label] = std::move(this->saves.at(name).csm_uplimits_norm_tensor3);
38+
this->lri.csm.uplimits_square_tensor2[label] = std::move(this->saves.at(name).csm_uplimits_square_tensor2);
5939

6040
// auto save_name_empty = [this]() -> bool
6141
// {
@@ -72,21 +52,6 @@ void Save_Load<TA,Tcell,Ndim,Tdata>::load(const std::string &name, const Label::
7252
// this->saves.erase(name);
7353
}
7454

75-
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
76-
void Save_Load<TA,Tcell,Ndim,Tdata>::load(const std::string &name)
77-
{
78-
for(const Label::ab &label : Label::array_ab)
79-
this->load(name, label);
80-
this->saves.erase(name);
81-
}
82-
83-
template<typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
84-
void Save_Load<TA,Tcell,Ndim,Tdata>::load(const std::string &name, const std::vector<Label::ab> &labels)
85-
{
86-
for(const Label::ab &label : labels)
87-
this->load(name, label);
88-
}
89-
9055
/*
9156
void save_copy(const std::string &name, const Label::ab &label)
9257
{

0 commit comments

Comments
 (0)