Dear all,
I want to report and give simple but naive solution for this case.
Many people reported that the PARCHG with LSORB=T is not properly represent the density n(r)
which is the bloch wave function squared.
Since the SOC calculations performed in the spinor representation,
the wave function squared |psi(r)|^2 = |psi(+)|^2 + |psi(-)|^2 = n(r,+) + n(r,-).
The problem is that the total sum of electron density over the unit cell divided by the unit cell volume is not 1.
Sometimes it is at around 0.1 and sometimes it is at around 0.6 for my case.
So I look into the source code, pardens.F and found that the problem is originated from the INFO%ISPIN index,
which is the variable sent through the RC_FLIP subroutine.
If the ISPIN is equal to 4, it operates n(r,+) + n(r,-), and return its value to the charge density.
However, the present code brings ISPIN=1 not 4.
This buggy behavior is take place especially for the parchg loop.
In normal SCF loop total charge density is given by n(r,+) + n(r,-)), since the ISPIN index is reset to the 4 for the SOC case ( I've check..).
For the simple solution, I slightly modified the pardens.F only for the PARCHG calculations and recompile it.
Here my naive solution,
before:
CALL RC_FLIP(CHDEN,GRID_SOFT,INFO%ISPIN,.FALSE.)
after:
CALL RC_FLIP(CHDEN,GRID_SOFT,4,.FALSE.)
I hope it can be fixed for the next VASP release.
Any comments are welcome.
Sincerely,
Hyun-Jung Kim.
Bug report: PARCHG with LSORB=T
Moderators: Global Moderator, Moderator
-
- Global Moderator
- Posts: 1817
- Joined: Mon Nov 18, 2019 11:00 am
Re: Bug report: PARCHG with LSORB=T
Hi,
We're sorry that we didn’t answer your question. This does not live up to the quality of support that we aim to provide. The team has since expanded. If we can still help with your problem, please ask again in a new post, linking to this one, and we will answer as quickly as possible.
Best wishes,
VASP