Skip to content

Commit 25d533b

Browse files
committed
refactor: change pointer to std::vector for SR and TR matrix in lcao code.
range: LCAO_matrix and related files
1 parent 585aa89 commit 25d533b

File tree

5 files changed

+29
-46
lines changed

5 files changed

+29
-46
lines changed

source/src_io/energy_dos.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ void energy::perform_dos(void)
379379
GlobalC::ucell.infoNL.Beta);
380380

381381
GlobalC::LM.allocate_HS_R(GlobalC::LNNR.nnr);
382-
GlobalC::LM.zeros_HSR('S', GlobalC::LNNR.nnr);
382+
GlobalC::LM.zeros_HSR('S');
383383
GlobalC::UHM.genH.calculate_S_no();
384384
GlobalC::UHM.genH.build_ST_new('S', false, GlobalC::ucell);
385385
std::vector<ModuleBase::ComplexMatrix> Mulk;

source/src_io/mulliken_charge.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ void Mulliken_Charge::cal_mulliken(void)
221221

222222

223223
GlobalC::LM.allocate_HS_R(GlobalC::LNNR.nnr);
224-
GlobalC::LM.zeros_HSR('S', GlobalC::LNNR.nnr);
224+
GlobalC::LM.zeros_HSR('S');
225225
GlobalC::UHM.genH.calculate_S_no();
226226
GlobalC::UHM.genH.build_ST_new('S', false, GlobalC::ucell);
227227

source/src_lcao/LCAO_hamilt.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,6 @@ void LCAO_Hamilt::calculate_Hk(const int &ik)
218218
// set the local potential
219219
// in LCAO basis.
220220
//--------------------------
221-
GlobalC::LM.zeros_HSR('H', GlobalC::LNNR.nnr);
222221

223222
if(GlobalV::NSPIN!=4)
224223
{
@@ -285,15 +284,15 @@ void LCAO_Hamilt::calculate_STNR_k(void)
285284
// is GlobalC::LNNR.nnr.
286285
// and store in GlobalC::LM.SlocR.
287286
//--------------------------------------------
288-
GlobalC::LM.zeros_HSR('S', GlobalC::LNNR.nnr);
287+
GlobalC::LM.zeros_HSR('S');
289288
this->genH.calculate_S_no();
290289

291290
//------------------------------
292291
// set T(R) and Vnl(R) to zero.
293292
// and then calculate it
294293
// and store in GlobalC::LM.Hloc_fixedR.
295294
//------------------------------
296-
GlobalC::LM.zeros_HSR('T', GlobalC::LNNR.nnr);
295+
GlobalC::LM.zeros_HSR('T');
297296

298297

299298

source/src_lcao/LCAO_matrix.cpp

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -115,32 +115,20 @@ void LCAO_Matrix::allocate_HS_k(const long &nloc)
115115
void LCAO_Matrix::allocate_HS_R(const int &nnR)
116116
{
117117
if(GlobalV::NSPIN!=4)
118-
{
119-
delete[] HlocR;
120-
delete[] SlocR;
121-
delete[] Hloc_fixedR;
122-
123-
this->HlocR = new double[nnR];
124-
this->SlocR = new double[nnR];
125-
this->Hloc_fixedR = new double[nnR];
118+
{
119+
this->SlocR.resize(nnR);
120+
this->Hloc_fixedR.resize(nnR);
126121

127-
ModuleBase::GlobalFunc::ZEROS(HlocR, nnR);
128-
ModuleBase::GlobalFunc::ZEROS(SlocR, nnR);
129-
ModuleBase::GlobalFunc::ZEROS(Hloc_fixedR, nnR);
122+
ModuleBase::GlobalFunc::ZEROS(SlocR.data(), nnR);
123+
ModuleBase::GlobalFunc::ZEROS(Hloc_fixedR.data(), nnR);
130124
}
131125
else
132126
{
133-
delete[] HlocR_soc;
134-
delete[] SlocR_soc;
135-
delete[] Hloc_fixedR_soc;
136-
137-
this->HlocR_soc = new std::complex<double>[nnR];
138-
this->SlocR_soc = new std::complex<double>[nnR];
139-
this->Hloc_fixedR_soc = new std::complex<double>[nnR];
127+
this->SlocR_soc.resize(nnR);
128+
this->Hloc_fixedR_soc.resize(nnR);
140129

141-
ModuleBase::GlobalFunc::ZEROS(HlocR_soc, nnR);
142-
ModuleBase::GlobalFunc::ZEROS(SlocR_soc, nnR);
143-
ModuleBase::GlobalFunc::ZEROS(Hloc_fixedR_soc, nnR);
130+
ModuleBase::GlobalFunc::ZEROS(SlocR_soc.data(), nnR);
131+
ModuleBase::GlobalFunc::ZEROS(Hloc_fixedR_soc.data(), nnR);
144132

145133
}
146134

@@ -358,33 +346,31 @@ void LCAO_Matrix::set_stress
358346

359347
void LCAO_Matrix::zeros_HSgamma(const char &mtype)
360348
{
361-
if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(Sloc.data(),GlobalC::ParaO.nloc);
362-
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(Hloc_fixed.data(),GlobalC::ParaO.nloc);
363-
else if (mtype=='H') ModuleBase::GlobalFunc::ZEROS(Hloc.data(),GlobalC::ParaO.nloc);
349+
if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(this->Sloc.data(), this->Sloc.size());
350+
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(this->Hloc_fixed.data(), this->Hloc_fixed.size());
351+
else if (mtype=='H') ModuleBase::GlobalFunc::ZEROS(this->Hloc.data(), this->Hloc.size());
364352
return;
365353
}
366354

367355
void LCAO_Matrix::zeros_HSk(const char &mtype)
368356
{
369-
if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(Sloc2.data(),GlobalC::ParaO.nloc);
370-
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(Hloc_fixed2.data(),GlobalC::ParaO.nloc);
371-
else if (mtype=='H') ModuleBase::GlobalFunc::ZEROS(Hloc2.data(),GlobalC::ParaO.nloc);
357+
if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(this->Sloc2.data(), this->Sloc2.size());
358+
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(this->Hloc_fixed2.data(), this->Hloc_fixed2.size());
359+
else if (mtype=='H') ModuleBase::GlobalFunc::ZEROS(this->Hloc2.data(), this->Hloc2.size());
372360
return;
373361
}
374362

375-
void LCAO_Matrix::zeros_HSR(const char &mtype, const int &nnr)
363+
void LCAO_Matrix::zeros_HSR(const char &mtype)
376364
{
377365
if(GlobalV::NSPIN!=4)
378366
{
379-
if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(SlocR, nnr);
380-
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(Hloc_fixedR, nnr);
381-
else if (mtype=='H') ModuleBase::GlobalFunc::ZEROS(HlocR, nnr);
367+
if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(this->SlocR.data(), this->SlocR.size());
368+
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(this->Hloc_fixedR.data(), this->Hloc_fixedR.size());
382369
}
383370
else
384371
{
385-
if (mtype=='H') ModuleBase::GlobalFunc::ZEROS(this->HlocR_soc, nnr);
386-
else if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(this->SlocR_soc, nnr);
387-
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(this->Hloc_fixedR_soc, nnr);
372+
if (mtype=='S') ModuleBase::GlobalFunc::ZEROS(this->SlocR_soc.data(), this->SlocR_soc.size());
373+
else if (mtype=='T') ModuleBase::GlobalFunc::ZEROS(this->Hloc_fixedR_soc.data(), this->Hloc_fixedR_soc.size());
388374
}
389375
return;
390376
}

source/src_lcao/LCAO_matrix.h

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,12 @@ class LCAO_Matrix
6666
// HlocR -> Hloc2,
6767
// SlocR -> Sloc2,
6868
//------------------------------
69-
double* HlocR;
70-
double* SlocR;
71-
double* Hloc_fixedR;
69+
std::vector<double> SlocR;
70+
std::vector<double> Hloc_fixedR;
7271

7372
//with soc, zhengdy-soc
74-
complex<double>* HlocR_soc;
75-
complex<double>* SlocR_soc;
76-
complex<double>* Hloc_fixedR_soc;
73+
std::vector<std::complex<double>> SlocR_soc;
74+
std::vector<std::complex<double>> Hloc_fixedR_soc;
7775

7876
//LiuXh add 2019-07-15
7977
double ****Hloc_fixedR_tr;
@@ -179,7 +177,7 @@ class LCAO_Matrix
179177

180178
void zeros_HSgamma(const char &mtype);
181179
void zeros_HSk(const char &mtype);
182-
void zeros_HSR(const char &mtype, const int &nnr);
180+
void zeros_HSR(const char &mtype);
183181

184182
void print_HSgamma(const char &mtype, std::ostream &os=std::cout);
185183
void print_HSk(const char &mtype, const char &vtype = 'C', const double &accuracy = 1.0e-5, std::ostream &os=std::cout);

0 commit comments

Comments
 (0)