Skip to content

Commit 057e3a0

Browse files
authored
Merge branch 'develop' into ZhouXY-PKU-pexsi
2 parents 0fb80c5 + dad7304 commit 057e3a0

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

source/source_estate/elecstate_lcao.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ double ElecStateLCAO<std::complex<double>>::get_spin_constrain_energy()
3131
}
3232

3333
template <>
34-
void ElecStateLCAO<double>::dm2Rho(std::vector<double*> pexsi_DM,
34+
void ElecStateLCAO<double>::dm2rho(std::vector<double*> pexsi_DM,
3535
std::vector<double*> pexsi_EDM,
3636
DensityMatrix<double, double>* dm)
3737
{
38-
ModuleBase::timer::tick("ElecStateLCAO", "dm2Rho");
38+
ModuleBase::timer::tick("ElecStateLCAO", "dm2rho");
3939

4040
int nspin = PARAM.inp.nspin;
4141
if (PARAM.inp.nspin == 4)
@@ -72,12 +72,12 @@ void ElecStateLCAO<double>::dm2Rho(std::vector<double*> pexsi_DM,
7272

7373
this->charge->renormalize_rho();
7474

75-
ModuleBase::timer::tick("ElecStateLCAO", "dm2Rho");
75+
ModuleBase::timer::tick("ElecStateLCAO", "dm2rho");
7676
return;
7777
}
7878

7979
template <>
80-
void ElecStateLCAO<std::complex<double>>::dm2Rho(std::vector<std::complex<double>*> pexsi_DM,
80+
void ElecStateLCAO<std::complex<double>>::dm2rho(std::vector<std::complex<double>*> pexsi_DM,
8181
std::vector<std::complex<double>*> pexsi_EDM,
8282
DensityMatrix<std::complex<double>, double>* dm)
8383
{

source/source_estate/elecstate_lcao.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ class ElecStateLCAO : public ElecState
3737

3838
double get_spin_constrain_energy() override;
3939

40-
#ifdef __PEXSI
4140
// use for pexsi
4241

4342
/**
@@ -46,8 +45,9 @@ class ElecStateLCAO : public ElecState
4645
* @param pexsi_EDM: pointers of energy-weighed density matrix (EDMK) calculated by pexsi, needed by MD, will be
4746
* stored in DensityMatrix::pexsi_EDM
4847
*/
49-
void dm2rho(std::vector<TK*> pexsi_DM, std::vector<TK*> pexsi_EDM);
50-
#endif
48+
void dm2rho(std::vector<TK*> pexsi_DM,
49+
std::vector<TK*> pexsi_EDM,
50+
DensityMatrix<TK, double>* dm);
5151

5252
};
5353

source/source_hsolver/hsolver_lcao.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ void HSolverLCAO<TK, Device>::solve(hamilt::Hamilt<TK>* pHamilt,
112112
else if (this->method == "pexsi")
113113
{
114114
#ifdef __PEXSI // other purification methods should follow this routine
115-
DiagoPexsi<T> pe(ParaV);
115+
DiagoPexsi<TK> pe(ParaV);
116116
for (int ik = 0; ik < psi.get_nk(); ++ik)
117117
{
118118
/// update H(k) for each k point
@@ -121,10 +121,10 @@ void HSolverLCAO<TK, Device>::solve(hamilt::Hamilt<TK>* pHamilt,
121121
// solve eigenvector and eigenvalue for H(k)
122122
pe.diag(pHamilt, psi, nullptr);
123123
}
124-
auto _pes = dynamic_cast<elecstate::ElecStateLCAO<T>*>(pes);
124+
auto _pes = dynamic_cast<elecstate::ElecStateLCAO<TK>*>(pes);
125125
pes->f_en.eband = pe.totalFreeEnergy;
126126
// maybe eferm could be dealt with in the future
127-
_pes->dm2rho(dm, pe.EDM);
127+
_pes->dm2rho(pe.DM, pe.EDM, &dm);
128128
#endif
129129
}
130130

source/source_lcao/edm.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ elecstate::DensityMatrix<double, double> Force_LCAO<double>::cal_edm(const elecs
3131
#ifdef __PEXSI
3232
if (PARAM.inp.ks_solver == "pexsi")
3333
{
34-
auto pes = dynamic_cast<const elecstate::ElecStateLCAO<double>*>(pelec);
34+
// auto pes = dynamic_cast<const elecstate::ElecStateLCAO<double>*>(pelec);
3535
for (int ik = 0; ik < nspin; ik++)
3636
{
37-
edm.set_DMK_pointer(ik, pes->get_DM()->pexsi_EDM[ik]);
37+
edm.set_DMK_pointer(ik, dm.pexsi_EDM[ik]);
3838
}
3939

4040
}
@@ -47,7 +47,8 @@ elecstate::DensityMatrix<double, double> Force_LCAO<double>::cal_edm(const elecs
4747
}
4848

4949
template<>
50-
elecstate::DensityMatrix<std::complex<double>, double> Force_LCAO<std::complex<double>>::cal_edm(const elecstate::ElecState* pelec,
50+
elecstate::DensityMatrix<std::complex<double>, double> Force_LCAO<std::complex<double>>::cal_edm(
51+
const elecstate::ElecState* pelec,
5152
const psi::Psi<std::complex<double>>& psi,
5253
const elecstate::DensityMatrix<std::complex<double>, double>& dm,
5354
const K_Vectors& kv,

0 commit comments

Comments
 (0)