@@ -219,7 +219,7 @@ void Exx_LRI<Tdata>::cal_exx_elec(const std::vector<std::map<TA, std::map<TAC, R
219219 // reduce but not repeat
220220 auto Hs_a2D = this ->exx_lri .post_2D .set_tensors_map2 (this ->exx_lri .Hs );
221221 // rotate locally without repeat
222- Hs_a2D = p_symrot->restore_HR (GlobalC:: ucell.symm , GlobalC:: ucell.atoms , GlobalC:: ucell.st , ' H' , Hs_a2D);
222+ Hs_a2D = p_symrot->restore_HR (ucell.symm , ucell.atoms , ucell.st , ' H' , Hs_a2D);
223223 // cal energy using full Hs without repeat
224224 this ->exx_lri .energy = this ->exx_lri .post_2D .cal_energy (
225225 this ->exx_lri .post_2D .saves [" Ds_" + suffix],
@@ -274,20 +274,20 @@ post_process_old
274274*/
275275
276276template <typename Tdata>
277- void Exx_LRI<Tdata>::cal_exx_force()
277+ void Exx_LRI<Tdata>::cal_exx_force(const int & nat )
278278{
279279 ModuleBase::TITLE (" Exx_LRI" ," cal_exx_force" );
280280 ModuleBase::timer::tick (" Exx_LRI" , " cal_exx_force" );
281281
282- this ->force_exx .create (GlobalC::ucell. nat , Ndim);
282+ this ->force_exx .create (nat, Ndim);
283283 for (int is=0 ; is<PARAM.inp .nspin ; ++is)
284284 {
285285 this ->exx_lri .cal_force ({" " ," " ,std::to_string (is)," " ," " });
286286 for (std::size_t idim=0 ; idim<Ndim; ++idim) {
287287 for (const auto &force_item : this ->exx_lri .force [idim]) {
288288 this ->force_exx (force_item.first , idim) += std::real (force_item.second );
289- }
290- }
289+ }
290+ }
291291 }
292292
293293 const double SPIN_multiple = std::map<int ,double >{{1 ,2 }, {2 ,1 }, {4 ,1 }}.at (PARAM.inp .nspin ); // why?
@@ -298,7 +298,7 @@ void Exx_LRI<Tdata>::cal_exx_force()
298298
299299
300300template <typename Tdata>
301- void Exx_LRI<Tdata>::cal_exx_stress()
301+ void Exx_LRI<Tdata>::cal_exx_stress(const double & omega, const double & lat0 )
302302{
303303 ModuleBase::TITLE (" Exx_LRI" ," cal_exx_stress" );
304304 ModuleBase::timer::tick (" Exx_LRI" , " cal_exx_stress" );
@@ -310,12 +310,12 @@ void Exx_LRI<Tdata>::cal_exx_stress()
310310 for (std::size_t idim0=0 ; idim0<Ndim; ++idim0) {
311311 for (std::size_t idim1=0 ; idim1<Ndim; ++idim1) {
312312 this ->stress_exx (idim0,idim1) += std::real (this ->exx_lri .stress (idim0,idim1));
313- }
314- }
313+ }
314+ }
315315 }
316316
317317 const double SPIN_multiple = std::map<int ,double >{{1 ,2 }, {2 ,1 }, {4 ,1 }}.at (PARAM.inp .nspin ); // why?
318- const double frac = 2 * SPIN_multiple / GlobalC::ucell. omega * GlobalC::ucell. lat0 ; // why?
318+ const double frac = 2 * SPIN_multiple / omega * lat0; // why?
319319 this ->stress_exx *= frac;
320320
321321 ModuleBase::timer::tick (" Exx_LRI" , " cal_exx_stress" );
0 commit comments