@@ -8,14 +8,14 @@ void LOOP_ions::output_HS_R(void)
88{
99 ModuleBase::TITLE (" LOOP_ions" ," output_HS_R" );
1010 ModuleBase::timer::tick (" LOOP_ions" ," output_HS_R" );
11-
12- // add by jingan for out r_R matrix 2019.8.14
13- if (INPUT.out_r_matrix )
14- {
15- cal_r_overlap_R r_matrix;
16- r_matrix.init ();
17- r_matrix.out_r_overlap_R (GlobalV::NSPIN);
18- }
11+
12+ // add by jingan for out r_R matrix 2019.8.14
13+ if (INPUT.out_r_matrix )
14+ {
15+ cal_r_overlap_R r_matrix;
16+ r_matrix.init ();
17+ r_matrix.out_r_overlap_R (GlobalV::NSPIN);
18+ }
1919
2020 // Parameters for HR and SR output
2121 double sparse_threshold = 1e-10 ;
@@ -28,10 +28,8 @@ void LOOP_ions::output_HS_R(void)
2828 // GlobalC::UHM.GK.distribute_pvpR_tr();
2929 // HS_Matrix::save_HSR_tr(0);
3030
31- // jingan add 2021-6-4
31+ // jingan add 2021-6-4, modify 2021-12-2
3232 GlobalC::UHM.calculate_HSR_sparse (0 , sparse_threshold);
33- HS_Matrix::save_HSR_sparse (0 , sparse_threshold, binary);
34- GlobalC::UHM.destroy_all_HSR_sparse ();
3533 }
3634 // /*
3735 else if (GlobalV::NSPIN==2 )
@@ -46,13 +44,13 @@ void LOOP_ions::output_HS_R(void)
4644 // {
4745 // GlobalC::pot.vr_eff1[ir] = GlobalC::pot.vr_eff( GlobalV::CURRENT_SPIN, ir);
4846 // }
49-
47+
5048 // if(!GlobalV::GAMMA_ONLY_LOCAL)
5149 // {
5250 // if(GlobalV::VL_IN_H)
5351 // {
54- // //GlobalC::UHM.GK.cal_vlocal_k(GlobalC::pot.vrs1,GridT);
55- // GlobalC::UHM.GK.cal_vlocal_k(GlobalC::pot.vr_eff1, GlobalC::GridT, GlobalV::CURRENT_SPIN);
52+ // //GlobalC::UHM.GK.cal_vlocal_k(GlobalC::pot.vrs1,GridT);
53+ // GlobalC::UHM.GK.cal_vlocal_k(GlobalC::pot.vr_eff1, GlobalC::GridT, GlobalV::CURRENT_SPIN);
5654 // }
5755 // }
5856 // GlobalC::UHM.GK.cal_vlocal_R(GlobalV::CURRENT_SPIN);
@@ -75,22 +73,27 @@ void LOOP_ions::output_HS_R(void)
7573 {
7674 GlobalC::pot.vr_eff1 [ir] = GlobalC::pot.vr_eff ( GlobalV::CURRENT_SPIN, ir);
7775 }
78-
76+
7977 if (!GlobalV::GAMMA_ONLY_LOCAL)
8078 {
8179 if (GlobalV::VL_IN_H)
8280 {
83- // GlobalC::UHM.GK.cal_vlocal_k(GlobalC::pot.vrs1,GridT);
84- GlobalC::UHM.GK .cal_vlocal_k (GlobalC::pot.vr_eff1 , GlobalC::GridT, GlobalV::CURRENT_SPIN);
81+ // GlobalC::UHM.GK.cal_vlocal_k(GlobalC::pot.vrs1,GridT);
82+ GlobalC::UHM.GK .cal_vlocal_k (GlobalC::pot.vr_eff1 , GlobalC::GridT, GlobalV::CURRENT_SPIN);
8583 }
8684 }
85+
8786 GlobalC::UHM.calculate_HSR_sparse (GlobalV::CURRENT_SPIN, sparse_threshold);
88- HS_Matrix::save_HSR_sparse (GlobalV::CURRENT_SPIN, sparse_threshold, binary);
89- GlobalC::UHM.destroy_all_HSR_sparse ();
9087 }
9188 }
9289 }
9390
91+ std::string SR_filename = " data-SR-sparse_SPIN0.csr" ;
92+ std::string HR_filename_up = " data-HR-sparse_SPIN0.csr" ;
93+ std::string HR_filename_down = " data-HR-sparse_SPIN1.csr" ;
94+ HS_Matrix::save_HSR_sparse (sparse_threshold, binary, SR_filename, HR_filename_up, HR_filename_down);
95+ GlobalC::UHM.destroy_all_HSR_sparse ();
96+
9497 if (!GlobalV::GAMMA_ONLY_LOCAL) // LiuXh 20181011
9598 {
9699 GlobalC::UHM.GK .destroy_pvpR ();
0 commit comments