diff --git a/source/module_hsolver/diago_dav_subspace.cpp b/source/module_hsolver/diago_dav_subspace.cpp index 99e00651372..bcb97802710 100644 --- a/source/module_hsolver/diago_dav_subspace.cpp +++ b/source/module_hsolver/diago_dav_subspace.cpp @@ -124,7 +124,7 @@ int Diago_DavSubspace::diag_once(const HPsiFunc& hpsi_func, // compute h*psi_in_iter // NOTE: bands after the first n_band should yield zero - hpsi_func(this->hphi, this->psi_in_iter, this->nbase_x, this->dim, 0, this->nbase_x - 1); + hpsi_func(this->psi_in_iter, this->hphi, this->nbase_x, this->dim, 0, this->nbase_x - 1); // at this stage, notconv = n_band and nbase = 0 // note that nbase of cal_elem is an inout parameter: nbase := nbase + notconv @@ -421,7 +421,7 @@ void Diago_DavSubspace::cal_grad(const HPsiFunc& hpsi_func, } // update hpsi[:, nbase:nbase+notconv] - hpsi_func(&hphi[nbase * this->dim], psi_iter, this->nbase_x, this->dim, nbase, nbase + notconv - 1); + hpsi_func(psi_iter, &hphi[nbase * this->dim], this->nbase_x, this->dim, nbase, nbase + notconv - 1); ModuleBase::timer::tick("Diago_DavSubspace", "cal_grad"); return; @@ -886,7 +886,7 @@ void Diago_DavSubspace::diagH_subspace(T* psi_pointer, // [in] & [out { // do hPsi for all bands - hpsi_func(hphi, psi_pointer, n_band, dmax, 0, nstart - 1); + hpsi_func(psi_pointer, hphi, n_band, dmax, 0, nstart - 1); gemm_op()(ctx, 'C', diff --git a/source/module_hsolver/diago_david.cpp b/source/module_hsolver/diago_david.cpp index 0c76dacb6b2..a66b106c265 100644 --- a/source/module_hsolver/diago_david.cpp +++ b/source/module_hsolver/diago_david.cpp @@ -230,7 +230,7 @@ int DiagoDavid::diag_once(const HPsiFunc& hpsi_func, // end of SchmidtOrth and calculate H|psi> // hpsi_info dav_hpsi_in(&basis, psi::Range(true, 0, 0, nband - 1), this->hpsi); // phm_in->ops->hPsi(dav_hpsi_in); - hpsi_func(this->hpsi, basis, nbase_x, dim, 0, nband - 1); + hpsi_func(basis, hpsi, nbase_x, dim, 0, nband - 1); this->cal_elem(dim, nbase, nbase_x, this->notconv, this->hpsi, this->spsi, this->hcc, this->scc); @@ -601,7 +601,7 @@ void DiagoDavid::cal_grad(const HPsiFunc& hpsi_func, // psi::Range(true, 0, nbase, nbase + notconv - 1), // &hpsi[nbase * dim]); // &hp(nbase, 0) // phm_in->ops->hPsi(dav_hpsi_in); - hpsi_func(&hpsi[nbase * dim], basis, nbase_x, dim, nbase, nbase + notconv - 1); + hpsi_func(basis, &hpsi[nbase * dim], nbase_x, dim, nbase, nbase + notconv - 1); delmem_complex_op()(this->ctx, lagrange); delmem_complex_op()(this->ctx, vc_ev_vector); diff --git a/source/module_hsolver/diago_david.h b/source/module_hsolver/diago_david.h index c95d20490c1..16bc471e2cc 100644 --- a/source/module_hsolver/diago_david.h +++ b/source/module_hsolver/diago_david.h @@ -39,8 +39,8 @@ class DiagoDavid : public DiagH * For eigenvalue problem HX = λX or generalized eigenvalue problem HX = λSX, * this function computes the product of the Hamiltonian matrix H and a blockvector X. * - * @param[out] HX Pointer to output blockvector of type `T*`. - * @param[in] X Pointer to input blockvector of type `T*`. + * @param[out] X Pointer to input blockvector of type `T*`. + * @param[in] HX Pointer to output blockvector of type `T*`. * @param[in] neig Number of eigebpairs required. * @param[in] dim Dimension of matrix. * @param[in] id_start Start index of blockvector. diff --git a/source/module_hsolver/hsolver_pw.cpp b/source/module_hsolver/hsolver_pw.cpp index 09c8814e9f4..d20718b7f33 100644 --- a/source/module_hsolver/hsolver_pw.cpp +++ b/source/module_hsolver/hsolver_pw.cpp @@ -434,8 +434,8 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, else if (this->method == "dav_subspace") { auto ngk_pointer = psi.get_ngk_pointer(); - auto hpsi_func = [hm, ngk_pointer](T* hpsi_out, - T* psi_in, + auto hpsi_func = [hm, ngk_pointer](T* psi_in, + T* hpsi_out, const int nband_in, const int nbasis_in, const int band_index1, @@ -492,9 +492,9 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, auto ngk_pointer = psi.get_ngk_pointer(); /// wrap hpsi into lambda function, Matrix \times blockvector - /// hpsi(HX, X, nband, dim, band_index1, band_index2) - auto hpsi_func = [hm, ngk_pointer](T* hpsi_out, - T* psi_in, + /// hpsi(X, HX, nband, dim, band_index1, band_index2) + auto hpsi_func = [hm, ngk_pointer](T* psi_in, + T* hpsi_out, const int nband_in, const int nbasis_in, const int band_index1, diff --git a/source/module_hsolver/test/diago_david_float_test.cpp b/source/module_hsolver/test/diago_david_float_test.cpp index 89ea88be0f6..20d50d4a603 100644 --- a/source/module_hsolver/test/diago_david_float_test.cpp +++ b/source/module_hsolver/test/diago_david_float_test.cpp @@ -107,7 +107,7 @@ class DiagoDavPrepare #endif - auto hpsi_func = [phm](std::complex* hpsi_out,std::complex* psi_in, + auto hpsi_func = [phm](std::complex* psi_in,std::complex* hpsi_out, const int nband_in, const int nbasis_in, const int band_index1, const int band_index2) { diff --git a/source/module_hsolver/test/diago_david_real_test.cpp b/source/module_hsolver/test/diago_david_real_test.cpp index e2510101e61..a5be15ba70c 100644 --- a/source/module_hsolver/test/diago_david_real_test.cpp +++ b/source/module_hsolver/test/diago_david_real_test.cpp @@ -106,7 +106,7 @@ class DiagoDavPrepare #endif - auto hpsi_func = [phm](double* hpsi_out,double* psi_in, + auto hpsi_func = [phm](double* psi_in,double* hpsi_out, const int nband_in, const int nbasis_in, const int band_index1, const int band_index2) { diff --git a/source/module_hsolver/test/diago_david_test.cpp b/source/module_hsolver/test/diago_david_test.cpp index c9dfcf2cca0..79b099c6f44 100644 --- a/source/module_hsolver/test/diago_david_test.cpp +++ b/source/module_hsolver/test/diago_david_test.cpp @@ -109,7 +109,7 @@ class DiagoDavPrepare #endif - auto hpsi_func = [phm](std::complex* hpsi_out,std::complex* psi_in, + auto hpsi_func = [phm](std::complex* psi_in,std::complex* hpsi_out, const int nband_in, const int nbasis_in, const int band_index1, const int band_index2) { diff --git a/source/module_lr/hsolver_lrtd.cpp b/source/module_lr/hsolver_lrtd.cpp index f3ea7443271..638ae6e8079 100644 --- a/source/module_lr/hsolver_lrtd.cpp +++ b/source/module_lr/hsolver_lrtd.cpp @@ -82,8 +82,8 @@ namespace LR // do diag and add davidson iteration counts up to avg_iter auto hpsi_func = [pHamilt]( - T* hpsi_out, T* psi_in, + T* hpsi_out, const int nband_in, const int nbasis_in, const int band_index1, @@ -119,8 +119,8 @@ namespace LR comm_info); std::function hpsi_func = [pHamilt]( - T* hpsi_out, T* psi_in, + T* hpsi_out, const int nband_in, const int nbasis_in, const int band_index1,