Skip to content

Commit b86feda

Browse files
committed
Fix: UTs for CG and Davidson
1 parent 52203c3 commit b86feda

File tree

3 files changed

+33
-25
lines changed

3 files changed

+33
-25
lines changed

source/module_hamilt/hamilt_pw.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,6 @@ void HamiltPW::updateHk(const int ik)
102102
return;
103103
}
104104

105-
void HamiltPW::hPsi(const std::complex<double> *psi_in, std::complex<double> *hpsi, const size_t size) const
106-
{
107-
ModuleBase::timer::tick("HamiltPW", "h_psi");
108-
ModuleBase::timer::tick("HamiltPW", "h_psi");
109-
return;
110-
}
111-
112105
void HamiltPW::sPsi
113106
(
114107
const std::complex<double> *psi,

source/module_hamilt/hamilt_pw.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ class HamiltPW : public Hamilt
1616
void updateHk(const int ik) override;
1717

1818
// core function: for solving eigenvalues of Hamiltonian with iterative method
19-
virtual void hPsi(const std::complex<double> *psi_in, std::complex<double> *hpsi, const size_t size) const override;
2019
virtual void sPsi(const std::complex<double> *psi_in, std::complex<double> *spsi, const size_t size) const override;
2120

2221
private:

source/module_hsolver/test/diago_mock.h

Lines changed: 33 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

273287
void hamilt::HamiltPW::updateHk(const int ik)
274288
{
@@ -277,8 +291,10 @@ void hamilt::HamiltPW::updateHk(const int ik)
277291

278292
hamilt::HamiltPW::HamiltPW()
279293
{
294+
this->ops = new OperatorMock;
280295
}
281296

282297
hamilt::HamiltPW::~HamiltPW()
283298
{
299+
delete this->ops;
284300
}

0 commit comments

Comments
 (0)