@@ -136,8 +136,6 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_Hs(
136136 this ->lri .save_load .save (" Ds_" +save_names_suffix[2 ], {Label::ab::a1b1, Label::ab::a1b2, Label::ab::a2b1, Label::ab::a2b2});
137137}
138138
139-
140-
141139template <typename TA, typename Tcell, std::size_t Ndim, typename Tdata>
142140void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
143141 const std::array<std::string,5 > &save_names_suffix) // "Cs","Vs","Ds","dCs","dVs"
@@ -161,34 +159,29 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
161159 this ->lri .save_load .load (" Vs_" +save_names_suffix[1 ], Label::ab::a0b0);
162160 this ->lri .save_load .load (" Cs_" +save_names_suffix[0 ], Label::ab::b);
163161
164- this ->lri .coefficients = {[](const Label::ab_ab &label, const TA &Aa01, const TAC &Aa2, const TAC &Ab01, const TAC &Ab2) -> Tdata
165- {
166- switch (label)
167- {
168- case Label::ab_ab::a0b0_a1b1: case Label::ab_ab::a0b0_a1b2: return -1 ;
169- case Label::ab_ab::a0b0_a2b1: case Label::ab_ab::a0b0_a2b2: return 1 ;
170- default : throw std::invalid_argument (std::string (__FILE__)+" line " +std::to_string (__LINE__));
171- }
172- }};
173-
174- this ->lri .cal (
162+ this ->lri .cal_loop3 (
175163 {Label::ab_ab::a0b0_a1b1,
176- Label::ab_ab::a0b0_a1b2,
177- Label::ab_ab::a0b0_a2b1,
164+ Label::ab_ab::a0b0_a1b2,},
165+ dHs_vec,
166+ -1.0 );
167+
168+ this ->lri .cal_loop3 (
169+ {Label::ab_ab::a0b0_a2b1,
178170 Label::ab_ab::a0b0_a2b2},
179- dHs_vec);
171+ dHs_vec,
172+ 1.0 );
180173
181174 this ->lri .save_load .save (" dCs_" +std::to_string (ipos)+" _" +save_names_suffix[3 ], Label::ab::a);
182175 this ->lri .save_load .save (" Vs_" +save_names_suffix[1 ], Label::ab::a0b0);
183176
184177 this ->lri .save_load .load (" Cs_" +save_names_suffix[0 ], Label::ab::a);
185178 this ->lri .save_load .load (" dVs_" +std::to_string (ipos)+" _" +save_names_suffix[4 ], Label::ab::a0b0);
186179
187- this ->lri .coefficients = {nullptr };
188- this ->lri .cal (
180+ this ->lri .cal_loop3 (
189181 {Label::ab_ab::a0b0_a2b2,
190182 Label::ab_ab::a0b0_a2b1},
191- dHs_vec);
183+ dHs_vec,
184+ 1.0 );
192185
193186 this ->post_2D .cal_force (
194187 this ->post_2D .saves [" Ds_" +save_names_suffix[2 ]],
@@ -205,34 +198,29 @@ void Exx<TA,Tcell,Ndim,Tdata>::cal_force(
205198 {
206199 std::vector<std::map<TA,std::map<TAC,Tensor<Tdata>>>> dHs_vec (1 );
207200
208- this ->lri .coefficients = {nullptr };
209- this ->lri .cal (
201+ this ->lri .cal_loop3 (
210202 {Label::ab_ab::a0b0_a2b2,
211203 Label::ab_ab::a0b0_a1b2},
212- dHs_vec);
204+ dHs_vec,
205+ 1.0 );
213206
214207 this ->lri .save_load .save (" dVs_" +std::to_string (ipos)+" _" +save_names_suffix[4 ], Label::ab::a0b0);
215208 this ->lri .save_load .save (" Cs_" +save_names_suffix[0 ], Label::ab::b);
216209
217210 this ->lri .save_load .load (" Vs_" +save_names_suffix[1 ], Label::ab::a0b0);
218211 this ->lri .save_load .load (" dCs_" +std::to_string (ipos)+" _" +save_names_suffix[3 ], Label::ab::b);
219212
220- this ->lri .coefficients = {[](const Label::ab_ab &label, const TA &Aa01, const TAC &Aa2, const TAC &Ab01, const TAC &Ab2) -> Tdata
221- {
222- switch (label)
223- {
224- case Label::ab_ab::a0b0_a1b1: case Label::ab_ab::a0b0_a2b1: return 1 ;
225- case Label::ab_ab::a0b0_a1b2: case Label::ab_ab::a0b0_a2b2: return -1 ;
226- default : throw std::invalid_argument (std::string (__FILE__)+" line " +std::to_string (__LINE__));
227- }
228- }};
229-
230- this ->lri .cal (
213+ this ->lri .cal_loop3 (
231214 {Label::ab_ab::a0b0_a1b1,
232- Label::ab_ab::a0b0_a1b2,
233- Label::ab_ab::a0b0_a2b1,
215+ Label::ab_ab::a0b0_a2b1},
216+ dHs_vec,
217+ 1.0 );
218+
219+ this ->lri .cal_loop3 (
220+ {Label::ab_ab::a0b0_a1b2,
234221 Label::ab_ab::a0b0_a2b2},
235- dHs_vec);
222+ dHs_vec,
223+ -1.0 );
236224
237225 this ->lri .save_load .save (" Cs_" +save_names_suffix[0 ], Label::ab::a);
238226 this ->lri .save_load .save (" dCs_" +std::to_string (ipos)+" _" +save_names_suffix[3 ], Label::ab::b);
0 commit comments