Discussion: large discrepency on EOS of CrO3 system yielded when changing `pseudo_rcut` and `pseudo_mesh`
Describe the bug
I am sorting the data of precision test on pseudopotentials, the CrO3 test case looks strange.
For example if fix the pseudopotential of O as PseudoDojo v0.5 (SR) and Cr as PD04 (high), with default pseudo_mesh and pseudo_rcut setting, the delta value with respect to the all-electron data is turned out to be 1793.82 meV/atom. However, if set
pseudo_rcut 10
pseudo_mesh 1
, then the delta value will be 0.86 meV/atom.
On website of acwf-verification, the value around 1 meV/atom is always a reasonable one:
Both Abinit and SIESTA employ PseudoDojo family pseudopotentials in this test case.
Should ABACUS change the default value of pseudo_rcut and pseudo_mesh?
Expected behavior
No response
To Reproduce
No response
Environment
No response
Additional Context
No response
Task list for Issue attackers (only for developers)
- [ ] Verify the issue is not a duplicate.
- [ ] Describe the bug.
- [ ] Steps to reproduce.
- [ ] Expected behavior.
- [ ] Error message.
- [ ] Environment details.
- [ ] Additional context.
- [ ] Assign a priority level (low, medium, high, urgent).
- [ ] Assign the issue to a team member.
- [ ] Label the issue with relevant tags.
- [ ] Identify possible related issues.
- [ ] Create a unit test or automated test to reproduce the bug (if applicable).
- [ ] Fix the bug.
- [ ] Test the fix.
- [ ] Update documentation (if necessary).
- [ ] Close the issue and inform the reporter (if applicable).
I do think more test and discussion are needed for these parameters related to the usage of pseudopotential.
this behavior is caused by pseudo_rcut,
| INPUT setting | delta (meV/atom) |
|---|---|
| default | 1793.8 |
pseudo_rcut 10+pseudo_mesh 1+symmetry 0+smearing_method fd+smearing_sigma 0.0045 |
0.9999 |
pseudo_rcut 10+pseudo_mesh 1+smearing_method fd+smearing_sigma 0.0045 |
0.9999 |
pseudo_rcut 10+pseudo_mesh 1 |
0.8613 |
pseudo_rcut 10 |
0.8613 |
related test files:
@Cstandardlib Is there any progress at your side?
I manually perform the Fourier transform on the local potential in pseudopotential file,
$
V\left( \mathbf{G} \right)
\
=\int{\mathrm{d}\mathbf{r}V\left( |\mathbf{r}| \right) \mathrm{e}^{i\mathbf{G}\cdot \mathbf{r}}}
\
=2\pi \int_0^{\infty}{\mathrm{d}rV\left( r \right) r^2\int_0^{\pi}{e^{iGr\cos \theta}\sin \theta \mathrm{d}\theta}}
\
=-2\pi \int_0^{\infty}{\mathrm{d}rV\left( r \right) r^2\int_0^{\pi}{e^{iGr\cos \theta}\mathrm{d}\left( \cos \theta \right)}}
\
=-2\pi \int_0^{\infty}{\mathrm{d}rV\left( r \right) r^2\int_1^{-1}{e^{iGrt}\mathrm{d}t}}
\
=2\pi \int_0^{\infty}{\mathrm{d}rV\left( r \right) r^2\left( \frac{e^{iGr}-e^{-iGr}}{iGr} \right)}
\
=\frac{4\pi}{G}\int_0^{\infty}{\mathrm{d}rV\left( r \right) \sin \left( Gr \right) r}
$
and find there is an unexpected numerical calculation behavior of this pseudopotential. Comparatively, I also do transform on SG15.
The choice pseudo_rcut 10 seems can always avoid the numerical problem.
@kirk0830
The pseudo_rcut parameter does have a strong impact on the results on some certain pseudo libraries(PseudoDojo v0.4), and I found that it will yield rather different results when setting pseudo_rcut=15(default), 10 and 6 Bohr. The results agree well when this parameter is aligned with other software's settings (like ABINIT, Quantum Espresso).
However, modifying this parameter leads to significant discrepancies in the results, particularly for first-row transition metals from Cr to Zn.
And sorry that I'm now still not quite clear about the usage and operation mode of this parameter now. I wonder how it works? :dizzy_face:
figure about different pseudo_rcut value results, Co2O3 left: pseudo_rcut=10.0, right: pseudo_rcut=15 default
The How to verify the precision of density-functional-theory implementations via reproducible and universal workflows | Nature Reviews Physics acwf article has some discussion on this case in Section14 of their Supplementary information, for your reference :slightly_smiling_face:
@Cstandardlib As far as I remember, the pseudo_rcut works like a truncation radius beyond which the local potential will be discarded. However, for SG15 pseudopotential, the radial data of local potential is only within 6 au, so there will not be any difference if set pseudo_rcut to 10 or 15, but pseudopotential deposited on DOJO is different, that is why the pseudo_rcut impacts much on precision of calculation. As shown in my previous comment, there will be many large amplitudes of high-frequency components, which implies the non-convergence.
@kirk0830 According to @zhubonan and acwf-related discussions of aiida team, for PseudoDojo the long-range data beyond a certain radius are not relavent and may contain errors. This part of data should be trimmed or discarded. You can reference Add PseudoDojo results for QE and CASTEP by mbercx · Pull Request #36 · aiidateam/acwf-verification-scripts, zhubonan/dojo-upf-trim: dojo-upf-trim and How to verify the precision of density-functional-theory implementations via reproducible and universal workflows | Nature Reviews Physics supplementary S14 for details.
We are currently working with Automated Interactive Infrastructure and Database for Computational Science — AiiDA documentation and its ABACUS plugin MCresearch/aiida-abacus: AiiDA plugin for ABACUS. AiiDA makes it easy to do such tests automatically, and it is convenient and easy to compare across different softwares, pseudo libraries, etc. Perhelps it'll be of some help.
Some test results comparing EOS of ABACUS to Quantum Espresso trimming PseudoDojo-v0.4 at 6.0 Bohr.
- pseudo_rcut = default
- pseudo_rcut = 6.0
Tests show that pseudo_mesh has no influence on the result.
@Cstandardlib yes aiida provides many easy-to-use workflows. So the next question and what I really want to discuss is, is it needed to change the default value of keyword pseudo_rcut?