Skip to content

Commit dcb3efd

Browse files
committed
Refactor: remove elecstate_lcao_tddft
1 parent dfa213a commit dcb3efd

File tree

7 files changed

+39
-152
lines changed

7 files changed

+39
-152
lines changed

source/Makefile.Objects

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ OBJS_ELECSTAT=elecstate.o\
228228
pot_xc.o\
229229

230230
OBJS_ELECSTAT_LCAO=elecstate_lcao.o\
231-
elecstate_lcao_tddft.o\
232231
elecstate_lcao_cal_tau.o\
233232
density_matrix.o\
234233
density_matrix_io.o\

source/module_elecstate/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ list(APPEND objects
3636
if(ENABLE_LCAO)
3737
list(APPEND objects
3838
elecstate_lcao.cpp
39-
elecstate_lcao_tddft.cpp
4039
elecstate_lcao_cal_tau.cpp
4140
potentials/H_TDDFT_pw.cpp
4241
module_dm/density_matrix.cpp

source/module_elecstate/elecstate_lcao_tddft.cpp

Lines changed: 0 additions & 84 deletions
This file was deleted.

source/module_elecstate/elecstate_lcao_tddft.h

Lines changed: 0 additions & 30 deletions
This file was deleted.

source/module_esolver/esolver_ks_lcao.cpp

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@
5656

5757
//-----HSolver ElecState Hamilt--------
5858
#include "module_elecstate/elecstate_lcao.h"
59-
#include "module_elecstate/elecstate_lcao_tddft.h"
6059
#include "module_hamilt_lcao/hamilt_lcaodft/hamilt_lcao.h"
6160
#include "module_hsolver/hsolver_lcao.h"
6261
// function used by deepks
@@ -129,26 +128,14 @@ void ESolver_KS_LCAO<TK, TR>::before_all_runners(const Input_para& inp, UnitCell
129128
// autoset nbands in ElecState, it should before basis_init (for Psi 2d division)
130129
if (this->pelec == nullptr)
131130
{
132-
if (inp.esolver_type == "tddft")
133-
{
134-
this->pelec = new elecstate::ElecStateLCAO_TDDFT(&(this->chr),
135-
&(this->kv),
136-
this->kv.get_nks(),
137-
&(this->GK), // mohan add 2024-04-01
138-
this->pw_rho,
139-
this->pw_big);
140-
}
141-
else
142-
{
143-
// TK stands for double and complex<double>?
144-
this->pelec = new elecstate::ElecStateLCAO<TK>(&(this->chr), // use which parameter?
145-
&(this->kv),
146-
this->kv.get_nks(),
147-
&(this->GG), // mohan add 2024-04-01
148-
&(this->GK), // mohan add 2024-04-01
149-
this->pw_rho,
150-
this->pw_big);
151-
}
131+
// TK stands for double and complex<double>?
132+
this->pelec = new elecstate::ElecStateLCAO<TK>(&(this->chr), // use which parameter?
133+
&(this->kv),
134+
this->kv.get_nks(),
135+
&(this->GG), // mohan add 2024-04-01
136+
&(this->GK), // mohan add 2024-04-01
137+
this->pw_rho,
138+
this->pw_big);
152139
}
153140

154141
// 3) init LCAO basis

source/module_esolver/esolver_ks_lcao_tddft.cpp

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
#include "module_base/lapack_connector.h"
1414
#include "module_base/scalapack_connector.h"
1515
#include "module_elecstate/module_charge/symmetry_rho.h"
16+
#include "module_elecstate/module_dm/cal_dm_psi.h"
1617
#include "module_elecstate/module_dm/cal_edm_tddft.h"
18+
#include "module_elecstate/module_dm/density_matrix.h"
1719
#include "module_elecstate/occupy.h"
1820
#include "module_hamilt_lcao/hamilt_lcaodft/LCAO_domain.h" // need divide_HS_in_frag
1921
#include "module_hamilt_lcao/module_tddft/evolve_elec.h"
@@ -23,7 +25,6 @@
2325

2426
//-----HSolver ElecState Hamilt--------
2527
#include "module_elecstate/elecstate_lcao.h"
26-
#include "module_elecstate/elecstate_lcao_tddft.h"
2728
#include "module_hamilt_lcao/hamilt_lcaodft/hamilt_lcao.h"
2829
#include "module_hsolver/hsolver_lcao.h"
2930
#include "module_parameter/parameter.h"
@@ -70,7 +71,7 @@ void ESolver_KS_LCAO_TDDFT::before_all_runners(const Input_para& inp, UnitCell&
7071
ESolver_KS_LCAO<std::complex<double>, double>::before_all_runners(inp, ucell);
7172

7273
// this line should be optimized
73-
this->pelec_td = dynamic_cast<elecstate::ElecStateLCAO_TDDFT*>(this->pelec);
74+
// this->pelec = dynamic_cast<elecstate::ElecStateLCAO_TDDFT*>(this->pelec);
7475
}
7576

7677
void ESolver_KS_LCAO_TDDFT::hamilt2density_single(const int istep, const int iter, const double ethr)
@@ -88,13 +89,13 @@ void ESolver_KS_LCAO_TDDFT::hamilt2density_single(const int istep, const int ite
8889
this->psi_laststep,
8990
this->Hk_laststep,
9091
this->Sk_laststep,
91-
this->pelec_td->ekb,
92+
this->pelec->ekb,
9293
td_htype,
9394
PARAM.inp.propagator,
9495
kv.get_nks());
95-
this->pelec_td->psiToRho_td(this->psi[0]);
96+
this->weight_dm_rho();
9697
}
97-
this->pelec_td->psiToRho_td(this->psi[0]);
98+
this->weight_dm_rho();
9899
}
99100
else if (istep >= 2)
100101
{
@@ -107,11 +108,11 @@ void ESolver_KS_LCAO_TDDFT::hamilt2density_single(const int istep, const int ite
107108
this->psi_laststep,
108109
this->Hk_laststep,
109110
this->Sk_laststep,
110-
this->pelec_td->ekb,
111+
this->pelec->ekb,
111112
td_htype,
112113
PARAM.inp.propagator,
113114
kv.get_nks());
114-
this->pelec_td->psiToRho_td(this->psi[0]);
115+
this->weight_dm_rho();
115116
}
116117
else
117118
{
@@ -122,7 +123,7 @@ void ESolver_KS_LCAO_TDDFT::hamilt2density_single(const int istep, const int ite
122123
{
123124
bool skip_charge = PARAM.inp.calculation == "nscf" ? true : false;
124125
hsolver::HSolverLCAO<std::complex<double>> hsolver_lcao_obj(&this->pv, PARAM.inp.ks_solver);
125-
hsolver_lcao_obj.solve(this->p_hamilt, this->psi[0], this->pelec_td, skip_charge);
126+
hsolver_lcao_obj.solve(this->p_hamilt, this->psi[0], this->pelec, skip_charge);
126127
}
127128
}
128129

@@ -157,8 +158,7 @@ void ESolver_KS_LCAO_TDDFT::iter_finish(const int istep, int& iter)
157158
for (int ib = 0; ib < PARAM.inp.nbands; ib++)
158159
{
159160
std::setprecision(6);
160-
GlobalV::ofs_running << ik + 1 << " " << ib + 1 << " " << this->pelec_td->wg(ik, ib)
161-
<< std::endl;
161+
GlobalV::ofs_running << ik + 1 << " " << ib + 1 << " " << this->pelec->wg(ik, ib) << std::endl;
162162
}
163163
}
164164
GlobalV::ofs_running << std::endl;
@@ -333,7 +333,7 @@ void ESolver_KS_LCAO_TDDFT::update_pot(const int istep, const int iter)
333333
for (int ib = 0; ib < PARAM.inp.nbands; ib++)
334334
{
335335
GlobalV::ofs_running << ik + 1 << " " << ib + 1 << " "
336-
<< this->pelec_td->ekb(ik, ib) * ModuleBase::Ry_to_eV << std::endl;
336+
<< this->pelec->ekb(ik, ib) * ModuleBase::Ry_to_eV << std::endl;
337337
}
338338
}
339339
GlobalV::ofs_running << std::endl;
@@ -371,4 +371,21 @@ void ESolver_KS_LCAO_TDDFT::after_scf(const int istep)
371371
ESolver_KS_LCAO<std::complex<double>, double>::after_scf(istep);
372372
}
373373

374+
void ESolver_KS_LCAO_TDDFT::weight_dm_rho()
375+
{
376+
if (PARAM.inp.ocp == 1)
377+
{
378+
this->pelec->fixed_weights(PARAM.inp.ocp_kb, PARAM.inp.nbands, PARAM.inp.nelec);
379+
}
380+
this->pelec->calEBand();
381+
382+
ModuleBase::GlobalFunc::NOTE("Calculate the density matrix.");
383+
384+
auto _pes = dynamic_cast<elecstate::ElecStateLCAO<std::complex<double>>*>(this->pelec);
385+
elecstate::cal_dm_psi(_pes->DM->get_paraV_pointer(), _pes->wg, this->psi[0], *(_pes->DM));
386+
_pes->DM->cal_DMR();
387+
388+
this->pelec->psiToRho(this->psi[0]);
389+
}
390+
374391
} // namespace ModuleESolver

source/module_esolver/esolver_ks_lcao_tddft.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#define ESOLVER_KS_LCAO_TDDFT_H
33
#include "esolver_ks.h"
44
#include "esolver_ks_lcao.h"
5-
#include "module_elecstate/elecstate_lcao_tddft.h"
65
#include "module_hamilt_lcao/hamilt_lcaodft/record_adj.h"
76
#include "module_psi/psi.h"
87

@@ -36,10 +35,10 @@ class ESolver_KS_LCAO_TDDFT : public ESolver_KS_LCAO<std::complex<double>, doubl
3635
//! Overlap matrix of last time step
3736
std::complex<double>** Sk_laststep = nullptr;
3837

39-
//! Electronic states of rt-TDDFT
40-
elecstate::ElecStateLCAO_TDDFT* pelec_td = nullptr;
41-
4238
int td_htype = 1;
39+
40+
private:
41+
void weight_dm_rho();
4342
};
4443

4544
} // namespace ModuleESolver

0 commit comments

Comments
 (0)