From 9ee00c02267b6c0302bf1ef98d1959120d69b413 Mon Sep 17 00:00:00 2001 From: shan yu Date: Sat, 19 Sep 2026 03:49:06 +0800 Subject: [PATCH] Fix: read exchanged q-state occupation in non-KPAR PW EXX wg stores k-weighted occupation. Non-KPAR EXX mixed wg(this->ik,m) with wk[iq] while the exchanged orbital is get_pw(m, iq). Signed-off-by: shan yu --- source/source_pw/module_pwdft/op_pw_exx.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/source_pw/module_pwdft/op_pw_exx.cpp b/source/source_pw/module_pwdft/op_pw_exx.cpp index 94f19ce3dec..fedd75d6999 100644 --- a/source/source_pw/module_pwdft/op_pw_exx.cpp +++ b/source/source_pw/module_pwdft/op_pw_exx.cpp @@ -241,7 +241,7 @@ void OperatorEXXPW::act_op(const int nbands, get_exx_potential(kv, wfcpw, rhopw_dev, pot, tpiba, gamma_extrapolation, ucell->omega, this->ik, iq % nk, false, this->coulomb_param); for (int m_iband = 0; m_iband < psi.get_nbands(); m_iband++) { - double wg_mqb_real = (*wg)(this->ik, m_iband); + double wg_mqb_real = (*wg)(iq, m_iband); T wg_mqb = wg_mqb_real; if (wg_mqb_real < 1e-12) {