@@ -156,7 +156,7 @@ int DiagoDavid<T, Device>::diag_once(const HPsiFunc& hpsi_func,
156156 const int ld_psi,
157157 T *psi_in,
158158 Real* eigenvalue_in,
159- const Real david_diag_thr ,
159+ const std::vector< double >& ethr_band ,
160160 const int david_maxiter)
161161{
162162 if (test_david == 1 )
@@ -273,7 +273,7 @@ int DiagoDavid<T, Device>::diag_once(const HPsiFunc& hpsi_func,
273273 this ->notconv = 0 ;
274274 for (int m = 0 ; m < nband; m++)
275275 {
276- convflag[m] = (std::abs (this ->eigenvalue [m] - eigenvalue_in[m]) < david_diag_thr );
276+ convflag[m] = (std::abs (this ->eigenvalue [m] - eigenvalue_in[m]) < ethr_band[m] );
277277 if (!convflag[m])
278278 {
279279 unconv[this ->notconv ] = m;
@@ -1177,7 +1177,7 @@ int DiagoDavid<T, Device>::diag(const HPsiFunc& hpsi_func,
11771177 const int ld_psi,
11781178 T *psi_in,
11791179 Real* eigenvalue_in,
1180- const Real david_diag_thr ,
1180+ const std::vector< double >& ethr_band ,
11811181 const int david_maxiter,
11821182 const int ntry_max,
11831183 const int notconv_max)
@@ -1189,7 +1189,7 @@ int DiagoDavid<T, Device>::diag(const HPsiFunc& hpsi_func,
11891189 int sum_dav_iter = 0 ;
11901190 do
11911191 {
1192- sum_dav_iter += this ->diag_once (hpsi_func, spsi_func, dim, nband, ld_psi, psi_in, eigenvalue_in, david_diag_thr , david_maxiter);
1192+ sum_dav_iter += this ->diag_once (hpsi_func, spsi_func, dim, nband, ld_psi, psi_in, eigenvalue_in, ethr_band , david_maxiter);
11931193 ++ntry;
11941194 } while (!check_block_conv (ntry, this ->notconv , ntry_max, notconv_max));
11951195
0 commit comments