From 97d9ae9d0005dda85b7dde4e2bc6c1775d6bea44 Mon Sep 17 00:00:00 2001 From: dyzheng Date: Fri, 18 Oct 2024 18:01:31 +0800 Subject: [PATCH] Fix: get_pointer(int) in Psi --- source/module_hamilt_lcao/module_deltaspin/cal_mw.cpp | 6 ++++-- source/module_psi/psi.cpp | 3 +-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/source/module_hamilt_lcao/module_deltaspin/cal_mw.cpp b/source/module_hamilt_lcao/module_deltaspin/cal_mw.cpp index 3feb7663a7..a8ebe2d837 100644 --- a/source/module_hamilt_lcao/module_deltaspin/cal_mw.cpp +++ b/source/module_hamilt_lcao/module_deltaspin/cal_mw.cpp @@ -132,7 +132,8 @@ void SpinConstrain>::cal_Mi_pw() const int npol = psi_t->npol; for(int ik = 0; ik < nks; ik++) { - psi_pointer = psi_t->get_pointer(ik); + psi_t->fix_k(ik); + psi_pointer = psi_t->get_pointer(); onsite_p->tabulate_atomic(ik); // tabulate for each atom at each k-point // std::cout << __FILE__ << ":" << __LINE__ << " nbands = " << nbands << std::endl; onsite_p->overlap_proj_psi(nbands * npol, psi_pointer); @@ -177,7 +178,8 @@ void SpinConstrain>::cal_Mi_pw() const int npol = psi_t->npol; for(int ik = 0; ik < nks; ik++) { - psi_pointer = psi_t->get_pointer(ik); + psi_t->fix_k(ik); + psi_pointer = psi_t->get_pointer(); onsite_p->tabulate_atomic(ik); // tabulate for each atom at each k-point // std::cout << __FILE__ << ":" << __LINE__ << " nbands = " << nbands << std::endl; onsite_p->overlap_proj_psi(nbands * npol, psi_pointer); diff --git a/source/module_psi/psi.cpp b/source/module_psi/psi.cpp index 4dd13f28f4..c026b237ac 100644 --- a/source/module_psi/psi.cpp +++ b/source/module_psi/psi.cpp @@ -226,8 +226,7 @@ template T* Psi::get_pointer(const int& { assert(ikb >= 0); assert(this->k_first ? ikb < this->nbands : ikb < this->nk); - T* p = this->k_first ? &this->psi[ikb * this->nbands * this->nbasis] : &this->psi[ikb * this->nk * this->nbasis]; - return p; + return &this->psi_current[ikb * this->nbasis]; } template const int* Psi::get_ngk_pointer() const