|
9 | 9 | #include "../src_pw/global.h" |
10 | 10 | #include "../src_pw/symmetry_rho.h" |
11 | 11 | //---------------------------------------------- |
| 12 | +//-----force------------------- |
| 13 | +#include "../src_pw/sto_forces.h" |
| 14 | +//-----stress------------------ |
| 15 | +#include "../src_pw/sto_stress_pw.h" |
| 16 | +//--------------------------------------------------- |
12 | 17 |
|
13 | 18 | namespace ModuleESolver |
14 | 19 | { |
@@ -43,57 +48,7 @@ void ESolver_SDFT_PW::Init(Input &inp, UnitCell_pseudo &cell) |
43 | 48 | void ESolver_SDFT_PW::beforescf(const int istep) |
44 | 49 | { |
45 | 50 | ESolver_KS_PW::beforescf(istep); |
46 | | - // if(NITER==0) |
47 | | - // { |
48 | | - // int iter = 1; |
49 | | - // ETHR = 0.1*DRHO2/ std::max(1.0, CHR.nelec); |
50 | | - // double *h_diag = new double[wf.npwx * NPOL]; |
51 | | - // for (int ik = 0;ik < kv.nks;ik++) |
52 | | - // { |
53 | | - // if(NBANDS > 0 && MY_STOGROUP == 0) |
54 | | - // { |
55 | | - // this->c_bands_k(ik,h_diag,istep+1); |
56 | | - // } |
57 | | - // else |
58 | | - // { |
59 | | - // hm.hpw.init_k(ik); |
60 | | - // } |
61 | | - // if(NBANDS > 0) |
62 | | - // { |
63 | | - // MPI_Bcast(wf.evc[ik].c, wf.npwx*NBANDS*2, MPI_DOUBLE , 0, PARAPW_WORLD); |
64 | | - // MPI_Bcast(wf.ekb[ik], NBANDS, MPI_DOUBLE, 0, PARAPW_WORLD); |
65 | | - // } |
66 | | - // stoiter.stoche.ndmin = wf.npw; |
67 | | - // stoiter.orthog(ik); |
68 | | - // stoiter.checkemm(ik,iter); |
69 | | - // } |
70 | | - // for (int ik = 0;ik < kv.nks;ik++) |
71 | | - // { |
72 | | - // //init k |
73 | | - // if(kv.nks > 1) hm.hpw.init_k(ik); |
74 | | - // stoiter.stoche.ndmin = wf.npw; |
75 | | - |
76 | | - // stoiter.sumpolyval_k(ik); |
77 | | - // } |
78 | | - // delete [] h_diag; |
79 | | - // stoiter.itermu(iter); |
80 | | - // stoiter.stoche.calcoef(Stochastic_Iter::nroot_fd); |
81 | | - // for(int ik = 0; ik < kv.nks; ++ik) |
82 | | - // { |
83 | | - // //init k |
84 | | - // if(kv.nks > 1) hm.hpw.init_k(ik); |
85 | | - // stoiter.stoche.ndmin = wf.npw; |
86 | | - // complex<double> * out, *pchi; |
87 | | - // out = stowf.shchi[ik].c; |
88 | | - // if(NBANDS > 0) |
89 | | - // pchi = stowf.chiortho[ik].c; |
90 | | - // else |
91 | | - // pchi = stowf.chi0[ik].c; |
92 | | - |
93 | | - // stoiter.stoche.calfinalvec(stoiter.stohchi.hchi_reciprocal, pchi, out, stoiter.nchip[ik]); |
94 | | - // } |
95 | | - |
96 | | - // } |
| 51 | + if(istep > 0 && INPUT.nbands_sto != 0) Update_Sto_Orbitals(this->stowf, INPUT.seed_sto); |
97 | 52 | } |
98 | 53 |
|
99 | 54 | void ESolver_SDFT_PW::eachiterfinish(int iter) |
@@ -292,11 +247,13 @@ void ESolver_SDFT_PW::cal_Energy(energy &en) |
292 | 247 |
|
293 | 248 | void ESolver_SDFT_PW::cal_Force(ModuleBase::matrix &force) |
294 | 249 | { |
295 | | - |
| 250 | + Sto_Forces ff; |
| 251 | + ff.init(force, this->stowf); |
296 | 252 | } |
297 | 253 | void ESolver_SDFT_PW::cal_Stress(ModuleBase::matrix &stress) |
298 | 254 | { |
299 | | - |
| 255 | + Sto_Stress_PW ss; |
| 256 | + ss.cal_stress(stress, this->stowf); |
300 | 257 | } |
301 | 258 |
|
302 | 259 |
|
|
0 commit comments