Skip to content

Commit 603587f

Browse files
committed
Modify the solution of the HR, SR sparse matrix output
1 parent c4701ac commit 603587f

File tree

9 files changed

+3457
-3284
lines changed

9 files changed

+3457
-3284
lines changed

source/src_io/write_HS.cpp

Lines changed: 220 additions & 148 deletions
Large diffs are not rendered by default.

source/src_io/write_HS.h

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,32 @@
66
// mohan add this file 2010-09-10
77
namespace HS_Matrix
88
{
9-
void saving_HS(const double *Hloc, const double* Sloc, bool bit, const int &out_hs);
9+
void saving_HS(const double *Hloc, const double* Sloc, bool bit, const int &out_hs);
1010

11-
void save_HS(const double *H, const double *S, bool bit);
11+
void save_HS(const double *H, const double *S, bool bit);
1212

13-
void save_HS_complex(const std::complex<double> *H, const std::complex<double> *S, bool bit);
13+
void save_HS_complex(const std::complex<double> *H, const std::complex<double> *S, bool bit);
1414

15-
void save_HSR_tr(const int current_spin); //LiuXh add 2019-07-15
15+
void save_HSR_tr(const int current_spin); //LiuXh add 2019-07-15
1616

17-
// jingan add 2021-6-4
18-
void save_HSR_sparse(const int &current_spin, const double &sparse_threshold, const bool &binary);
19-
void output_single_R(std::ofstream &ofs, const std::map<size_t, std::map<size_t, double>> &XR, const double &sparse_threshold, const bool &binary);
20-
void output_soc_single_R(std::ofstream &ofs, const std::map<size_t, std::map<size_t, std::complex<double>>> &XR, const double &sparse_threshold, const bool &binary);
17+
// jingan add 2021-6-4, modify 2021-12-2
18+
void save_HSR_sparse(
19+
const double &sparse_threshold,
20+
const bool &binary,
21+
const std::string &SR_filename,
22+
const std::string &HR_filename_up,
23+
const std::string &HR_filename_down
24+
);
25+
void output_single_R(std::ofstream &ofs, const std::map<size_t, std::map<size_t, double>> &XR, const double &sparse_threshold, const bool &binary);
26+
void output_soc_single_R(std::ofstream &ofs, const std::map<size_t, std::map<size_t, std::complex<double>>> &XR, const double &sparse_threshold, const bool &binary);
2127

2228
// mohan comment out 2021-02-10
23-
// void save_HS_ccf(const int &iter, const int &Hnnz, const int *colptr_H, const int *rowind_H,
24-
// const double *nzval_H, const double *nzval_S, bool bit);
29+
// void save_HS_ccf(const int &iter, const int &Hnnz, const int *colptr_H, const int *rowind_H,
30+
// const double *nzval_H, const double *nzval_S, bool bit);
2531

26-
void saving_HS_complex(std::complex<double> *Hloc, std::complex<double>* Sloc, bool bit, const int &out_hs); //LiuXh, 2017-03-21
32+
void saving_HS_complex(std::complex<double> *Hloc, std::complex<double>* Sloc, bool bit, const int &out_hs); //LiuXh, 2017-03-21
2733

28-
void save_HS_complex(std::complex<double> *H, std::complex<double> *S, bool bit); //LiuXh, 2017-03-21
34+
void save_HS_complex(std::complex<double> *H, std::complex<double> *S, bool bit); //LiuXh, 2017-03-21
2935
}
3036

3137
#endif

source/src_io/write_HS_R.cpp

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)