Skip to content

Commit d60b855

Browse files
committed
create ESolver_SDFT_PW
1 parent fe71dda commit d60b855

File tree

6 files changed

+136
-11
lines changed

6 files changed

+136
-11
lines changed

source/Makefile.Objects

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ OBJS_ESOLVER=esolver.o\
240240
esolver_ks.o\
241241
esolver_fp.o\
242242
esolver_ks_pw.o\
243+
esolver_sdft_pw.o\
243244
esolver_ks_lcao.o\
244245
esolver_lj.o\
245246
esolver_dp.o\

source/module_esolver/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ add_library(
55
esolver_ks.cpp
66
esolver_fp.cpp
77
esolver_ks_pw.cpp
8+
esolver_sdft_pw.cpp
89
esolver_ks_lcao.cpp
910
esolver_lj.cpp
1011
esolver_dp.cpp

source/module_esolver/esolver.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include "esolver.h"
22
#include "esolver_ks_pw.h"
3+
#include "esolver_sdft_pw.h"
34
#include "esolver_ks_lcao.h"
45
#include "esolver_of.h"
56
#include "esolver_lj.h"
@@ -24,10 +25,10 @@ void init_esolver(ESolver *&p_esolver, const string use_esol)
2425
{
2526
p_esolver = new ESolver_KS_LCAO();
2627
}
27-
// else if(use_esol == "sdft_pw")
28-
// {
29-
// p_esolver = new ESolver_KS_PW(true);
30-
// }
28+
else if(use_esol == "sdft_pw")
29+
{
30+
p_esolver = new ESolver_SDFT_PW();
31+
}
3132
// else if(use_esol == "ofdft")
3233
// {
3334
// p_esolver = new OFDFT();
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#include "./esolver_sdft_pw.h"
2+
3+
namespace ModuleESolver
4+
{
5+
6+
ESolver_SDFT_PW::ESolver_SDFT_PW()
7+
{
8+
classname = "ESolver_SDFT_PW";
9+
basisname = "PW";
10+
}
11+
12+
void ESolver_SDFT_PW::Init(Input &inp, UnitCell_pseudo &cell)
13+
{
14+
// ESolver_KS_PW::Init(inp, cell);
15+
// STO_WF.alloc();
16+
// stoiter.alloc( wf.npwx );
17+
}
18+
19+
void ESolver_SDFT_PW::beforescf()
20+
{
21+
ESolver_KS_PW::beforescf();
22+
// STO_WF.init();
23+
// stoiter.init( wf.npwx );
24+
// if(NITER==0)
25+
// {
26+
// int iter = 1;
27+
// ETHR = 0.1*DRHO2/ std::max(1.0, ucell.nelec);
28+
// double *h_diag = new double[wf.npwx * NPOL];
29+
// for (int ik = 0;ik < kv.nks;ik++)
30+
// {
31+
// if(NBANDS > 0 && MY_STOGROUP == 0)
32+
// {
33+
// this->c_bands_k(ik,h_diag,istep+1);
34+
// }
35+
// else
36+
// {
37+
// hm.hpw.init_k(ik);
38+
// }
39+
// if(NBANDS > 0)
40+
// {
41+
// MPI_Bcast(wf.evc[ik].c, wf.npwx*NBANDS*2, MPI_DOUBLE , 0, PARAPW_WORLD);
42+
// MPI_Bcast(wf.ekb[ik], NBANDS, MPI_DOUBLE, 0, PARAPW_WORLD);
43+
// }
44+
// stoiter.stoche.ndmin = wf.npw;
45+
// stoiter.orthog(ik);
46+
// stoiter.checkemm(ik,iter);
47+
// }
48+
// for (int ik = 0;ik < kv.nks;ik++)
49+
// {
50+
// //init k
51+
// if(kv.nks > 1) hm.hpw.init_k(ik);
52+
// stoiter.stoche.ndmin = wf.npw;
53+
54+
// stoiter.sumpolyval_k(ik);
55+
// }
56+
// delete [] h_diag;
57+
// stoiter.itermu(iter);
58+
// stoiter.stoche.calcoef(Stochastic_Iter::nroot_fd);
59+
// for(int ik = 0; ik < kv.nks; ++ik)
60+
// {
61+
// //init k
62+
// if(kv.nks > 1) hm.hpw.init_k(ik);
63+
// stoiter.stoche.ndmin = wf.npw;
64+
// complex<double> * out, *pchi;
65+
// out = STO_WF.shchi[ik].c;
66+
// if(NBANDS > 0)
67+
// pchi = STO_WF.chiortho[ik].c;
68+
// else
69+
// pchi = STO_WF.chi0[ik].c;
70+
71+
// stoiter.stoche.calfinalvec(stoiter.stohchi.hchi_reciprocal, pchi, out, stoiter.nchip[ik]);
72+
// }
73+
74+
// }
75+
}
76+
77+
void ESolver_SDFT_PW::eachiterfinish(int iter, bool conv_elec)
78+
{
79+
80+
}
81+
void ESolver_SDFT_PW::afterscf(bool conv_elec)
82+
{
83+
84+
}
85+
86+
void ESolver_SDFT_PW::hamilt2density(int istep, int iter, double ethr)
87+
{
88+
89+
}
90+
91+
void ESolver_SDFT_PW::cal_Energy(energy &en)
92+
{
93+
94+
}
95+
96+
void ESolver_SDFT_PW::cal_Force(ModuleBase::matrix &force)
97+
{
98+
99+
}
100+
void ESolver_SDFT_PW::cal_Stress(ModuleBase::matrix &stress)
101+
{
102+
103+
}
104+
105+
106+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include "./esolver_ks_pw.h"
2+
namespace ModuleESolver
3+
{
4+
5+
class ESolver_SDFT_PW: public ESolver_KS_PW
6+
{
7+
public:
8+
ESolver_SDFT_PW();
9+
void Init(Input &inp, UnitCell_pseudo &cell) override;
10+
void cal_Energy(energy& en) override;
11+
void cal_Force(ModuleBase::matrix &force) override;
12+
void cal_Stress(ModuleBase::matrix &stress) override;
13+
14+
protected:
15+
virtual void beforescf() override;
16+
// virtual void eachiterinit(int iter) override;
17+
virtual void hamilt2density(int istep, int iter, double ethr) override;
18+
virtual void eachiterfinish(int iter, bool conv) override;
19+
virtual void afterscf(bool) override;
20+
};
21+
22+
}
23+

source/src_pw/run_md_pw.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,6 @@ void Run_MD_PW::md_force_virial(
250250
#endif // __MPI
251251
#endif // __LCAO
252252
}
253-
// mohan added 2021-01-28, perform stochastic calculations
254-
else if (GlobalV::CALCULATION == "md-sto")
255-
{
256-
Stochastic_Elec elec_sto;
257-
elec_sto.scf_stochastic(istep);
258-
eiter = elec_sto.iter;
259-
}
260253

261254
ModuleBase::matrix fcs;
262255
// Forces ff;

0 commit comments

Comments
 (0)