@@ -245,14 +245,16 @@ LRI_CV_Tools::change_order(std::map<TkeyA,std::map<TkeyB,std::array<Tvalue,N>>>
245245
246246template <typename Tcell>
247247std::array<Tcell,3 >
248- LRI_CV_Tools::cal_latvec_range (const double &rcut_times, const std::vector<double >& orb_cutoff)
248+ LRI_CV_Tools::cal_latvec_range (const double &rcut_times,
249+ const UnitCell &ucell,
250+ const std::vector<double >& orb_cutoff)
249251{
250252 double Rcut_max = 0 ;
251- for (int T=0 ; T<GlobalC:: ucell.ntype ; ++T)
253+ for (int T=0 ; T<ucell.ntype ; ++T)
252254 Rcut_max = std::max (Rcut_max, orb_cutoff[T]);
253255 const ModuleBase::Vector3<double > proj = ModuleBase::Mathzone::latvec_projection (
254- std::array<ModuleBase::Vector3<double >,3 >{GlobalC:: ucell.a1 , GlobalC:: ucell.a2 , GlobalC:: ucell.a3 });
255- const ModuleBase::Vector3<double > latvec_times = Rcut_max * rcut_times / (proj * GlobalC:: ucell.lat0 );
256+ std::array<ModuleBase::Vector3<double >,3 >{ucell.a1 , ucell.a2 , ucell.a3 });
257+ const ModuleBase::Vector3<double > latvec_times = Rcut_max * rcut_times / (proj * ucell.lat0 );
256258 const ModuleBase::Vector3<Tcell> latvec_times_ceil = {static_cast <Tcell>(std::ceil (latvec_times.x )),
257259 static_cast <Tcell>(std::ceil (latvec_times.y )),
258260 static_cast <Tcell>(std::ceil (latvec_times.z ))};
@@ -263,23 +265,24 @@ LRI_CV_Tools::cal_latvec_range(const double &rcut_times, const std::vector<doubl
263265template <typename TA, typename Tcell, typename Tdata>
264266std::map<int ,std::map<int ,std::map<Abfs::Vector3_Order<double >,RI::Tensor<Tdata>>>>
265267LRI_CV_Tools::get_CVws (
268+ const UnitCell &ucell,
266269 const std::map<TA,std::map<std::pair<TA,std::array<Tcell,3 >>,RI::Tensor<Tdata>>> &CVs)
267270{
268271 std::map<int ,std::map<int ,std::map<Abfs::Vector3_Order<double >,RI::Tensor<Tdata>>>> CVws;
269272 for (const auto &CVs_A : CVs)
270273 {
271274 const TA iat0 = CVs_A.first ;
272- const int it0 = GlobalC:: ucell.iat2it [iat0];
273- const int ia0 = GlobalC:: ucell.iat2ia [iat0];
274- const ModuleBase::Vector3<double > tau0 = GlobalC:: ucell.atoms [it0].tau [ia0];
275+ const int it0 = ucell.iat2it [iat0];
276+ const int ia0 = ucell.iat2ia [iat0];
277+ const ModuleBase::Vector3<double > tau0 = ucell.atoms [it0].tau [ia0];
275278 for (const auto &CVs_B : CVs_A.second )
276279 {
277280 const TA iat1 = CVs_B.first .first ;
278- const int it1 = GlobalC:: ucell.iat2it [iat1];
279- const int ia1 = GlobalC:: ucell.iat2ia [iat1];
281+ const int it1 = ucell.iat2it [iat1];
282+ const int ia1 = ucell.iat2ia [iat1];
280283 const std::array<int ,3 > &cell1 = CVs_B.first .second ;
281- const ModuleBase::Vector3<double > tau1 = GlobalC:: ucell.atoms [it1].tau [ia1];
282- const Abfs::Vector3_Order<double > R_delta = -tau0+tau1+(RI_Util::array3_to_Vector3 (cell1)*GlobalC:: ucell.latvec );
284+ const ModuleBase::Vector3<double > tau1 = ucell.atoms [it1].tau [ia1];
285+ const Abfs::Vector3_Order<double > R_delta = -tau0+tau1+(RI_Util::array3_to_Vector3 (cell1)*ucell.latvec );
283286 CVws[it0][it1][R_delta] = CVs_B.second ;
284287 }
285288 }
@@ -289,6 +292,7 @@ LRI_CV_Tools::get_CVws(
289292template <typename TA, typename Tcell, typename Tdata>
290293std::map<int ,std::map<int ,std::map<Abfs::Vector3_Order<double >,std::array<RI::Tensor<Tdata>,3 >>>>
291294LRI_CV_Tools::get_dCVws (
295+ const UnitCell &ucell,
292296 const std::array<std::map<TA,std::map<std::pair<TA,std::array<Tcell,3 >>,RI::Tensor<Tdata>>>,3 > &dCVs)
293297{
294298 std::map<int ,std::map<int ,std::map<Abfs::Vector3_Order<double >,std::array<RI::Tensor<Tdata>,3 >>>> dCVws;
@@ -297,17 +301,17 @@ LRI_CV_Tools::get_dCVws(
297301 for (const auto &dCVs_A : dCVs[ix])
298302 {
299303 const TA iat0 = dCVs_A.first ;
300- const int it0 = GlobalC:: ucell.iat2it [iat0];
301- const int ia0 = GlobalC:: ucell.iat2ia [iat0];
302- const ModuleBase::Vector3<double > tau0 = GlobalC:: ucell.atoms [it0].tau [ia0];
304+ const int it0 = ucell.iat2it [iat0];
305+ const int ia0 = ucell.iat2ia [iat0];
306+ const ModuleBase::Vector3<double > tau0 = ucell.atoms [it0].tau [ia0];
303307 for (const auto &dCVs_B : dCVs_A.second )
304308 {
305309 const TA iat1 = dCVs_B.first .first ;
306- const int it1 = GlobalC:: ucell.iat2it [iat1];
307- const int ia1 = GlobalC:: ucell.iat2ia [iat1];
310+ const int it1 = ucell.iat2it [iat1];
311+ const int ia1 = ucell.iat2ia [iat1];
308312 const std::array<int ,3 > &cell1 = dCVs_B.first .second ;
309- const ModuleBase::Vector3<double > tau1 = GlobalC:: ucell.atoms [it1].tau [ia1];
310- const Abfs::Vector3_Order<double > R_delta = -tau0+tau1+(RI_Util::array3_to_Vector3 (cell1)*GlobalC:: ucell.latvec );
313+ const ModuleBase::Vector3<double > tau1 = ucell.atoms [it1].tau [ia1];
314+ const Abfs::Vector3_Order<double > R_delta = -tau0+tau1+(RI_Util::array3_to_Vector3 (cell1)*ucell.latvec );
311315 dCVws[it0][it1][R_delta][ix] = dCVs_B.second ;
312316 }
313317 }
@@ -320,6 +324,7 @@ LRI_CV_Tools::get_dCVws(
320324template <typename TA, typename TC, typename Tdata>
321325std::array<std::array<std::map<TA,std::map<std::pair<TA,TC>,RI::Tensor<Tdata>>>,3 >,3 >
322326LRI_CV_Tools::cal_dMRs (
327+ const UnitCell &ucell,
323328 const std::array<std::map<TA,std::map<std::pair<TA,TC>,RI::Tensor<Tdata>>>,3 > &dMs)
324329{
325330 auto get_R_delta = [&](const TA &iat0, const std::pair<TA,TC> &A1) -> std::array<Tdata,3 >
0 commit comments