@@ -247,28 +247,42 @@ void hamilt::HamiltPW::sPsi
247247}
248248
249249// Mock function h_psi
250- void hamilt::HamiltPW::hPsi (const std::complex <double > *psi_in, std::complex <double > *hpsi_local, const size_t size)const
250+ #include " module_hamilt/ks_pw/operator_pw.h"
251+ class OperatorMock : public hamilt ::OperatorPW
251252{
252- int m = size / DIAGOTEST::npw;
253- int nprocs=1 , mypnum=0 ;
254- #ifdef __MPI
255- MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
256- MPI_Comm_rank (MPI_COMM_WORLD, &mypnum);
257- #endif
258-
259- std::complex <double > *hpsi = new std::complex <double >[DIAGOTEST::npw];
260- for (int i=0 ;i<DIAGOTEST::npw;i++)
253+ virtual void act
254+ (
255+ const psi::Psi<std::complex <double >> *psi_in,
256+ const int n_npwx,
257+ const std::complex <double >* tmpsi_in,
258+ std::complex <double >* tmhpsi
259+ )const
261260 {
262- hpsi[i] = 0.0 ;
263- for (int j=0 ;j<(DIAGOTEST::npw_local[mypnum]);j++)
261+ int nprocs=1 , mypnum=0 ;
262+ #ifdef __MPI
263+ MPI_Comm_size (MPI_COMM_WORLD, &nprocs);
264+ MPI_Comm_rank (MPI_COMM_WORLD, &mypnum);
265+ #endif
266+
267+ std::complex <double > *hpsi = new std::complex <double >[DIAGOTEST::npw];
268+ for (int m = 0 ; m< n_npwx; m++)
264269 {
265- hpsi[i] += DIAGOTEST::hmatrix_local (i,j) * psi_in[j];
270+ for (int i=0 ;i<DIAGOTEST::npw;i++)
271+ {
272+ hpsi[i] = 0.0 ;
273+ for (int j=0 ;j<(DIAGOTEST::npw_local[mypnum]);j++)
274+ {
275+ hpsi[i] += DIAGOTEST::hmatrix_local (i,j) * tmpsi_in[j];
276+ }
277+ }
278+ Parallel_Reduce::reduce_complex_double_pool (hpsi, DIAGOTEST::npw);
279+ DIAGOTEST::divide_psi<std::complex <double >>(hpsi, tmhpsi);
280+ tmhpsi += DIAGOTEST::npw;
281+ tmpsi_in += DIAGOTEST::npw;
266282 }
283+ delete [] hpsi;
267284 }
268- Parallel_Reduce::reduce_complex_double_pool (hpsi, DIAGOTEST::npw);
269- DIAGOTEST::divide_psi<std::complex <double >>(hpsi,hpsi_local);
270- delete [] hpsi;
271- }
285+ };
272286
273287void hamilt::HamiltPW::updateHk (const int ik)
274288{
@@ -277,8 +291,10 @@ void hamilt::HamiltPW::updateHk(const int ik)
277291
278292hamilt::HamiltPW::HamiltPW ()
279293{
294+ this ->ops = new OperatorMock;
280295}
281296
282297hamilt::HamiltPW::~HamiltPW ()
283298{
299+ delete this ->ops ;
284300}
0 commit comments